Py学习  »  NGINX

使用通配符子域配置Nginx入口上游Vhost

Nick • 2 年前 • 244 次点击  

我有一个EKS集群,它具有 ingress-nginx 控制器已部署。

我使用nginx代理外部服务,但希望部署一个Ingress对象来处理跨多个主机的路由。然而,上游vhost似乎只能使用一个完全限定的主机名。

apiVersion: v1
kind: Service
metadata:
  name: httpbin-foobar
  namespace: default
  labels:
    app.kubernetes.io/name: httpbin-svc
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalName: httpbin.upstream.example.com
  type: ExternalName
---
apiVersion: v1
kind: Service
metadata:
  name: httpbin2-foobar
  namespace: default
  labels:
    app.kubernetes.io/name: httpbin2-svc
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalName: httpbin2.upstream.example.com
  type: ExternalName
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress-tls
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: '/'
    nginx.ingress.kubernetes.io/upstream-vhost: 'httpbin.upstream.example.com'
    nginx.ingress.kubernetes.io/backend-protocol: https
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
    nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - '*.downstream.example.com'
      secretName: downstream-cert
  rules:
    - host: 'httpbin.downstream.example.com'
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin-foobar
                port:
                  number: 443
    - host: 'httpbin2.downstream.example.com'
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin2-foobar
                port:
                  number: 443

上面的示例适用于这两条路线,但它们都被路由到 httpbin.upstream.example.com 由于静电 upstream-vhost 我希望有办法让它匹配 *.downstream.example.com ,然后我可以在Ingress中自由添加新的主机规则,并将它们路由到正确的位置。

如果不可能,那没关系,因为我只需要创建一个新的 Ingress 每个路线,但理想情况下,我可以把它们都挤成一个Ingress。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/158955
 
244 次点击