kubernetes AKS Nginx入口专用和公共负载平衡器配置

5n0oy7gb  于 2023-02-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(177)

我已经按照文档的AKS内部nginx入口,而仍然有一个公共的在同一时间。https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx#additional-internal-load-balancer
https://github.com/kubernetes/ingress-nginx/blob/e8e793bb6270448960d53d9c3fbaa927ce8fbe4c/charts/ingress-nginx/values.yaml#L472

controller:
  service:
    loadBalancerIP: x.x.x.x
    internal:
      enabled: true
      loadBalancerIP: y.y.y.y
      annotations:
        service.beta.kubernetes.io/azure-load-balancer-internal: "true"

请注意,我的使用情形多种多样:
1.有些服务需要既可以从公共lb ip访问,也可以从私有lb ip访问
1.其他服务需要仅由1个IP访问,并选择是其中的哪一个。
根据ingress-nginx存储库中的文档,这应该是可能的,而不需要多个入口控制器或对象
按照这些文档,我能够在同一个入口控制器(IC)

下的同一个名称空间中创建一个入口控制器和一个内部控制器
但我的问题是,我不知道如何在实际的入口对象中引用负载平衡器。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: some-service
  namespace: shared
  labels:
    app.kubernetes.io/component: udp
    app.kubernetes.io/instance: some-service
    app.kubernetes.io/name: some-service
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-dev
    clusterIssuerEnv: dev
    kubernetes.io/ingress.class: nginx
    meta.helm.sh/release-name: some-service
    meta.helm.sh/release-namespace: shared
    kubernetes.io/tls-acme: "true"
spec:
  tls:
    - hosts:
        - some-service.my-domain.com
      secretName: wildcard.x.my-domain-tls-some-service
  rules:
    - host: some-service.my-domain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: some-service
                port:
                  number: 12201

kubernetes.io/ingress.class: nginx注解引用了入口类,但它只获得了公共负载平衡器IP。如何引用私有负载平衡器IP,以及如何做到这一点才能同时获得这两个IP?

w8biq8rn

w8biq8rn1#

我认为有两个选择:
1.对于您当前的设置,创建一个新的ingress-class,例如nginx-internal,并将其指向您的第二个IC安装。缺点是,您需要为新ingressClass的每个应用程序bcs定义两个入口清单。
1.更好的选择IMO:使用一个入口控制器(IC)安装,为IC创建两个指向IC安装的服务(默认一个使用外部IP,新一个作为默认一个的副本,但使用内部IP)。现在,在需要的地方将some-service.my-domain.com解析为内部IP(DNS配置)。
顺便说一句:入口类注解不应该再使用了,现在有一个自己的字段。

相关问题