帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
排查 Argo CD 功能的问题
本主题提供了适用于 Argo CD 的 EKS 功能的问题排查指南,包括功能运行状况检查、应用程序同步问题、存储库身份验证和多集群部署。
注意
EKS 功能完全托管,可在您的集群之外运行。您无权访问 Argo CD 服务器日志或 argocd 命名空间。问题排查侧重于功能运行状况、应用程序状态和配置。
功能已激活,但应用程序未同步
如果 Argo CD 功能显示 ACTIVE 状态但应用程序未同步,请检查功能运行状况和应用程序状态。
检查功能运行状况:
您可以在 EKS 控制台或使用 Amazon CLI 查看功能运行状况和状态问题。
控制台:
-
从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters
。 -
选择集群名称。
-
选择可观测性选项卡。
-
选择监控集群。
-
选择功能选项卡,查看所有功能的运行状况和状态。
Amazon CLI:
# View capability status and health aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-argocd # Look for issues in the health section
常见原因:
-
未配置存储库:Git 存储库未添加到 Argo CD
-
身份验证失败:SSH 密钥、令牌或 CodeCommit 凭证无效
-
未创建应用程序:集群中不存在 Application 资源
-
同步策略:需要手动同步(未启用自动同步)
-
IAM 权限:缺少 CodeCommit 或 Secrets Manager 的权限
检查应用程序状态:
# List applications kubectl get application -n argocd # View sync status kubectl get application my-app -n argocd -o jsonpath='{.status.sync.status}' # View application health kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
查看应用程序条件:
# Describe application to see detailed status kubectl describe application my-app -n argocd # View application health kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
应用程序始终处于“Progressing”状态
如果应用程序显示 Progressing 但从未到达 Healthy 状态,请检查该应用程序的资源状态和事件。
检查资源运行状况:
# View application resources kubectl get application my-app -n argocd -o jsonpath='{.status.resources}' # Check for unhealthy resources kubectl describe application my-app -n argocd | grep -A 10 "Health Status"
常见原因:
-
部署未就绪:容器组(pod)无法启动或就绪探测器故障
-
资源依赖关系:等待其他资源准备就绪的资源
-
图片拉取错误:无法访问容器映像
-
资源不足:集群缺乏用于容器组(pod)的 CPU 或内存
验证目标集群配置(适用于多集群设置):
# List registered clusters kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster # View cluster secret details kubectl get secretcluster-secret-name-n argocd -o yaml
存储库身份验证失败
如果 Argo CD 无法访问您的 Git 存储库,请确认身份验证配置是否正确。
对于 CodeCommit 存储库:
验证 IAM 功能角色是否具有 CodeCommit 权限:
# View IAM policies aws iam list-attached-role-policies --role-namemy-argocd-capability-roleaws iam list-role-policies --role-namemy-argocd-capability-role# Get specific policy details aws iam get-role-policy --role-namemy-argocd-capability-role--policy-namepolicy-name
该角色需要存储库的 codecommit:GitPull 权限。
对于私有 Git 存储库:
验证存储库凭证配置是否正确:
# Check repository secret exists kubectl get secret -n argocdrepo-secret-name-o yaml
确保密钥包含正确的身份验证凭证(SSH 密钥、令牌或用户名/密码)。
对于使用 Secrets Manager 的存储库:
# Verify IAM Capability Role has Secrets Manager permissions aws iam list-attached-role-policies --role-namemy-argocd-capability-role# Test secret retrieval aws secretsmanager get-secret-value --secret-idarn:aws:secretsmanager:region-code:111122223333:secret:my-secret
多集群部署问题
如果应用程序未部署到远程集群,请确认集群注册和访问配置是否正确。
检查集群注册:
# List registered clusters kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster # Verify cluster secret format kubectl get secret CLUSTER_SECRET_NAME -n argocd -o yaml
确保 server 字段包含 EKS 集群 ARN,而不是 Kubernetes API URL。
验证目标集群访问入口:
在目标集群上,检查 Argo CD 功能角色是否具有访问条目:
# List access entries (run on target cluster or use AWS CLI) aws eks list-access-entries --cluster-nametarget-cluster# Describe specific access entry aws eks describe-access-entry \ --cluster-nametarget-cluster\ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/my-argocd-capability-role
检查跨账户的 IAM 权限:
对于跨账户部署,请验证 Argo CD 功能角色在目标集群上是否有访问条目。托管功能使用 EKS 访问条目进行跨账户访问,而不是 IAM 角色代入。
有关多集群配置的更多信息,请参阅注册目标集群。
后续步骤
-
Argo CD 注意事项:Argo CD 注意事项和最佳实践
-
使用 Argo CD:创建和管理 Argo CD 应用程序
-
注册目标集群:配置多集群部署
-
EKS 功能问题排查:一般功能问题排查指导