AWS EKS - kubernetes ingress 中的通配符

AWS EKS - Wildcard in kubernetes ingress

我想了解是否可以在 kubernetes ingress 配置中指定通配符域。 我是 运行 AWS Eks 集群。 我有一个网页,其中 url 的结构为 client.example.com 但对于邀请和登录应用程序,我需要将流量重定向到相关的 invite/login 服务。所有其他流量通常应该转到主服务。

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 ingress 中创建这样的配置?

谢谢

从 1.18 开始正式支持通配符主机名:

“许多 Ingress 提供商都支持通配符主机名匹配,例如 .foo.com 匹配 app1.foo.com,但直到现在规范都假设主机的 FQDN 完全匹配。主机现在可以是精确匹配(例如“foo.bar.com”)或通配符(例如“.foo.com”)。精确匹配要求 http 主机 header 匹配主机设置。通配符匹配要求 http 主机 header 等于通配符规则的后缀。“

https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#support-for-hostname-wildcards

所以经过一些调查,版本> = 1.18支持通配符。规则按指定顺序评估。

所以如果你有类似的东西:

*.example.com
invite.example.com
loginm.example.com

那么您的订单应该是

invite.example.com
login.example.com

最后一个是

*.example.com