AWS EKS中ALB Ingress提示未找到证书但cert-manager已签发证书
AWS EKS ALB Ingress 找不到已签发证书的排查思路
核对Ingress与Certificate的Secret关联
- 确认Ingress的
tls配置中secretName和Certificate资源spec.secretName完全一致(注意大小写、字符拼写) - 执行
kubectl get secrets -n default,检查目标Secret是否存在,且类型为kubernetes.io/tls
- 确认Ingress的
验证ALB Ingress Controller的配置与权限
- 若cert-manager将证书同步到AWS ACM:检查Ingress是否配置了
alb.ingress.kubernetes.io/certificate-arn注解,且ARN与ACM中证书的ARN一致 - 若使用集群内Secret:确认ALB Ingress Controller的IAM角色有权限读取default命名空间下的Secret资源
- 执行
kubectl describe deployment alb-ingress-controller -n kube-system,查看控制器的权限配置是否包含Secret读取权限
- 若cert-manager将证书同步到AWS ACM:检查Ingress是否配置了
检查Certificate与Secret的有效性
- 执行
kubectl describe certificate <你的证书名称> -n default,确认Status为Ready,且SecretName字段正确 - 执行
kubectl get secret <你的Secret名称> -n default -o yaml,检查data字段下是否存在tls.crt和tls.key,且内容非空
- 执行
确认域名匹配性
- 检查Certificate的
spec.dnsNames是否包含example.it - 检查Ingress的
tls.hosts是否与证书的dnsNames完全匹配(包括子域名、通配符格式)
- 检查Certificate的
排查ALB Ingress Controller日志
执行kubectl logs -n kube-system <ALB控制器Pod名称>,搜索example.it或certificate关键词,定位具体错误原因(如权限不足、Secret读取失败、证书格式问题等)核对命名空间一致性
确保Certificate资源部署在default命名空间(Ingress所在命名空间),因为Ingress无法跨命名空间引用Secret;若Certificate在其他命名空间,需将其迁移至default,或通过Secret同步工具跨命名空间共享证书Secret
内容的提问来源于stack exchange,提问作者Abel Hristodor
相关产品推荐
相关产品推荐

