協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
註冊目標叢集
註冊叢集,讓 Argo CD 能夠將應用程式部署到叢集。您可以註冊 Argo CD 正在執行的相同叢集 (本機叢集) 或不同帳戶或區域中的遠端叢集。註冊叢集後,它會保持在未知連線狀態,直到您在該叢集內建立應用程式為止。若要在叢集註冊後建立 Argo CD 應用程式,請參閱 建立應用程式。
先決條件
-
建立 Argo CD 功能的 EKS 叢集
-
kubectl設定為與您的叢集通訊 -
對於遠端叢集:適當的 IAM 許可和存取項目
註冊本機叢集
若要將應用程式部署到執行 Argo CD 的相同叢集,請將其註冊為部署目標。
重要
Argo CD 功能不會自動註冊本機叢集。您必須明確註冊,才能將應用程式部署到相同的叢集。您可以使用叢集名稱in-cluster,與大多數線上 Argo CD 範例相容。
注意
EKS 存取項目會自動為具有 Argo CD 功能角色的本機叢集建立,但預設不會授予 Kubernetes RBAC 許可。這遵循最低權限原則 - 您必須根據您的使用案例明確設定 Argo CD 所需的許可。例如,如果您只使用此叢集做為 Argo CD 中樞來管理遠端叢集,則不需要任何本機部署許可。如需組態選項,請參閱下方的存取項目 RBAC 要求一節。
使用 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 秘密:
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。受管功能需要 ARNs才能識別叢集。kubernetes.default.svc 不支援預設值。
註冊遠端叢集
若要部署至遠端叢集:
步驟 1:在遠端叢集上建立存取項目
將 region-code 取代為遠端叢集所在的 AWS 區域,將 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:將存取政策與 Kubernetes RBAC 許可建立關聯
Access Entry 需要 Kubernetes RBAC 許可,Argo CD 才能部署應用程式。若要快速入門,您可以使用 AmazonEKSClusterAdminPolicy:
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
重要
AmazonEKSClusterAdminPolicy 提供完整的叢集管理員存取權 (相當於 system:masters)。這對於開始使用很方便,但不應用於生產環境。對於生產環境,請建立存取項目與自訂 Kubernetes 群組的關聯,並建立適當的角色或 ClusterRole 繫結,以使用更嚴格的許可。如需最低權限組態,請參閱下方的生產設定一節。
步驟 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 秘密:
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
跨帳戶叢集
若要部署到不同 AWS 帳戶中的叢集:
-
在目標帳戶中,使用來源帳戶中的 Argo CD IAM 功能角色 ARN 做為委託人,在目標 EKS 叢集上建立存取項目
-
將存取政策與適當的 Kubernetes RBAC 許可建立關聯
-
使用其 EKS 叢集 ARN 在 Argo CD 中註冊叢集
不需要額外的 IAM 角色建立或信任政策組態—EKS 存取項目會處理跨帳戶存取。
叢集 ARN 格式包含 區域,因此跨區域部署使用與相同區域部署相同的程序。
驗證叢集註冊
檢視已註冊的叢集:
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster
或在設定 → 叢集下的 Argo CD UI 中檢查叢集狀態。
私有叢集
Argo CD 功能提供全私有 EKS 叢集的透明存取,而不需要 VPC 對等互連或專用聯網組態。
AWS 會自動管理 Argo CD 功能與私有遠端叢集之間的連線。
只需使用私有叢集的 ARN 註冊 - 不需要額外的聯網設定。
存取項目 RBAC 要求
當您建立 Argo CD 功能時,會自動為功能角色建立 EKS 存取項目,但預設不會授予 Kubernetes RBAC 許可。此刻意設計遵循最低權限原則 - 不同的使用案例需要不同的許可。
例如:* 如果您僅使用叢集做為 Argo CD 中樞來管理遠端叢集,則不需要本機部署許可 * 如果您在本機部署應用程式,則需要整個叢集的讀取存取和特定命名空間的寫入存取 * 如果您需要建立 CRDs,則需要額外的叢集管理許可
您必須根據您的需求明確設定 Argo CD 所需的許可。
Argo CD 的最低許可
Argo CD 需要兩種類型的許可才能在沒有錯誤的情況下運作:
讀取許可 (全叢集):Argo CD 必須能夠跨叢集讀取下列所有資源類型和自訂資源定義 (CRDs):
-
資源探索和運作狀態檢查
-
偵測所需和實際狀態之間的偏離
-
在部署之前驗證資源
寫入許可 (命名空間特定):Argo CD 需要建立、更新和刪除應用程式中所定義資源的許可:
-
部署應用程式工作負載 (部署、服務、ConfigMaps 等)
-
套用自訂資源 (CRDs)
-
管理應用程式生命週期
快速設定
若要快速入門、測試或開發環境,請使用 AmazonEKSClusterAdminPolicy:
aws eks associate-access-policy \ --regionregion-code\ --cluster-namemy-cluster\ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole\ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster
重要
AmazonEKSClusterAdminPolicy 提供完整的叢集管理員存取權 (相當於 system:masters),包括能夠建立 CRDs、修改整個叢集的資源,以及部署到任何命名空間。這對於開發和 POCs 來說很方便,但不應用於生產環境。對於生產,請使用下列最低權限設定。
最低權限的生產設定
對於生產環境,建立自訂 Kubernetes RBAC,以授予:
-
整個叢集對所有 資源的讀取存取權 (適用於探索和運作狀態檢查)
-
命名空間特定的寫入存取 (適用於部署)
步驟 1:將存取項目與自訂 Kubernetes 群組建立關聯
aws eks associate-access-policy \ --regionregion-code\ --cluster-namemy-cluster\ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole\ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy \ --access-scope type=namespace,namespaces=app-namespace
步驟 2:建立 ClusterRole 以進行讀取存取
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: argocd-read-all rules: # Read access to all resources for discovery and health checks - apiGroups: ["*"] resources: ["*"] verbs: ["get", "list", "watch"]
步驟 3:建立角色以寫入存取應用程式命名空間
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: argocd-deploy namespace: app-namespace rules: # Full access to deploy application resources - apiGroups: ["*"] resources: ["*"] verbs: ["*"]
步驟 4:將角色繫結至 Kubernetes 群組
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: argocd-read-all subjects: - kind: Group name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: argocd-read-all apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: argocd-deploy namespace: app-namespace subjects: - kind: Group name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: argocd-deploy apiGroup: rbac.authorization.k8s.io
注意
存取項目的群組名稱格式eks-access-entry:後面接著主體 ARN。針對 Argo CD 應部署應用程式的每個命名空間重複 RoleBinding。
重要
Argo CD 必須能夠讀取叢集中的所有資源類型,以進行運作狀態檢查和探索,即使只部署到特定的命名空間。如果沒有整個叢集的讀取存取權,Argo CD 會在檢查應用程式運作狀態時顯示錯誤。
使用專案限制叢集存取
透過在 中設定允許的目標叢集和命名空間,使用專案來控制應用程式可以部署到哪些叢集和命名空間spec.destinations:
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 考量事項 - 多叢集模式和跨帳戶設定
-
宣告式叢集設定
- 上游叢集組態參考