内容提要
在设置Azure Kubernetes Service (AKS)时,遇到cert-manager与Azure Application Gateway集成的问题,使用HTTP-01挑战时出现404和502错误。通过创建专用服务和Ingress,调整健康探测设置,成功解决路由问题并获取Let's Encrypt SSL证书。
关键要点
- 在设置AKS集群时,使用cert-manager自动化Let's Encrypt SSL证书的申请。
- 使用HTTP-01挑战时遇到404和502错误,导致Let's Encrypt验证服务器无法访问挑战URL。
- Azure Application Gateway未正确路由HTTP-01挑战请求到cert-manager的solver pod。
- 创建专用服务以稳定路由流量到cert-manager的solver pod。
- 创建专用Ingress以将挑战路径指向该服务,并调整健康探测设置。
- 健康探测状态码设置为200-499,使Application Gateway将404响应视为健康。
- 通过kubectl命令检查证书状态和Ingress资源,确保配置正确。
- 在应用修复后,挑战URL返回200 OK,表明请求正确路由到solver pod。
- 了解健康探测的自定义设置对于处理非标准状态码的服务至关重要。
- cert-manager的solver pods是短暂的,创建基于标签的服务确保一致的路由。
- Application Gateway Ingress Controller的同步间隔可能不及时,耐心等待或调整同步间隔有助于解决问题。
延伸问答
如何在AKS中使用cert-manager自动申请SSL证书?
在AKS中使用cert-manager自动申请SSL证书,需要配置cert-manager并使用HTTP-01挑战来验证域名。确保Azure Application Gateway正确路由挑战请求到cert-manager的solver pod。
遇到404和502错误时该如何解决?
解决404和502错误的方法包括创建专用服务和Ingress,确保挑战路径正确指向cert-manager的solver pod,并调整健康探测设置,使Application Gateway将404视为健康状态。
如何调整Azure Application Gateway的健康探测设置?
可以通过Ingress的注释设置health-probe-status-codes为200-499,使Application Gateway将404响应视为健康,从而避免因健康探测失败导致的路由问题。
如何检查证书的状态和Ingress资源?
使用kubectl命令检查证书状态:`kubectl get certificate -n hitc5 -w`,并使用`kubectl get ingress -n hitc5 -o yaml`查看Ingress资源的配置。
为什么Application Gateway会标记后端为不健康?
Application Gateway会标记后端为不健康,通常是因为健康探测失败,例如cert-manager的solver pod返回404状态码,导致健康探测未通过。
cert-manager的solver pods有什么特点?
cert-manager的solver pods是短暂的,创建基于标签的服务可以确保流量一致地路由到这些临时的solver pods。