如何为私有AKS集群创建nginx ingress控制器
私有AKS集群部署Nginx Ingress控制器可行方案
前置准备
- 已部署完成的私有AKS集群,确保API服务器可通过内网访问,集群节点有内网出站权限拉取镜像
- 本地已安装
kubectl、helm工具,且已完成AKS集群身份认证 - 私有AKS集群所在虚拟网络已预留可用的内网IP段用于Ingress入口
部署步骤
1. 添加Nginx Ingress官方Helm仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update
2. 编写私有场景适配的配置文件
新建values.yaml配置文件,核心适配点为指定LoadBalancer使用内网IP,关闭公网相关配置:
controller: service: annotations: # 关键配置:指定Azure负载均衡器为内网类型 service.beta.kubernetes.io/azure-load-balancer-internal: "true" # 可选配置:指定固定内网静态IP,需为AKS所在虚拟网络下未占用的IP service.beta.kubernetes.io/azure-load-balancer-ipv4: "10.0.0.10" externalTrafficPolicy: Cluster replicaCount: 2 defaultBackend: enabled: true
3. 执行安装部署
helm install ingress-nginx ingress-nginx/ingress-nginx -f values.yaml -n ingress-nginx --create-namespace
4. 验证部署结果
执行以下命令,当ingress-nginx-controller服务的EXTERNAL-IP列显示对应内网IP时,说明部署成功:
kubectl get svc -n ingress-nginx
后续使用说明
- 后续创建Ingress资源时直接按照标准语法配置路由规则即可,所有Ingress绑定的域名都解析到上述内网IP,即可在内网环境访问集群内服务
- 如果需要跨虚拟网络访问,只需在对应虚拟网络和AKS所在虚拟网络之间配置对等连接即可
- 如果需要对外暴露部分服务,可在前端搭配内网入口反向代理,将请求转发到Ingress的内网IP即可
常见注意事项
- 若指定固定内网静态IP,需确保该IP和AKS集群节点在同一个虚拟网络的可用子网下,否则负载均衡器会创建失败
- 如果私有AKS配置了自定义出站代理,需要提前放行Nginx Ingress镜像的拉取地址,或者将镜像提前同步到私有镜像仓库,部署时在
values.yaml中指定自定义镜像地址即可
内容的提问来源于stack exchange,提问作者Raam C
相关产品推荐
相关产品推荐

