K8S 中 nginx 海量域名对应同一程序的不同分支如何更优雅的解决

2022-09-21 12:51:21 +08:00
 dzdh

阿里云的 ack 集群

user -> slb(4 层 80/443) -> pod-svc-clusterip(nginx) -> 7 层 80 -> svc(master/release/special-a/special-b)(clusterip)

php 的程序,svc 就是不同分支代码根据 git ci/cd 自动打包的镜像,自动轮换。

用户访问 slb 作为入口,80/443 4 层代理到 一个 nginx 的服务(没用 ingress )。这个 nginx 服务负责解析不同域名对应所属哪个分支(一个客户可能有多个域名和系统自带的域名)然后 proxy_pass 到 http://svc 的 clusterip

nginx 的配置根据 map $host $version 匹配哪个$host 是哪个 svc 。

另外有个问题,由于后端代码和前端代码是分离的两个仓库,也是两套 cicd 。现在前后端发版会触发两次 svc 的镜像更新。

所以我想 一样根据 map $host $frontend_version { xx.com index_release.html }

在 nginx 里 location = / { 怎么返回$frontend_version 这个 html 静态文件呢 }

另一个问题是有更优雅的解决方案吗。ingress 是不行了。所有域名都弄到 ingress 的 yaml 配置估计十几兆了。

1263 次点击
所在节点    Kubernetes
2 条回复
ysicing
2022-09-21 20:51:03 +08:00
海量大概多少,我们曾经把 2.1w 域名怼到 ingress 上 😂
dzdh
2022-09-22 09:05:48 +08:00
@ysicing 8w-9w 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX