AKS服务与Azure API Management搭配使用的后端访问配置问题
核心访问逻辑
你已经将APIM部署到与AKS同属一个虚拟网络的子网中,网络连通性基础已经就绪,只要没有配置网络安全组(NSG)禁止APIM子网到AKS集群网段、服务网段的对应端口访问,APIM可以直接通过私网路径访问AKS内部资源,不需要走公网链路。
两种架构场景的配置方案
场景1:保留NGINX Ingress Controller,仅改为私网访问
首先调整AKS侧的Ingress配置:
- 修改NGINX Ingress Controller对应的LoadBalancer类型Service,在annotations中添加
service.beta.kubernetes.io/azure-load-balancer-internal: "true",触发Azure为其分配私网负载均衡地址,不再暴露公网IP - 确认原有Ingress规则的域名、路径转发配置保持不变
然后调整APIM后端配置: - 直接将原有公网Ingress的后端地址替换为Ingress Controller的私网SLB地址即可,如果VNet内配置了私有DNS可以解析Ingress的业务域名,也可以直接填写域名作为后端地址
- 如果后端Ingress使用自签名HTTPS证书,可在APIM后端配置中关闭证书校验,或将证书根CA上传到APIM的受信任CA列表中避免校验报错
- 原有APIM的路径映射、限流、认证等策略不需要修改
场景2:移除Ingress Controller,直接对接Kubernetes Service
首先确认AKS侧Service的网络可达性:
- 若使用
ClusterIP类型Service:Azure CNI网络模式的AKS默认支持VNet内资源直接访问ClusterIP,Kubenet网络模式的AKS需要额外配置路由规则,将APIM子网到ClusterIP网段的流量指向AKS节点池的路由表 - 若使用
Internal LoadBalancer类型Service:直接使用Service分配的私网SLB地址即可,不需要额外路由配置
然后调整APIM后端配置: - 后端目标地址按协议填写为
http://<ServiceIP>:<服务端口>或者https://<ServiceIP>:<服务端口>,如果有多个服务需要对接,可以按API前缀分别配置对应的后端,或者通过APIM的入站策略做路径转发映射到不同的Service地址 - 同自签名证书场景的适配规则和场景1一致
连通性验证
配置完成后可以直接使用APIM控制台的测试功能发起请求,若返回异常优先排查:
- AKS侧NSG是否放开了APIM子网到对应端口的入站规则
- 路由配置是否正确,APIM子网的流量可以正常到达AKS的Service、Pod网段
内容的提问来源于stack exchange,提问作者Mar Chal
相关产品推荐
相关产品推荐

