AKS启用AGIC配置Application Gateway SSL的相关问题
AKS + AGIC 启用SSL配置答疑
基础配置可行性
你给出的配置思路是对的:提前把SSL证书上传到Application Gateway的SSL证书管理列表,再通过Ingress注解引用证书名、开启SSL跳转即可生效,这套逻辑对当前启用的AGIC加载项、后续迁移到Helm部署的AGIC版本都适用。
注意你示例里用的extensions/v1beta1版本的Ingress资源已经在新版Kubernetes中废弃,正式部署建议替换为networking.k8s.io/v1版本的Ingress配置,避免兼容问题。
基础可用配置参考如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: aspnetapp annotations: kubernetes.io/ingress.class: azure/application-gateway appgw.ingress.kubernetes.io/appgw-ssl-certificate: <你提前上传到Application Gateway的证书名称> appgw.ingress.kubernetes.io/ssl-redirect: "true" spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: aspnetapp port: number: 80
端口配置说明
servicePort字段配置的是Application Gateway转发请求到后端集群服务时访问的端口,和对外是否启用TLS没有关联。如果你的集群内应用本身就是80端口跑明文HTTP服务,这里直接填80即可,不需要改成443。- 只要配置了
appgw.ingress.kubernetes.io/appgw-ssl-certificate注解,AGIC就会自动在Application Gateway上创建443端口的HTTPS监听器,绑定你指定的证书对外提供TLS服务,和后端服务端口配置无关。 ssl-redirect: "true"注解的作用仅仅是自动给80端口的HTTP监听器配置301强制跳转规则,把所有明文HTTP请求导到443 HTTPS端口,不会修改后端转发的端口逻辑,不存在“开了跳转端口配置就无效”的情况。
加密链路覆盖范围
- 外部访问端 -> Application Gateway 链路:只要配置了上述SSL证书注解,这段链路默认会被TLS加密,也就是最常用的TLS终结在Application Gateway的模式。
- Application Gateway -> 集群内后端服务链路:你当前配置里servicePort填80的话,这段链路是明文HTTP传输,不加密。如果需要对这段链路也加密,你需要先给集群内的服务配置证书,让服务本身在443端口提供HTTPS服务,再把servicePort改成443,同时添加
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate注解指定信任的后端根证书,让Application Gateway校验后端服务证书合法性,才能实现全链路端到端加密。
证书配置要求
对外服务侧默认单张证书即可满足需求:只要这张证书的域名覆盖范围匹配你Ingress配置的所有对外访问域名即可(比如通配符证书*.example.com可以匹配所有example.com下的二级域名)。如果你有多个跨主域的服务需要对外提供HTTPS,才需要上传多张对应域名的证书,在不同的Ingress资源中分别引用对应证书名称即可,不需要额外做其他全局配置。
内容的提问来源于stack exchange,提问作者JakeUT
相关产品推荐
相关产品推荐

