多集群接入与交付边界
Argo CD 可以管理本地集群和外部 Kubernetes 集群。多集群的难点不是执行 argocd cluster add,而是明确每个集群的凭据权限、网络路径、Project 允许目标和集群失联时的处置方式。

1. 注册前检查
注册命令使用当前 kubectl context 的权限创建或复用目标集群的访问凭据。先确认 context 名称和集群身份,避免把管理集群或生产集群误加为测试环境。
# 列出本机 kubeconfig 中可选 context
kubectl config get-contexts
# 验证目标 context 的 API、节点和当前身份
kubectl --context <target-context> auth can-i get pods -A
kubectl --context <target-context> get nodes
2. 注册集群
# 将指定 kubeconfig context 注册为 Argo CD 目标集群
argocd cluster add <target-context> \
--name prod-ap-southeast-1
注册后检查目标地址、连接状态和名称:
# 确认 Argo CD 可访问目标集群
argocd cluster list
# 查看注册信息;不要把输出中的凭据复制到工单
argocd cluster get prod-ap-southeast-1
默认注册可能授予广泛权限,适合快速验证但不适合作为所有生产应用的永久模型。应为不同租户或 Project 设计受限的目标 Namespace、ServiceAccount 与 Kubernetes RBAC。
3. Project 与集群标签
将集群名称和标签作为稳定的交付接口,例如 environment=prod、region=ap-southeast-1。ApplicationSet 只能选择已审查的标签;Project 的 destinations 则限制应用最终允许进入的 server + namespace。
# 查看 Argo CD 保存的目标集群 Secret;只检查标签和值,不导出 data
kubectl get secret -n argocd \
-l argocd.argoproj.io/secret-type=cluster
4. 网络与失联处置
Application Controller 必须能到达目标 Kubernetes API;目标集群内工作负载不需要反向访问 Argo CD。为跨网络集群配置私网路由、DNS、TLS CA 与防火墙规则,并定期从 Argo CD 侧验证连接。
集群短暂失联时,不要急于删除 cluster Secret 或开启 Prune。先确认 API 可用性、网络、证书、ServiceAccount Token 和控制器日志;恢复连接后比较 OutOfSync 资源,再按变更流程同步。