Helm nginx-ingress チャートを使用してインストールするときに、ingress-controller サービスに対して ipv6 を有効にする方法は?

Helm nginx-ingress チャートを使用してインストールするときに、ingress-controller サービスに対して ipv6 を有効にする方法は?

Kubespray (CNI として Calico) を使用してベアメタル K8 クラスターをセットアップし、デュアル スタックを有効にしています。デプロイされたすべてのポッドが IPv4 と IPv6 の両方のアドレスを取得することがわかりますが、nginx helm chart を使用して nginx-ingress コントローラーをインストールしようとすると、サービスでは IPv4 のみが有効になって割り当てられています。サービスで kubectl get を実行すると、次の仕様が表示されます。

kubectl get 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 チャートの 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 をインストール ingress-nginx ingress-nginx/ingress-nginx -f values.yaml -n ingress-nginx

これはイングレスだけの問題ではなく、基本的に Helm チャートを使用してデプロイしようとしているすべてのアプリケーションには、サービスの仕様としてシングル スタックと IPv4 があるため、これらのチャートの値ファイルに必要な手動構成が不足していると考えられます。

また、基本的なサービスを作成し、ipFamilyPolicy: PreferDualStack および ipFamilies: IPv6、IPv4 を指定したサービス ファイルを使用して直接デプロイしようとしたところ、サービスは正常にデプロイされ、v6 と v4 の両方のアドレスが割り当てられました。したがって、クラスターの観点からは、構成は正常であり、デプロイされているチャートにいくつかのパラメーターが不足していることがわかります。

関連情報