You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件来管理,更清晰易维护:

  1. 创建一个名为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"
  1. 执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:42:53