AWS EKS集群通过Ingress配置ArgoCD外部访问失败求助
问题排查与解决方案
1. 优先解决Ingress无外部IP的问题
- 最常见遗漏:Ingress未绑定ACM证书
AWS ALB开启HTTPS监听必须绑定对应域名的ACM证书,你当前的Ingress配置缺少证书相关annotation,直接导致ALB创建失败。需要在Ingress的metadata.annotations中补充如下配置:
注意证书必须和集群在同一AWS区域,且证书签发域名包含alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:<集群所在区域>:<你的AWS账号ID>:certificate/<ACM证书ID>argocd.<mydomain.com>。 - 检查AWS Load Balancer Controller运行状态
先确认控制器Pod正常运行:
如果Pod异常,查看日志排查错误,常见错误包括:控制器IAM角色缺少ALB创建权限、集群公有子网未打标签kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-load-balancer-controllerkubernetes.io/role/elb: 1、安全组配置限制。 - 检查Ingress事件
执行如下命令查看Ingress创建过程中的报错:kubectl describe ingress argocd -n argocd
2. 解决DNS记录未生成的问题
- 调整ExternalDNS注解位置
默认ExternalDNS只会读取Ingress资源的host字段生成DNS记录,你当前把external-dns.alpha.kubernetes.io/hostname注解加在了argogrpcService上,建议将该注解移动到Ingress的metadata.annotations中即可,无需额外修改ExternalDNS配置。 - 检查ExternalDNS运行状态
查看ExternalDNS Pod日志,排查是否存在Route53访问权限不足、无法匹配对应域名托管Zone的错误:kubectl logs -n <external-dns所在命名空间> <external-dns Pod名称>
额外优化提示
你当前的ArgoCD配置默认会在服务端自行终止TLS,所以ALB后端协议配置为HTTPS是正确的,无需额外修改ArgoCD启动参数。
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

