我在Azure K8S集群中部署了一个应用程序,使用NGINX作为网关,使用基于AKS和PUBLIC-IP以及AKS和NGINX的公共静态IP。
现在,我需要在 Azure 专用群集中部署应用程序,即在专用 VNet 中运行(请参阅创建专用 AKS(; 尝试将公共静态 IP 分配给 NGINX 不起作用,这是可以预期的,因为负载均衡器需要专用 IP,而不是公共 IP。
如何使用 NGINX 和公共静态 IP 提供对托管在专用群集中的应用的入站访问?
嗨,您有两种方法可以实现这一目标...根据你的需求(和 Azure 成本...(:
1-使用 Azure 应用程序网关。对于我自己,我使用Terraform。在这里,您可以看到有关内部IP地址的官方文档。
现在你可以使用这个作为你的新入口(并摆脱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-首先,您必须有一个公共 IP,并与之关联的负载均衡器。该 LB 的后端必须满足您的需求。
但这是诀窍...不要使用该公共 IP 创建 NGINX,而是使用内部 IP 和内部负载均衡器创建 NGINX,您可以在以下 URL 中看到如何执行此操作:
https://learn.microsoft.com/en-us/azure/aks/ingress-internal-ip
你必须做的重要事情是掌舵参数上的nginx ovveride:
controller:
service:
loadBalancerIP: 10.240.0.42
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
当然,必须创建内部 VNET,并且负载均衡器 IP 必须是正确的。
现在,NGINX 在专用 IP 后面侦听的最后一个技巧是验证来自公共 IP 的流量是否已重定向到该内部 VNET...当然,这取决于您如何在持有公共 IP 的 LB 后面设置基础设施。
如上面的注释中所述,可以通过 Azure 中的应用程序网关执行相同的操作。但是,如果仅使用 AKS,则可能只想将应用程序网关用作已使用专用群集创建的入口控制器。
请遵循此操作以达到相同的 https://microsoft.github.io/AzureTipsAndTricks/blog/tip256.html
根据您的描述,我知道您希望通过NGINX入口控制器获得入口流量,该控制器具有具有静态IP的负载平衡器服务。如果部署配置正确,则应使用公共 IP 将负载均衡器服务分配给 NGINX 入口控制器。由于我不知道您的命名空间,部署命名等,请尝试:
kubectl get services --all-namespaces | grep -i loadbalancer
您应该能够找到nginx负载均衡器服务具有公共IP。现在,由于 NGINX 是入口控制器,这意味着你有一个第 7 层负载均衡器作为入口,因此需要创建到 AKS 中运行的应用程序的入口路由。这记录在 Azure NGINX 入口和入口 K8s