如何在 AKS 上将传入的 Ingress 流量公开给 IPv4 或 IPv6?
How do I expose my incoming Ingress traffic to both IPv4 or IPv6 on AKS?
我正在使用 kubernetes/ingress-nginx helm chart,我想 "DualStack" 在同一个 Ingress 控制器上同时使用 IPv4 和 IPv6。
helm chart controller.service.loadBalancerIP 只接受一个字符串,我假设它只能是一个 IP 地址。 IPv4 或 IPv6。
如何在 AKS 上向 IPv4 或 IPv6 公开我的入口流量?
(我不想为此设置两个入口控制器)
要同时允许 IPv4 和 IPV6,最简单的方法是为您的 NGINX 入口控制器配置两个 kubernetes 服务。
正常部署您的 Charts 并使用基于 https://github.com/kubernetes/ingress-nginx/blob/master/charts/ingress-nginx/templates/controller-service.yaml
的原始 kubernetes 清单对其进行扩充
一个服务将默认为 IPFamily IPv4,而第二个服务应将 ipFamily 设置为 IPv6
https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
这将使您必须准备好前端 IP 来处理 IPv4 和 IPv6 流量。
然后您可以使用外部 DNS 服务使两个 IP (v4/v6) 具有相同的 DNS 主机名。 (一个A记录,一个AAAA记录)。
来自 Kubernetes v1.16 IPv4/IPv6 dual-stack is added as alpha feature, which means you need to enable it via feature gates。
To enable IPv4/IPv6 dual-stack, enable the IPv6DualStack
feature gate for the relevant components of your cluster, and set dual-stack cluster network assignments:
- kube-apiserver:
-
--feature-gates="IPv6DualStack=true"
- kube-controller-manager:
-
--feature-gates="IPv6DualStack=true"
- --cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
- --service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>
- --node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6
defaults to /24 for IPv4 and /64 for IPv6
- kubelet:
-
--feature-gates="IPv6DualStack=true"
- kube-proxy:
-
--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
- --feature-gates="IPv6DualStack=true"
Note: An example of an IPv4 CIDR: 10.244.0.0/16
(though you would supply your own address range) An example of an IPv6 CIDR: fdXY:IJKL:MNOP:15::/64
(this shows the format but is not a valid address - see RFC 4193)
您还需要一个支持双栈的 CNI,例如 Calico,您可以查看如何 Enable dual stack。
不幸的是,我不知道如何在 AKS 上执行此操作。
我正在使用 kubernetes/ingress-nginx helm chart,我想 "DualStack" 在同一个 Ingress 控制器上同时使用 IPv4 和 IPv6。
helm chart controller.service.loadBalancerIP 只接受一个字符串,我假设它只能是一个 IP 地址。 IPv4 或 IPv6。
如何在 AKS 上向 IPv4 或 IPv6 公开我的入口流量?
(我不想为此设置两个入口控制器)
要同时允许 IPv4 和 IPV6,最简单的方法是为您的 NGINX 入口控制器配置两个 kubernetes 服务。
正常部署您的 Charts 并使用基于 https://github.com/kubernetes/ingress-nginx/blob/master/charts/ingress-nginx/templates/controller-service.yaml
的原始 kubernetes 清单对其进行扩充一个服务将默认为 IPFamily IPv4,而第二个服务应将 ipFamily 设置为 IPv6
https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
这将使您必须准备好前端 IP 来处理 IPv4 和 IPv6 流量。
然后您可以使用外部 DNS 服务使两个 IP (v4/v6) 具有相同的 DNS 主机名。 (一个A记录,一个AAAA记录)。
来自 Kubernetes v1.16 IPv4/IPv6 dual-stack is added as alpha feature, which means you need to enable it via feature gates。
To enable IPv4/IPv6 dual-stack, enable the
IPv6DualStack
feature gate for the relevant components of your cluster, and set dual-stack cluster network assignments:
- kube-apiserver: -
--feature-gates="IPv6DualStack=true"
- kube-controller-manager: -
--feature-gates="IPv6DualStack=true"
---cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
---service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>
---node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6
defaults to /24 for IPv4 and /64 for IPv6- kubelet: -
--feature-gates="IPv6DualStack=true"
- kube-proxy: -
--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
---feature-gates="IPv6DualStack=true"
Note: An example of an IPv4 CIDR:
10.244.0.0/16
(though you would supply your own address range) An example of an IPv6 CIDR:fdXY:IJKL:MNOP:15::/64
(this shows the format but is not a valid address - see RFC 4193)
您还需要一个支持双栈的 CNI,例如 Calico,您可以查看如何 Enable dual stack。
不幸的是,我不知道如何在 AKS 上执行此操作。