協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Argo CD 考量事項
本主題涵蓋使用 Argo CD 的 EKS 功能的重要考量,包括規劃、許可、身分驗證和多叢集部署模式。
規劃
部署 Argo CD 之前,請考慮下列事項:
儲存庫策略:判斷您的應用程式資訊清單將存放在何處 (CodeCommit、GitHub、GitLab、Bitbucket)。規劃不同環境的儲存庫結構和分支策略。
身分驗證方法:決定是否使用 AWS Identity Center for SSO 或直接管理 Argo CD 使用者。生產環境建議使用 SSO。
RBAC 策略:規劃哪些團隊或使用者應具有管理員、編輯器或檢視器存取權。將這些映射到 AWS Identity Center 群組或 Argo CD 角色。
多叢集架構:判斷您是否會從單一 Argo CD 執行個體管理多個叢集。考慮為 Argo CD 使用專用管理叢集。
應用程式組織:規劃如何建構應用程式和 ApplicationSets。考慮使用專案,依團隊或環境組織應用程式。
同步政策:決定應用程式是否應自動同步或需要手動核准。自動化同步對於開發很常見,對於生產則是手動。
許可
如需 IAM 功能角色、信任政策和安全最佳實務的詳細資訊,請參閱 Amazon EKS 功能 IAM 角色和 EKS 功能的安全考量。
IAM 功能角色概觀
當您建立 Argo CD 功能資源時,您會提供 IAM 功能角色。與 ACK 不同,Argo CD 主要管理 Kubernetes 資源,而不是直接管理 AWS 資源。不過,以下項目需要 IAM 角色:
-
在 CodeCommit 中存取私有 Git 儲存庫
-
與 AWS Identity Center 整合以進行身分驗證
-
在 AWS Secrets Manager 中存取秘密 (如果已設定)
-
跨叢集部署至其他 EKS 叢集
CodeCommit 整合
如果您使用的是 CodeCommit 儲存庫,請連接具有讀取許可的政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ] }
重要
對於生產用途,請將 Resource 欄位限制為特定儲存庫 ARNs,而不是使用 "*"。
範例:
"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"
這會將 Argo CD 的存取權限制為僅需要管理的儲存庫。
Secrets Manager 整合
如果您要將儲存庫登入資料儲存在 Secrets Manager 中,請連接具有讀取許可的政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:argocd/*" } ] }
基本設定
對於具有公有 Git 儲存庫的基本 Argo CD 功能,除了信任政策之外,不需要額外的 IAM 政策。
身分驗證
AWS Identity Center 整合
Argo CD 受管功能直接與 AWS Identity Center (先前稱為 AWS SSO) 整合,可讓您使用現有的身分提供者進行身分驗證。
當您設定 AWS Identity Center 整合時:
-
使用者透過 EKS 主控台存取 Argo CD UI
-
他們使用 AWS Identity Center 進行身分驗證 (可聯合到您的公司身分提供者)
-
AWS Identity Center 提供使用者和群組資訊給 Argo CD
-
Argo CD 會根據您的組態,將使用者和群組映射至 RBAC 角色
-
使用者只會看到他們有權存取的應用程式和資源
使用 Identity Center 許可集簡化存取
AWS Identity Center 在使用 Argo CD 時提供兩種不同的身分驗證路徑:
Argo CD API 身分驗證: Identity Center 為 Argo CD UI 和 API 提供 SSO 身分驗證。這是透過 Argo CD 功能的 RBAC 角色映射來設定。
EKS 叢集存取:Argo CD 功能使用客戶提供的 IAM 角色,透過存取項目向 EKS 叢集進行驗證。您可以手動設定這些存取項目來新增或移除許可。
您可以使用 Identity Center 許可集來簡化身分管理,方法是允許單一身分同時存取 Argo CD 和 EKS 叢集。這可降低額外負荷,只需跨兩個系統管理一個身分,而不是維護 Argo CD 存取和叢集存取的個別登入資料。
RBAC 角色映射
Argo CD 具有內建角色,您可以映射到 AWS Identity Center 使用者和群組:
ADMIN:完整存取所有應用程式和設定。可以建立、更新和刪除應用程式。可以管理 Argo CD 組態。
EDITOR:可以建立和修改應用程式。無法變更 Argo CD 設定或刪除應用程式。
VIEWER:唯讀存取應用程式。可以檢視應用程式狀態和歷史記錄。無法進行變更。
注意
角色名稱區分大小寫,且必須為大寫 (ADMIN、EDITOR、VIEWER)。
重要
EKS 功能與 AWS Identity Center 整合支援每個 Argo CD 功能最多 1,000 個身分。身分可以是使用者或群組。
多叢集部署
Argo CD 受管功能支援多叢集部署,可讓您從單一 Argo CD 執行個體管理跨開發、預備和生產叢集的應用程式。
多叢集的運作方式
當您向 Argo CD 註冊其他叢集時:
-
您可以建立依 ARN 參考目標 EKS 叢集的叢集秘密
-
您可以建立以不同叢集為目標的應用程式或 ApplicationSets
-
Argo CD 會連線至每個叢集,以部署應用程式和監看資源
-
您可以從單一 Argo CD UI 檢視和管理所有叢集
多叢集的先決條件
註冊其他叢集之前:
-
在目標叢集上為 Argo CD 功能角色建立存取項目
-
確保 Argo CD 功能與目標叢集之間的網路連線
-
驗證存取目標叢集的 IAM 許可
註冊叢集
在 argocd 命名空間中使用 Kubernetes Secrets 註冊叢集。
取得目標叢集 ARN。將 region-code 取代為目標叢集所在的 AWS 區域,並將 target-cluster 取代為目標叢集的名稱。
aws eks describe-cluster \ --regionregion-code\ --nametarget-cluster\ --query 'cluster.arn' \ --output text
使用叢集 ARN 建立叢集秘密:
apiVersion: v1 kind: Secret metadata: name: target-cluster namespace: argocd labels: argocd.argoproj.io/secret-type: cluster type: Opaque stringData: name: target-cluster server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster project: default
重要
在 server 欄位中使用 EKS 叢集 ARN,而不是 Kubernetes API 伺服器 URL。受管功能需要 ARNs才能識別目標叢集。
套用秘密:
kubectl apply -f cluster-secret.yaml
在目標叢集上設定存取項目
目標叢集必須具有存取項目,以授予 Argo CD 功能角色部署應用程式的許可。將 region-code 取代為目標叢集所在的 AWS 區域,將 target-cluster 取代為目標叢集的名稱,並將 ARN 取代為 Argo CD 功能角色 ARN。
aws eks create-access-entry \ --regionregion-code\ --cluster-nametarget-cluster\ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole\ --type STANDARD \ --kubernetes-groups system:masters
注意
對於生產用途,請考慮使用更嚴格的 Kubernetes 群組,而非 system:masters。
私有叢集存取
Argo CD 受管功能可以部署到全私有 EKS 叢集,而不需要 VPC 對等互連或專用聯網組態。 會自動 AWS 管理 Argo CD 功能與私有遠端叢集之間的連線。
跨帳戶部署
對於跨帳戶部署,將 Argo CD IAM 功能角色從來源帳戶新增至目標叢集的 EKS 存取項目:
-
在目標帳戶中,在目標 EKS 叢集上建立存取項目
-
使用來源帳戶中的 Argo CD IAM 功能角色 ARN 做為委託人
-
為存取項目設定適當的 Kubernetes RBAC 許可
-
使用其 EKS 叢集 ARN 在 Argo CD 中註冊目標叢集
不需要額外的 IAM 角色建立或信任政策組態—EKS 存取項目會處理跨帳戶存取。
最佳實務
使用宣告性來源做為事實來源:將所有應用程式資訊清單存放在 Git 儲存庫、Helm 登錄檔或 OCI 映像中,以啟用版本控制、稽核追蹤和協同合作。
實作適當的 RBAC:使用 AWS Identity Center 整合來控制誰可以存取和管理 Argo CD 中的應用程式。Argo CD 支援對應用程式 (部署、Pod、ConfigMaps、秘密) 內資源的精細存取控制。
使用 ApplicationSets 進行多環境部署:使用 ApplicationSets 在具有不同組態的多個叢集或命名空間中部署應用程式。
生命週期管理
應用程式同步政策
控制 Argo CD 同步應用程式的方式:
手動同步:應用程式需要手動核准才能同步變更。建議用於生產環境。
自動同步:偵測到 Git 變更時,應用程式會自動同步。常見於開發和預備環境。
自我修復:自動還原對叢集所做的手動變更。確保叢集狀態符合 Git。
刪除:自動刪除從 Git 移除的資源。請謹慎使用 ,因為這可能會刪除資源。
應用程式運作狀態
Argo CD 會持續監控應用程式運作狀態:
-
運作狀態良好:所有資源都如預期般執行
-
進行中:正在建立或更新資源
-
降級:某些資源運作狀態不佳
-
已暫停:應用程式已暫停
-
遺失:叢集中缺少資源
同步視窗
設定同步時段以控制應用程式可以同步的時間:
-
僅允許在維護時段進行同步
-
上班時間的區塊同步
-
排程特定時間的自動同步
-
將同步時段用於需要暫時停止所有同步的中斷玻璃案例
Webhook 組態可加快同步速度
根據預設,Argo CD 每 6 分鐘輪詢一次 Git 儲存庫,以偵測變更。如需更靈敏的部署,請將 Git Webhook 設定為在推送變更時觸發立即同步。
Webhooks 提供數種優點:
-
推送程式碼時的立即同步回應 (秒與分鐘)
-
減少輪詢負荷並改善系統效能
-
更有效率地使用 API 速率限制
-
透過更快的意見回饋獲得更好的使用者體驗
Webhook 端點
Argo CD 功能提供用於接收 Git 通知的 Webhook 端點。在叢集功能索引標籤下的 EKS 主控台中尋找 Webhook URL,或使用 CLI AWS 擷取它:
aws eks describe-capability \ --cluster-namemy-cluster\ --capability-namemy-argocd\ --query 'capability.configuration.argoCd.webhookUrl' \ --output text \ --regionregion-code
依 Git 提供者設定 Webhook
GitHub:在您的儲存庫設定中,使用 Argo CD Webhook URL 新增 Webhook。將內容類型設定為 application/json,然後選取「僅推送事件」。
GitLab:在您的專案設定中,使用 Argo CD Webhook URL 新增 Webhook。啟用「推送事件」和選用的「標籤推送事件」。
Bitbucket:在您的儲存庫設定中,使用 Argo CD Webhook URL 新增 Webhook。選取「儲存庫推送」作為觸發。
CodeCommit:建立在 CodeCommit 儲存庫狀態變更時觸發的 Amazon EventBridge 規則,並將通知傳送至 Argo CD Webhook 端點。
如需詳細 Webhook 組態指示,請參閱 Argo CD Webhook 組態
注意
Webhook 補充輪詢 - 它們不會取代它。Argo CD 會繼續輪詢儲存庫做為備用機制,以防 Webhook 通知遺失。
後續步驟
-
使用 Argo CD - 了解如何建立和管理 Argo CD 應用程式
-
對 Argo CD 功能的問題進行故障診斷 - 對 Argo CD 問題進行故障診斷
-
使用 功能資源 - 管理您的 Argo CD 功能資源