Azure AKS中Traefik Ingress如何与Azure Front Door私有链路集成?
实现Azure Front Door + AKS Traefik Ingress 私有链路方案
前提准备
- AKS集群已启用私有网络(或Traefik所在节点池支持私有链路访问)
- 已创建Azure Front Door Premium SKU实例(仅Premium支持私有链路后端)
- Traefik Ingress Controller已部署在AKS,当前通过公网LB对外暴露
步骤1:将Traefik改为内部LB暴露
为避免公网暴露,把Traefik的服务改为内部LB:
- 若用Helm部署,修改Traefik的values文件:
service: type: LoadBalancer annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" # 可选:指定内部LB所属子网 service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "aks-subnet" - 执行Helm更新生效:
helm upgrade traefik traefik/traefik -f your-values.yaml -n traefik - 获取内部LB的私有IP:
kubectl get svc traefik -n traefik -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
步骤2:创建Azure私有链路服务关联Traefik内部LB
将Traefik的内部LB端点通过私有链路暴露给AFD:
- 在Azure门户或CLI创建Private Link Service:
- 关联对象选择Traefik对应的内部LB
- 目标子网选择AKS节点子网或LB所在子网
- 创建完成后记录服务的别名(Alias)
步骤3:配置AFD私有后端池
- 进入AFD实例的「后端池」,新建后端池:
- 后端类型选「自定义主机」,主机名填Traefik内部LB的私有IP(或内部DNS域名)
- 端口填Traefik的HTTP/HTTPS端口(默认80/443)
- 勾选「启用私有链路」,选择刚创建的Private Link Service,等待连接状态变为「已批准」
- 健康探测路径填
/ping(Traefik默认健康检查端点)
步骤4:配置AFD路由规则
- 新建路由规则,将你的业务域名(前端域名)映射到上述私有后端池
- 协议匹配Traefik配置,若用HTTPS,需在AFD上传SSL证书(或使用Azure托管证书)
步骤5:调整Traefik代理信任配置(可选但建议)
让Traefik信任AFD的代理IP,正确转发真实客户端IP:
- 修改Traefik的Helm values,添加以下配置:
AFD私有IP段可通过Azure官方文档或AFD实例属性获取additionalArguments: - "--entrypoints.web.proxyProtocol.trustedIPs=AFD私有IP段" - "--entrypoints.websecure.proxyProtocol.trustedIPs=AFD私有IP段" - "--entrypoints.web.forwardedHeaders.trustedIPs=AFD私有IP段" - "--entrypoints.websecure.forwardedHeaders.trustedIPs=AFD私有IP段"
步骤6:调整域名解析
将原指向Traefik公网IP的DNS记录,改为指向AFD的前端域名(如xxxx.azurefd.net,或已配置的自定义域名)
验证方案
- 访问业务域名,确认请求正常路由到后端服务
- 查看Traefik日志,验证真实客户端IP被正确转发
- 通过Azure监控确认AFD与Traefik间的流量通过私有链路传输(无公网流量)
注意事项
- 仅AFD Premium SKU支持私有链路后端,Standard SKU不兼容
- Traefik内部LB需与私有链路服务处于同一VNet或对等VNet中
- 若Traefik启用HTTPS,需确保AFD后端协议与Traefik证书匹配,或由AFD终止SSL后以HTTP转发
内容的提问来源于stack exchange,提问作者user1817701
相关产品推荐
相关产品推荐

