定义入口时不使用分配给入口控制器的通配符子域



我有一个正在应答*.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

相关内容

  • 没有找到相关文章

最新更新