Azure Application Gateway对接带Let's Encrypt的AKS集群最优方案咨询
最优解决方案:配置Application Gateway四层TCP透传443流量
这是符合你要求的最简洁方案,完全不需要改动现有AKS集群内的cert-manager、nginx ingress配置,也不需要额外处理证书存储、同步逻辑:
- 操作步骤:
- 在Application Gateway上创建TCP类型监听器,监听公网443端口
- 配置对应的后端池指向AKS集群的nginx ingress入口(如果AGW和AKS在同VPC或对等VPC内,直接用nginx ingress的内网SLB地址即可)
- 创建TCP类型的转发规则,将监听器的443流量直接转发到后端池的443端口
- 优势:
- 全程SSL加密,SSL卸载完全保留在AKS集群内的nginx ingress侧,和你现有证书签发、续期逻辑100%兼容,cert-manager自动续期的证书不需要做任何额外同步
- 不需要给Application Gateway上传任何证书,完全避开你提到的证书配置问题
- 配置量极小,不需要额外部署任何组件、编写任何脚本
备选方案:使用cert-manager原生Key Vault同步能力
如果你需要把SSL卸载放在Application Gateway侧(比如需要用到AGW的WAF能力、七层路由规则),可以选择你提到的第二个方案,不需要自己写脚本,用cert-manager官方支持的Azure Key Vault集成能力即可:
- 你不需要额外生成证书,直接配置cert-manager的ClusterIssuer/Issuer在签发Let's Encrypt证书的同时,直接将证书存入指定的Azure Key Vault
- 授予Application Gateway访问该Key Vault的权限,配置HTTPS监听器时直接关联Key Vault内的对应证书即可,证书到期后cert-manager自动更新Key Vault内的证书,Application Gateway会自动拉取最新版本,不需要人工干预
- 这个方案的配置复杂度略高于透传方案,但可以满足需要在AGW侧做七层处理的需求
注意:不要选择七层端到端TLS的配置方式,这种模式下Application Gateway仍然需要配置监听器侧的SSL证书,不符合你不需要给AGW单独提供证书的要求。
内容的提问来源于stack exchange,提问作者Michele
相关产品推荐
相关产品推荐

