帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
注册目标集群
注册集群以允许 Argo CD 向其部署应用程序。您可以注册 Argo CD 运行所在的同一集群(本地集群),也可以注册位于不同账户或区域的远程集群。
先决条件
-
已创建具有 Argo CD 功能的 EKS 集群
-
已配置
kubectl以与集群通信 -
对于远程集群:需要适当的 IAM 权限和访问条目
注册本地集群
要将应用程序部署到 Argo CD 运行所在的同一集群,请将其注册为部署目标。
注意
Argo CD 功能不会自动注册本地集群。必须进行明确注册才能将应用程序部署到同一集群。
使用 Argo CD CLI:
argocd cluster add <cluster-context-name> \ --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/my-cluster \ --name local-cluster
使用 Kubernetes Secret:
apiVersion: v1 kind: Secret metadata: name: local-cluster namespace: argocd labels: argocd.argoproj.io/secret-type: cluster stringData: name: local-cluster server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster project: default
应用配置:
kubectl apply -f local-cluster.yaml
注意
在 server 字段中使用 EKS 集群 ARN,而不是 Kubernetes API 服务器 URL。托管功能需要使用 ARN 来识别集群。不支持默认的 kubernetes.default.svc。
注册远程集群
要部署到远程集群,您必须:
-
在远程集群上为 Argo CD IAM 功能角色创建访问条目
-
将访问策略与适当权限关联
-
在 Argo CD 中注册集群
步骤 1:在远程集群上创建访问条目
将 region-code 替换为远程集群所在的 Amazon 区域,将 remote-cluster 替换为远程集群名称,然后将 ARN 替换为 Argo CD 功能角色 ARN。
aws eks create-access-entry \ --regionregion-code\ --cluster-nameremote-cluster\ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole\ --type STANDARD
步骤 2:关联访问策略
aws eks associate-access-policy \ --regionregion-code\ --cluster-nameremote-cluster\ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole\ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster
注意
对于生产环境,可以考虑使用限制性更强的访问策略。有关最低权限配置,请参阅EKS 功能的安全注意事项。
步骤 3:在 Argo CD 中注册集群
使用 Argo CD CLI:
argocd cluster add <cluster-context-name> \ --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster \ --name remote-cluster
使用 Kubernetes Secret:
apiVersion: v1 kind: Secret metadata: name: remote-cluster namespace: argocd labels: argocd.argoproj.io/secret-type: cluster stringData: name: remote-cluster server: arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster project: default
应用配置:
kubectl apply -f remote-cluster.yaml
跨账户和跨区域集群
要部署到不同 Amazon 账户或地区中的集群,请执行以下操作:
-
在远程集群上将 Argo CD 功能角色添加为访问条目
-
关联适当的访问策略(通常为
AmazonEKSClusterAdminPolicy) -
使用其完整 ARN(包括区域)注册集群
集群 ARN 格式包括区域,因此跨账户注册与跨区域注册并无差异,两者所使用的流程相同。
有关详细的跨账户配置(包括信任策略和 IAM 权限),请参阅 Argo CD 注意事项。
验证集群注册
查看已注册集群:
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster
或在 Argo CD 用户界面的“设置 → 集群”下查看集群状态。
私有集群
Argo CD 功能支持对完全私有的 EKS 集群进行透明访问,无需进行 VPC 对等连接或专门的网络配置。
Amazon 会自动管理 Argo CD 功能与私有远程集群之间的连接。
只需使用其 ARN 注册私有集群,无需进行额外的联网设置。
使用项目限制集群访问
使用项目来控制应用程序可以部署到哪些集群:
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: production namespace: argocd spec: destinations: - server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster namespace: '*' - server: arn:aws:eks:eu-west-1:111122223333:cluster/prod-eu-cluster namespace: '*' sourceRepos: - 'https://github.com/example/production-apps'
有关更多信息,请参阅 使用 Argo CD 项目。
其他资源
-
使用 Argo CD 项目:组织应用程序并强制实施安全边界
-
创建应用程序:部署第一个应用程序
-
使用 ApplicationSets:使用 ApplicationSets 部署到多个集群
-
Argo CD 注意事项:多集群模式和跨账户设置
-
Declarative Cluster Setup
:上游集群配置参考