定义入口而未将通配符子域分配给入口控制器

时间:2019-11-18 16:36:28

标签: kubernetes kubernetes-ingress

我有一个入口控制器的答案正在回答*.mycompany.com。每当我在集群中定义Ingress资源时,是否可以不指定整个some-service.mycompany.com而是仅指定some-service部分。

因此,如果以后再更改域名(例如,在我的测试环境中),则无需指定some-service.test.mycompany.com,但一切都会神奇地进行而无需更改。

2 个答案:

答案 0 :(得分:0)

对于大多数Ingress控制器,如果您未指定主机名,则该Ingress将是所有其他不匹配项的默认值。唯一的缺点是您只能使用其中之一(每个控制器,具体取决于您的布局)。

答案 1 :(得分:0)

您想要实现的配置仅在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。将入口Yaml放在helm chart上,并在图表中使用values.my_domain准备Ingress对象。然后,您只需要运行 helm install ingress-chart-name --set values.my_domain=example.com