我有一个正在应答*.mycompany.com
的入口控制器。当我在集群中定义Ingress
资源时,是否可以不指定整个some-service.mycompany.com
,而只指定some-service
部分。
因此,如果我稍后更改域名(例如在我的测试环境中(,我不需要指定some-service.test.mycompany.com
,但事情会神奇地在不更改任何内容的情况下工作。
对于大多数Ingress控制器,如果您不指定主机名,则该Ingress将是任何与其他内容不匹配的内容的默认主机名。唯一的缺点是你只能拥有其中一个(每个控制器,取决于你的布局(。
您想要实现的配置只能在nginx
中实现,但由于"host:">的限制,无法在nginx-ingress
中应用。
"ingress-redirect" is invalid: spec.rules[0].host: Invalid value: "~^subdomain\..+\..+$;": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.',
。
它必须以字母数字字符开头和结尾(例如example.com
,用于验证的正则表达式为[a-z0-9]([-a-z0-9]*[a-z0-9])?(.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')
但是nginx语法允许使用类似于< server_name mail.*; >
的语法。
如果您将所有配置都设置为http_snippet
,它会起作用,但这是大量的手动工作(您希望避免(。
我认为更好的解决方案是使用HELM。将ingress yaml放入helm chart
,并使用图表中的values.my_domain
来准备ingress对象。那你只需要跑步helm install ingress-chart-name --set values.my_domain=example.com