Azure ACS:如何创建基于内部负载均衡器的Ingress控制器
创建Azure ACS集群内的内部Nginx Ingress控制器
没问题,我来帮你搞定这个需求!要让Nginx Ingress控制器仅对同一VNet内的应用开放、不暴露到公网,核心是通过Helm配置让Azure创建**内部负载均衡器(Internal Load Balancer)**来暴露Ingress服务。下面是具体操作步骤:
方式一:直接通过Helm命令行参数配置
你可以在helm install命令中通过--set参数直接指定关键配置,一步完成安装:
helm install my-internal-ingress stable/nginx-ingress \ --set controller.service.type=LoadBalancer \ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-internal"="true" \ # 可选:如果需要指定特定子网,取消注释并替换子网名称 # --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-internal-subnet"="your-vnet-subnet-name"
参数说明:
my-internal-ingress:你可以替换成自己喜欢的Ingress控制器实例名称controller.service.type=LoadBalancer:Azure的内部负载均衡器仍属于LoadBalancer类型,只是通过注解限制为内部访问service.beta.kubernetes.io/azure-load-balancer-internal: "true":这个Azure专属注解是核心,它会告诉Azure不要为负载均衡器分配公网IP,仅在VNet内部可见- 可选的子网注解:如果你的集群部署在多子网的VNet中,可以指定Ingress LB所在的子网
方式二:使用自定义values.yaml文件配置
如果你的配置更复杂,推荐用values文件来管理,更清晰易维护:
- 创建一个名为
internal-ingress-values.yaml的文件,内容如下:
controller: service: type: LoadBalancer annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" # 可选:指定子网 # service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "your-subnet-name"
- 执行Helm安装命令:
helm install my-internal-ingress stable/nginx-ingress -f internal-ingress-values.yaml
验证配置是否成功
安装完成后,执行以下命令查看Ingress服务的状态:
kubectl get svc my-internal-ingress-nginx-ingress-controller
如果配置正确,输出中的EXTERNAL-IP列会显示一个VNet内部的私有IP(比如10.0.1.5),而不是公网IP。这就说明Ingress控制器已经通过内部负载均衡器暴露,仅同一VNet内的应用可以访问。
后续你就可以像往常一样配置Ingress规则,将集群内的服务路由到这个内部Ingress控制器上啦!
内容的提问来源于stack exchange,提问作者Sachin
相关产品推荐
相关产品推荐

