

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 比較 Argo CD 與自我管理 Argo CD 的 EKS 功能
<a name="argocd-comparison"></a>

EKS 的 Argo CD 功能提供以 EKS 執行的全受管 Argo CD 體驗。如需 EKS 功能與自我管理解決方案的一般比較，請參閱[EKS 功能考量事項](capabilities-considerations.md)。本主題著重於 Argo CD 的特定差異，包括身分驗證、多叢集管理和上游功能支援。

## 與上游 Argo CD 的差異
<a name="_differences_from_upstream_argo_cd"></a>

Argo CD 的 EKS 功能是以上游 Argo CD 為基礎，但其存取、設定和整合 AWS 服務的方式有所不同。

 **RBAC 和身分驗證**： 功能隨附三個 RBAC 角色 （管理員、編輯器、檢視器），並使用 AWS Identity Center 進行身分驗證，而非 Argo CD 的內建身分驗證。透過 功能的 `rbacRoleMapping` 參數設定角色映射，將 Identity Center 群組映射至 Argo CD 角色，而不是透過 Argo CD 的 `argocd-rbac-cm` ConfigMap。Argo CD UI 使用自己的直接 URL 託管 （在叢集的功能索引標籤下的 EKS 主控台中找到），而 API 存取使用透過 IAM 的 AWS 身分驗證和授權。

 **叢集組態**： 功能不會自動設定本機叢集或hub-and-spoke拓撲。您可以設定部署目標叢集和 EKS 存取項目。此功能僅支援使用 EKS 叢集 ARNs （不支援 Kubernetes API 伺服器 URLs) 做為部署目標的 Amazon EKS 叢集。此功能不會自動新增本機叢集 (`kubernetes.default.svc`) 做為部署目標，若要部署至建立此功能的相同叢集，請使用其 ARN 明確註冊該叢集。

 **簡化的遠端叢集存取**： 功能使用 EKS 存取項目將 Argo CD 存取授予遠端叢集，以簡化多叢集部署，無需設定服務帳戶的 IAM 角色 (IRSA) 或設定跨帳戶 IAM 角色假設。此功能也提供全私有 EKS 叢集的透明存取，而不需要 VPC 對等互連或特殊聯網組態，可自動AWS 管理 Argo CD 功能與私有遠端叢集之間的連線。

 **直接 AWS 服務整合**： 功能透過功能角色的 IAM 許可，提供與 AWS 服務的直接整合。您可以直接在應用程式資源中參考 CodeCommit 儲存庫、ECR Helm Chart 和 CodeConnections，而無需建立儲存庫組態。這可簡化身分驗證，並消除管理 AWS 服務個別登入資料的需求。如需詳細資訊，請參閱 [設定儲存庫存取](argocd-configure-repositories.md)。

 **命名空間支援**： 功能需要您指定單一命名空間，其中必須建立 Argo CD Application、ApplicationSet 和 AppProject 自訂資源。

**注意**  
此命名空間限制僅適用於 Argo CD 自己的自訂資源 (Application、ApplicationSet、AppProject)。您的應用程式工作負載可以部署到任何目標叢集中的任何命名空間。例如，如果您使用命名空間 建立 功能`argocd`，則必須在`argocd`命名空間中建立所有應用程式 CRs，但這些應用程式可以將工作負載部署到 `default`、`staging`、 `production`或任何其他命名空間。

**注意**  
受管功能對 CLI 用量和 AppProject 組態有特定要求：  
使用 Argo CD CLI 時，請使用命名空間字首指定應用程式： `argocd app sync namespace/appname`
AppProject 資源必須指定 `.spec.sourceNamespaces`來定義專案可監看的應用程式命名空間 （通常設定為您在建立功能時指定的命名空間）
資源追蹤註釋使用 格式： `namespace_appname:group/kind:namespace/name`

 **不支援的功能**：下列功能不適用於 受管功能：
+ 用於產生自訂資訊清單的 Config Management 外掛程式 (CMPs)
+ 資源運作狀態評估的自訂 Lua 指令碼 （支援標準資源的內建運作狀態檢查）
+ 通知控制器
+ 自訂 SSO 供應商 （僅支援 AWS Identity Center，包括透過 AWS Identity Center 的第三方聯合身分）
+ UI 擴充功能和自訂橫幅
+ 直接存取 `argocd-cm`、 `argocd-params`和其他組態 ConfigMaps
+ 修改同步逾時 （修正為 120 秒）

 **相容性**：Application 和 ApplicationSets 的運作方式與上游 Argo CD 相同，而不會變更資訊清單。該功能使用相同的 Kubernetes APIs 和 CRDs，因此 等工具`kubectl`的運作方式相同。功能完全支援應用程式和 ApplicationSets、GitOps 工作流程與自動同步、多叢集部署、同步政策 （自動化、剪下、自我修復）、同步波和勾點、標準 Kubernetes 資源的運作狀態評估、轉返功能、Git 儲存庫來源 (HTTPS 和 SSH)、Helm、Kutomize 和純 YAML 資訊清單、GitHub 應用程式憑證、多租用專案，以及資源排除和包含項目。

## 搭配 受管功能使用 Argo CD CLI
<a name="argocd-cli-configuration"></a>

Argo CD CLI 的運作方式與大多數操作的上游 Argo CD 相同，但身分驗證和叢集註冊不同。

### 先決條件
<a name="_prerequisites"></a>

按照[上游安裝說明安裝](https://argo-cd.readthedocs.io/en/stable/cli_installation/) Argo CD CLI。

### Configuration
<a name="_configuration"></a>

使用環境變數設定 CLI：

1. 從 EKS 主控台 （叢集**的功能**索引標籤下） 或使用 AWS CLI 取得 Argo CD 伺服器 URL。必須移除字`https://`首：

   ```
   export ARGOCD_SERVER=$(aws eks describe-capability \
     --cluster-name my-cluster \
     --capability-name my-argocd \
     --query 'capability.configuration.argoCd.serverUrl' \
     --output text \
     --region region-code | sed 's|^https://||')
   ```

1. 從 Argo CD UI 產生帳戶字符 (**設定** → **帳戶** → **管理員** → **產生新字符**)，然後將其設定為環境變數：

   ```
   export ARGOCD_AUTH_TOKEN="your-token-here"
   ```

**重要**  
此組態使用管理員帳戶字符進行初始設定和開發工作流程。對於生產使用案例，請使用專案範圍的角色和字符來遵循最低權限原則。如需設定專案角色和 RBAC 的詳細資訊，請參閱 [設定 Argo CD 許可](argocd-permissions.md)。

1. 設定必要的 gRPC 選項：

   ```
   export ARGOCD_OPTS="--grpc-web"
   ```

設定這些環境變數後，您可以在不使用 `argocd login`命令的情況下使用 Argo CD CLI。

### 主要差異
<a name="_key_differences"></a>

受管功能具有下列 CLI 限制：
+  `argocd admin` 不支援 命令 （需要直接 Pod 存取）
+  `argocd login` 不支援 （請改用 帳戶或專案字符）
+  `argocd cluster add` 需要具有 EKS 叢集 ARN 的 `--aws-cluster-name`旗標

### 範例：註冊叢集
<a name="_example_register_a_cluster"></a>

註冊 EKS 叢集以進行應用程式部署：

```
# Get the cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default
```

如需完整的 Argo CD CLI 文件，請參閱 [Argo CD CLI 參考](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/)。

## 遷移路徑
<a name="_migration_path"></a>

您可以從自我管理的 Argo CD 遷移到 受管功能：

1. 檢閱目前 Argo CD 組態是否有不支援的功能 （通知控制器、CMPs、自訂運作狀態檢查、UI 延伸）

1. 將您的自我管理 Argo CD 控制器擴展至零個複本，以防止衝突

1. 在叢集上建立 Argo CD 功能資源

1. 匯出現有的應用程式、ApplicationSets 和 AppProjects

1. 遷移儲存庫登入資料、叢集秘密和儲存庫登入資料範本 （已複製）

1. 如果使用 GPG 金鑰、TLS 憑證或 SSH 已知主機，請一併遷移這些組態

1. 更新`destination.server`欄位以使用叢集名稱或 EKS 叢集 ARNs

1. 將它們套用至受管 Argo CD 執行個體

1. 驗證應用程式是否正確同步

1. 停用自我管理的 Argo CD 安裝

受管功能使用相同的 Argo CD APIs 和資源定義，因此您現有的資訊清單會以最少的修改運作。

## 後續步驟
<a name="_next_steps"></a>
+  [建立 Argo CD 功能](create-argocd-capability.md) - 建立 Argo CD 功能資源
+  [使用 Argo CD](working-with-argocd.md) - 部署您的第一個應用程式
+  [Argo CD 考量事項](argocd-considerations.md) - 設定 AWS Identity Center 整合