使用 Helm nginx-ingress 图表安装时,如何为 ingress-controller 服务启用 ipv6?

使用 Helm nginx-ingress 图表安装时,如何为 ingress-controller 服务启用 ipv6?

我有一个使用 Kubespray(Calico 作为 CNI)的裸机 K8 集群设置,并启用了双栈。我可以看到部署的所有 pod 都获得了 IPv4 和 IPv6 地址,但是当我尝试使用 nginx helm chart 安装 nginx-ingress 控制器时,服务仅启用并分配了 IPv4。当我在服务上执行 kubectl get 时,我可以看到以下规范:

kubectl 获取 svc ingress-nginx-controller -n ingress-nginx -o yaml

spec:
  clusterIP: 10.233.34.249
  clusterIPs:
  - 10.233.34.249
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack

我已尝试手动将以下规范添加到 ingress-controller helm chart 的 values.yaml 文件中:

  service:
    enabled: true

    annotations: {}
    labels: {}
    # clusterIP: ""

    ## List of IP addresses at which the controller services are available
    ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips
    ##

    ipFamilyPolicy: PreferDualStack
    ipFamilies:
     - IPv6
     - IPv4

并使用以下方法应用它但无济于事:helm install ingress-nginx ingress-nginx/ingress-nginx -f values.yaml -n ingress-nginx

这不仅是入口的问题,基本上我尝试使用 helm charts 部署的任何应用程序都具有单栈和 IPv4 作为服务规范,这让我认为我缺少这些图表的值文件中所需的一些手动配置。

此外,当我尝试创建基本服务并使用服务文件直接部署它时,ipFamilyPolicy: PreferDualStack 和 ipFamilies: IPv6, IPv4 成功部署了该服务,并分配了 v6 和 v4 地址。因此,从集群的角度来看,我知道我的配置很好,只是部署的图表缺少一些参数。

相关内容