協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Argo CD 概念
Argo CD 透過將 Git 視為應用程式部署的單一事實來源來實作 GitOps。本主題會逐步解說實際範例,然後說明使用 Argo CD 的 EKS 功能時需要了解的核心概念。
Argo CD 入門
建立 Argo CD 功能後 (請參閱 建立 Argo CD 功能),您可以開始部署應用程式。此範例會逐步解說註冊叢集和建立應用程式。
步驟 1:設定
註冊您的叢集 (必要)
註冊您要部署應用程式的叢集。在此範例中,我們將註冊執行 Argo CD 的相同叢集 (您可以使用 名稱in-cluster來與大多數 Argo CD 範例相容):
# Get your cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster using Argo CD CLI argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default
注意
如需有關設定 Argo CD CLI 以在 EKS 中使用 Argo CD 功能的資訊,請參閱 搭配 受管功能使用 Argo CD CLI。
或者,使用 Kubernetes Secret 註冊叢集 (如需詳細資訊註冊目標叢集,請參閱 )。
設定儲存庫存取 (選用)
此範例使用公有 GitHub 儲存庫,因此不需要儲存庫組態。對於私有儲存庫,請使用 AWS Secrets Manager、CodeConnections 或 Kubernetes Secrets 設定存取權 (如需詳細資訊設定儲存庫存取,請參閱 )。
對於 AWS 服務 (ECR for Helm Charts、CodeConnections 和 CodeCommit),您可以直接在應用程式資源中參考它們,而無需建立儲存庫。功能角色必須具有必要的 IAM 許可。如需詳細資訊,請參閱 設定儲存庫存取。
步驟 2:建立應用程式
在 中建立此應用程式資訊清單my-app.yaml:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: guestbook destination: name: in-cluster namespace: guestbook syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
套用應用程式:
kubectl apply -f my-app.yaml
套用此應用程式後,Argo CD:1。將應用程式從 Git 同步到您的叢集 (初始部署) 2. 監控 Git 儲存庫的變更 3。自動同步叢集 4 的後續變更。偵測並修正所需狀態 5 的任何偏離。在 UI 中提供運作狀態和同步歷史記錄
檢視應用程式狀態:
kubectl get application guestbook -n argocd
您也可以使用 Argo CD CLI (argocd app get guestbook) 或 Argo CD UI (可從叢集功能索引標籤下的 EKS 主控台存取) 檢視應用程式。
注意
在 中使用叢集名稱 destination.name(您在註冊叢集時所使用的名稱)。受管功能不支援本機叢集內預設值 (kubernetes.default.svc)。
核心概念
GitOps 原則和來源類型
Argo CD 實作 GitOps,其中您的應用程式來源是部署的單一事實來源:
-
宣告 - 使用 YAML 資訊清單、Helm Chart 或 Kustomize 浮水印宣告所需狀態
-
已版本化 - 使用完整的稽核線索追蹤每個變更
-
自動化 - Argo CD 會持續監控來源並自動同步變更
-
自我修復 - 偵測並修正所需叢集狀態與實際叢集狀態之間的偏離
支援的來源類型:
-
Git 儲存庫 - GitHub、GitLab、Bitbucket、CodeCommit (HTTPS、SSH 或 CodeConnections)
-
Helm 登錄檔 - HTTP 登錄檔 (如
https://aws.github.io/eks-charts) 和 OCI 登錄檔 (如public.ecr.aws) -
OCI 映像 - 包含資訊清單或 Helm Chart 的容器映像 (例如
oci://registry-1.docker.io/user/my-app)
這種靈活性可讓組織選擇符合其安全和合規要求的來源。例如,限制從叢集存取 Git 的組織可以使用 ECR for Helm Charts 或 OCI 映像。
如需詳細資訊,請參閱 Argo CD 文件中的應用程式來源
同步和調校
Argo CD 會持續監控您的來源和叢集,以偵測和修正差異:
-
輪詢來源以進行變更 (預設:每 6 分鐘)
-
比較所需的狀態與叢集狀態
-
將應用程式標記為
Synced或OutOfSync -
自動同步變更 (如果已設定) 或等待手動核准
-
同步後監控資源運作狀態
使用註釋同步波浪控制資源建立順序:
metadata: annotations: argocd.argoproj.io/sync-wave: "0" # Default if not specified
資源會依波動順序套用 (數字越小,包括負數,例如 -1)。這可讓您在部署 (wave -1) 之前建立相依性,例如命名空間 (wave )0。
自我修復會自動還原手動變更:
spec: syncPolicy: automated: selfHeal: true
注意
受管功能使用註釋型資源追蹤 (非標籤型),以改善與 Kubernetes 慣例和其他工具的相容性。
如需同步階段、勾點和進階模式的詳細資訊,請參閱 Argo CD 同步文件
應用程式運作狀態
Argo CD 會監控應用程式中所有資源的運作狀態:
運作狀態:* 正常運作 - 所有資源如預期執行 * 進行中 - 正在建立或更新的資源 * 降級 - 部分資源運作狀態不佳 (Pod 損毀、任務失敗) * 已暫停 - 應用程式刻意暫停 * 遺失 - Git 中定義的資源不存在於叢集中
Argo CD 具有常見 Kubernetes 資源 (部署、StatefulSets、任務等) 的內建運作狀態檢查,並支援 CRDs的自訂運作狀態檢查。
應用程式運作狀態由其所有資源決定 - 如果任何資源為 Degraded,則應用程式為 Degraded。
如需詳細資訊,請參閱 Argo CD 文件中的資源運作
多叢集模式
Argo CD 支援兩種主要部署模式:
Hub-and-spoke - 在部署到多個工作負載叢集的專用管理叢集上執行 Argo CD: * 集中控制和可見性 * 跨所有叢集的一致政策 * 一個要管理的 Argo CD 執行個體 * 控制平面和工作負載之間的明確分離
每個叢集 - 在每個叢集上執行 Argo CD,僅管理該叢集的應用程式: * 叢集分離 (一個故障不會影響其他故障) * 簡化聯網 (無跨叢集通訊) * 更輕鬆的初始設定 (無叢集註冊)
為管理許多叢集的平台團隊選擇hub-and-spoke,或為獨立團隊選擇每個叢集,或當叢集必須完全隔離時。
如需詳細的多叢集組態,請參閱 Argo CD 考量事項。
專案
專案提供應用程式的邏輯分組和存取控制:
-
來源限制 - 限制哪些 Git 儲存庫可以使用
-
目的地限制 - 限制哪些叢集和命名空間可以成為目標
-
資源限制 - 限制可以部署哪些 Kubernetes 資源類型
-
RBAC 整合 - 將專案映射至 AWS Identity Center 使用者和群組 IDs
所有應用程式都屬於專案。如果未指定,他們會使用 default專案 (沒有限制)。對於生產,建立具有適當限制的專案。
如需專案組態和 RBAC 模式,請參閱 設定 Argo CD 許可。
儲存庫組織
大多數團隊使用目錄型組織搭配不同環境的 Kustomize 浮水印或 Helm 值檔案:
my-app/ ├── base/ │ ├── deployment.yaml │ └── service.yaml └── overlays/ ├── dev/ │ └── kustomization.yaml ├── staging/ │ └── kustomization.yaml └── prod/ └── kustomization.yaml
此方法提供靈活性和清晰度,同時將所有環境組態保留在單一儲存庫中。
如需詳細的儲存庫結構模式和最佳實務,請參閱 Argo CD 最佳實務文件
同步選項
使用常用選項微調同步行為:
-
CreateNamespace=true- 自動建立目的地命名空間 -
ServerSideApply=true- 使用伺服器端套用以獲得更好的衝突解決 -
SkipDryRunOnMissingResource=true- 當 CRDs尚不存在時略過試轉 (適用於 kro 執行個體)
spec: syncPolicy: syncOptions: - CreateNamespace=true - ServerSideApply=true
如需同步選項的完整清單,請參閱 Argo CD 同步選項文件
後續步驟
-
設定儲存庫存取 - 設定 Git 儲存庫存取
-
註冊目標叢集 - 註冊目標叢集以進行部署
-
建立應用程式 - 建立您的第一個應用程式
-
Argo CD 考量事項 - EKS 特定模式、Identity Center 整合和多叢集組態
-
Argo CD 文件
- 完整的 Argo CD 文件,包括同步勾點、運作狀態檢查和進階模式