这是我的用例:我们有一个客户,他们的每个服务都必须在专用子域上提供。命名约定应该是service-name.customerdomain.com,service-name已部署的服务在哪里,并且customerdomain.com是客户域。创建新服务时,它应该是自动可用的,即一旦将service-name服务部署到集群中,就必须可以使用它service-name.customerdomain.com。
我知道,这可以通过以下步骤手动实现:
将Ingress控制器添加到群集
创建通配符DNS *.customerdomain.com并将其指向Ingress控制器
映射每个正在运行的服务的子域。对于集群中的每个现有服务,创建一个单独的部分到Ingress资源文件ingress.yaml,例如
Spec:
rules:
- host: helloworld.awesome-customer.com
http:
paths:
- path: /*
backend:
serviceName: helloworld
servicePort: 8080
- host: nextfineapp.awesome-customer.com
http:
paths:
- path: /*
backend:
serviceName: nextfineapp
servicePort: 8080
- [...]
-host为每个新部署的服务添加Ingress资源文件新部分
删除-host每个已删除服务的Ingress资源文件部分
基本上 - 我想自动执行步骤4和5.我知道Ingress无法自行处理,但是,谷歌搜索,似乎ingress.yaml每次部署新服务/删除现有服务时更新文件都可以通过Helm实现及其值文件。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您通常会通过将Ingress资源的模板作为基本应用程序图表的一部分来完成此操作。您可以拥有多个Ingress对象,并且它们都将在运行时获得多路复用,以便为您的控制器构建路由表。