具有入口和基于路径的路由的 Azure Kubernetes 负载均衡器

Azure Kubernetes loadbalancer with Ingress and path based routing

我正在尝试使用 AKS 管理的负载均衡器创建基于基本路径的路由入口控制器。问题是弄清楚如何从负载均衡器路由到入口控制器。

这是我的入口控制器 yml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-cpr
  annotations:
    kubernetes.io/ingress.class: nginx  
spec:  
  rules:
  - http:
      paths:
      - path: /green/
        pathType: Prefix
        backend:
          service: 
            name: nginx-green-clusterip-service
            port: 
              number: 80
      - path: /red/
        pathType: Prefix
        backend:
          service: 
            name: nginx-red-clusterip-service
            port: 
              number: 80

如你所见,ingress controller负责根据传入路径发送到合适的app。

但是如何将其连接到托管负载均衡器?

apiVersion: v1
kind: Service
metadata:
  name: loadbal-service
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: ingress-cpr

我知道这行是不正确的“-app:ingress-cpr”。但是我必须怎么做才能让 LoadBalancer 转发到入口控制器?

提前致谢, 杰克.

在服务清单中,应用的选择器应指向入口的后端服务名称。在这种特殊情况下,服务清单中的 ingress-cpr 应该是两个后端之一(nginx-green-clusterip-servicenginx-red-clusterip-service)。任何通过端口 80 上托管 LB 的外部 IP 的流量都应该路由到入口中定义的后端之一。

还有关于创建 basic ingress controller in AKS.

的 Microsoft 示例