我在 Azure K8S 集群中部署了一个应用程序,使用 NGINX 作为网关,具有公共(public)静态 IP,基于 AKS & PUBLIC-IP以及 AKS & NGINX .
现在我需要在 Azure 私有(private)集群中部署应用程序,即在私有(private) vnet 中运行(请参阅 CREATE PRIVATE AKS );尝试向 NGINX 分配公共(public)静态 IP 不起作用,这是可以预料的,因为负载均衡器需要私有(private) IP,而不是公共(public) IP。
如何使用 NGINX 和公共(public)静态 IP 提供对托管在私有(private)集群中的应用程序的入站访问?
最佳答案
您好,您有两种方法可以实现这一目标...取决于您的需求(以及 Azure 成本...):
1-使用Azure Application Gateway 。对于我自己,我使用 Terraform 。在这里您可以查看有关 internal IP address 的官方文档.
现在您可以使用这个作为您的新 Ingress(并摆脱 NGINX),如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- backend:
serviceName: frontend
servicePort: 80
或者您可以在内部使用 NGINX 作为入口,如选项 2 中所述。
2- 首先,您必须拥有一个公共(public) IP 以及与其关联的负载均衡器。该负载均衡器的后端必须满足您的需求。
但这里有一个技巧...不要使用该公共(public) IP 创建 NGINX,而是使用内部 IP 和内部负载均衡器,您可以在以下网址中了解如何执行此操作:
https://learn.microsoft.com/en-us/azure/aks/ingress-internal-ip
您必须做的重要事情是 helm 参数上的 nginx ovveride:
controller:
service:
loadBalancerIP: 10.240.0.42
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
当然,必须创建内部 VNET,并且负载均衡器 IP 必须正确。
既然您已经让 NGINX 在私有(private) IP 后面进行监听,那么最后一个技巧就是验证您从公共(public) IP 的流量是否已重定向到该内部 VNET...当然,这取决于您的方式持有公共(public) IP 的负载均衡器背后的基础设施设置。
关于azure - 如何提供从公共(public)互联网到 Azure 私有(private) kubernetes 集群中托管的应用程序的入站访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62074177/