<p>I am working with the <a href="https://github.com/kubernetes/ingress-nginx/" rel="nofollow noreferrer">kubernetes/ingress-nginx</a> helm chart and I would like to "DualStack" both IPv4 and IPv6 on the same Ingress controller.</p>

<p>The helm chart <a href="https://github.com/kubernetes/ingress-nginx/blob/a08296256f28d534728624013e775e96b65f6e16/charts/ingress-nginx/values.yaml#L263" rel="nofollow noreferrer">controller.service.loadBalancerIP</a> only accepts a string and I assume that can only be a single IP address. IPv4 or IPv6.</p>

<p><strong>How do I expose my Ingress traffic to both IPv4 or IPv6 on AKS ?</strong></p>

<p><em>(I don't want to set up two ingress controllers for this)</em></p>

<p>From Kubernetes v1.16 <a href="https://kubernetes.io/docs/concepts/services-networking/dual-stack/#enable-ipv4-ipv6-dual-stack" rel="nofollow noreferrer">IPv4/IPv6 dual-stack</a> is added as <em>alpha</em> feature, which means you need to enable it via <a href="https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/" rel="nofollow noreferrer">feature gates</a>.</p>
<blockquote>
<p>To enable IPv4/IPv6 dual-stack, enable the  <code>IPv6DualStack</code>  <a href="https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/" rel="nofollow noreferrer">feature gate</a>  for the relevant components of your cluster, and set dual-stack cluster network assignments:</p>
<ul>
<li>kube-apiserver:
-   <code>--feature-gates=&quot;IPv6DualStack=true&quot;</code></li>
<li>kube-controller-manager:
-   <code>--feature-gates=&quot;IPv6DualStack=true&quot;</code>
-   <code>--cluster-cidr=&lt;IPv4 CIDR&gt;,&lt;IPv6 CIDR&gt;</code>
-   <code>--service-cluster-ip-range=&lt;IPv4 CIDR&gt;,&lt;IPv6 CIDR&gt;</code>
-   <code>--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6</code>  defaults to /24 for IPv4 and /64 for IPv6</li>
<li>kubelet:
-   <code>--feature-gates=&quot;IPv6DualStack=true&quot;</code></li>
<li>kube-proxy:
-   <code>--cluster-cidr=&lt;IPv4 CIDR&gt;,&lt;IPv6 CIDR&gt;</code>
-   <code>--feature-gates=&quot;IPv6DualStack=true&quot;</code></li>
</ul>
<p><strong>Note:</strong>  An example of an IPv4 CIDR:  <code>10.244.0.0/16</code>  (though you would supply your own address range) An example of an IPv6 CIDR:  <code>fdXY:IJKL:MNOP:15::/64</code>  (this shows the format but is not a valid address - see  <a href="https://www.rfc-editor.org/rfc/rfc4193" rel="nofollow noreferrer">RFC 4193</a>)</p>
</blockquote>
<p>You also need a CNI which will support the dual-stack for example Calico and you can check how to <a href="https://docs.projectcalico.org/networking/dual-stack" rel="nofollow noreferrer">Enable dual stack</a>.</p>
<p>Unfortunately I do not know how to do that on AKS.</p>
