我正在尝试了解是否可以在kubernetes入口配置中指定通配符域。我正在运行AWS Eks集群。我有一个网页,url的结构为client.example.com,但对于邀请和登录应用程序,我需要将流量重定向到相关的邀请/登录服务。正常情况下,所有其他流量都应该流向主服务。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: -ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- host: "*.example.com"
http:
paths:
- backend:
service:
name: main-service
port:
number: 80
path: /*
pathType: ImplementationSpecific
- host: login.example.com
http:
paths:
- backend:
service:
name: login-service
port:
number: 80
path: /*
pathType: ImplementationSpecific
- host: invite.example.com
http:
paths:
- backend:
service:
name: invite-service
port:
number: 80
path: /*
pathType: ImplementationSpecific
有可能在Kubernetes入口中创建这样的配置吗?
感谢
从1.18:开始,正式支持通配符主机名
"许多Ingress提供程序都支持通配符主机名匹配,如.foo.com匹配app1.foo.com,但到目前为止,规范假设主机的FQDN完全匹配。主机现在可以是精确匹配(例如"foo.bar.com"(或通配符(例如">.foo.com"(。精确匹配要求http主机标头与主机设置匹配。通配符匹配要求http主机标头等于通配符规则的后缀">
https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#support-对于主机名通配符
因此,经过一些调查,通配符在>1.18.规则按指定顺序进行评估。
所以,如果你有这样的东西:
*.example.com
invite.example.com
loginm.example.com
那么你的订单应该是
invite.example.com
login.example.com
最后一个是
*.example.com