

 **協助改進此頁面** 

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

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

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

# 建立 Argo CD 功能
<a name="create-argocd-capability"></a>

本主題說明如何在 Amazon EKS 叢集上建立 Argo CD 功能。

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

建立 Argo CD 功能之前，請確定您有：
+ 執行支援 Kubernetes 版本的現有 Amazon EKS 叢集 （支援標準和延伸支援中的所有版本）
+  ** AWS 已設定身分中心** - Argo CD 身分驗證需要 （不支援本機使用者）
+ 具有 Argo CD 許可的 IAM 功能角色
+ 足夠的 IAM 許可，可在 EKS 叢集上建立功能資源
+  `kubectl` 設定為與您的叢集通訊
+ （選用） 為簡化叢集和儲存庫管理而安裝的 Argo CD CLI
+ （適用於 CLI/eksctl) 安裝和設定適當的 CLI 工具

如需建立 IAM 功能角色的說明，請參閱 [Amazon EKS 功能 IAM 角色](capability-role.md)。如需 Identity Center 設定，請參閱 [AWS Identity Center 入門](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。

**重要**  
您提供的 IAM 功能角色會決定 Argo CD 可存取 AWS 的資源。這包括透過 CodeConnections 和 Secrets Manager 中的秘密存取 Git 儲存庫。如需建立具有最低權限許可之適當角色的指引，請參閱 [Amazon EKS 功能 IAM 角色](capability-role.md)和 [EKS 功能的安全考量](capabilities-security.md)。

## 選擇您的工具
<a name="_choose_your_tool"></a>

您可以使用、 AWS 管理主控台 AWS CLI 或 eksctl 建立 Argo CD 功能：
+  [使用主控台建立 Argo CD 功能](argocd-create-console.md) - 使用 主控台進行引導式體驗
+  [使用 CLI 建立 Argo CD AWS 功能](argocd-create-cli.md) - 使用 AWS CLI 進行指令碼編寫和自動化
+  [使用 eksctl 建立 Argo CD 功能](argocd-create-eksctl.md) - 使用 eksctl 進行 Kubernetes 原生體驗

## 當您建立 Argo CD 功能時會發生什麼情況
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

當您建立 Argo CD 功能時：

1. EKS 在 AWS 控制平面中建立 Argo CD 功能服務

1. 您的叢集中已安裝自訂資源定義 (CRDs)

1. 會自動為您的 IAM 功能角色建立存取項目，其中包含授予基準 Kubernetes 許可的特定功能存取項目政策 （請參閱 [EKS 功能的安全考量](capabilities-security.md))

1. Argo CD 開始觀看其自訂資源 （應用程式、ApplicationSets、AppProjects)

1. 功能狀態從 變更為 `CREATING` `ACTIVE` 

1. Argo CD UI 可透過其 URL 存取

啟用後，您可以在叢集中建立 Argo CD 應用程式，以從宣告性來源部署。

**注意**  
自動建立的存取項目不會授予將應用程式部署到叢集的許可。若要部署應用程式，您必須為每個目標叢集設定額外的 Kubernetes RBAC 許可。[註冊目標叢集](argocd-register-clusters.md) 如需註冊叢集和設定存取的詳細資訊，請參閱 。

## 後續步驟
<a name="_next_steps"></a>

建立 Argo CD 功能之後：
+  [Argo CD 概念](argocd-concepts.md) - 了解 GitOps 原則、同步政策和多叢集模式
+  [使用 Argo CD](working-with-argocd.md) - 設定儲存庫存取、註冊目標叢集和建立應用程式
+  [Argo CD 考量事項](argocd-considerations.md) - 探索多叢集架構模式和進階組態

# 使用主控台建立 Argo CD 功能
<a name="argocd-create-console"></a>

本主題說明如何使用 建立 Argo CD 功能 AWS 管理主控台。

## 先決條件
<a name="_prerequisites"></a>
+  ** AWS 已設定 Identity Center** – Argo CD 需要 AWS Identity Center 進行身分驗證。不支援本機使用者。如果您沒有設定 AWS Identity Center，請參閱 [AWS Identity Center 入門](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)以建立 Identity Center 執行個體，以及[新增使用者](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html)和[新增群組](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)以建立使用者和群組以進行 Argo CD 存取。

## 建立 Argo CD 功能
<a name="_create_the_argo_cd_capability"></a>

1. 在以下網址開啟 Amazon EKS 主控台：https://console.aws.amazon.com/eks/home\$1/clusters。

1. 選取您的叢集名稱以開啟叢集詳細資訊頁面。

1. 選擇**功能**索引標籤。

1. 在左側導覽中，選擇 **Argo CD**。

1. 選擇**建立 Argo CD 功能**。

1. 對於 **IAM 功能角色**：
   + 如果您已經有 IAM 功能角色，請從下拉式清單中選取它
   + 如果您需要建立角色，請選擇**建立 Argo CD 角色** 

     這會在新標籤中開啟 IAM 主控台，其中包含預先填入的信任政策和 Secrets Manager 的完整讀取存取權。預設不會新增其他許可，但您可以視需要新增許可。如果您計劃使用 CodeCommit 儲存庫或其他 AWS 服務，請在建立角色之前新增適當的許可。

     建立角色後，返回 EKS 主控台並自動選取角色。
**注意**  
如果您計劃使用與 AWS Secrets Manager 或 AWS CodeConnections 的選用整合，您將需要將許可新增至角色。如需 IAM 政策範例和組態指引，請參閱 [使用 AWS Secrets Manager 管理應用程式秘密](integration-secrets-manager.md)和 [使用 AWS CodeConnections 連線至 Git 儲存庫](integration-codeconnections.md)。

1. 設定 AWS Identity Center 整合：

   1. 選取**啟用 AWS Identity Center 整合**。

   1. 從下拉式清單中選擇您的 Identity Center 執行個體。

   1. 透過將使用者或群組指派給 Argo CD 角色 (ADMIN、EDITOR 或 VIEWER) 來設定 RBAC 的角色映射

1. 選擇**建立**。

功能建立程序開始。

## 驗證功能是否處於作用中狀態
<a name="_verify_the_capability_is_active"></a>

1. 在**功能**索引標籤上，檢視 Argo CD 功能狀態。

1. 等待狀態從 變更為 `CREATING` `ACTIVE`。

1. 啟用後，此功能即可使用。

如需功能狀態和故障診斷的資訊，請參閱 [使用 功能資源](working-with-capabilities.md)。

## 存取 Argo CD UI
<a name="_access_the_argo_cd_ui"></a>

啟用此功能後，您可以存取 Argo CD UI：

1. 在 Argo CD 功能頁面上，選擇**開啟 Argo CD UI**。

1. Argo CD UI 會在新的瀏覽器索引標籤中開啟。

1. 您現在可以透過 UI 建立應用程式和管理部署。

## 後續步驟
<a name="_next_steps"></a>
+  [使用 Argo CD](working-with-argocd.md) - 設定儲存庫、註冊叢集和建立應用程式
+  [Argo CD 考量事項](argocd-considerations.md) - 多叢集架構和進階組態
+  [使用 功能資源](working-with-capabilities.md) - 管理您的 Argo CD 功能資源

# 使用 CLI 建立 Argo CD AWS 功能
<a name="argocd-create-cli"></a>

本主題說明如何使用 CLI 建立 Argo CD AWS 功能。

## 先決條件
<a name="_prerequisites"></a>
+  ** AWS CLI** – 版本 `2.12.3` 或更新版本。若要檢查您的版本，請執行 `aws --version`。如需詳細資訊，請參閱《 AWS 命令列界面使用者指南》中的[安裝](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。
+  ** `kubectl` **：命令列工具，適用於使用 Kubernetes 叢集。如需詳細資訊，請參閱[設定 `kubectl` 和 `eksctl`](install-kubectl.md)。
+  ** AWS 已設定 Identity Center** – Argo CD 需要 AWS Identity Center 進行身分驗證。不支援本機使用者。如果您沒有設定 AWS Identity Center，請參閱 [AWS Identity Center 入門](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)以建立 Identity Center 執行個體，以及[新增使用者](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html)和[新增群組](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)以建立使用者和群組以進行 Argo CD 存取。

## 步驟 1：建立 IAM 功能角色
<a name="_step_1_create_an_iam_capability_role"></a>

建立信任政策檔案：

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

建立 IAM 角色：

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**注意**  
如果您計劃使用與 AWS Secrets Manager 或 AWS CodeConnections 的選用整合，您將需要將許可新增至角色。如需 IAM 政策範例和組態指引，請參閱 [使用 AWS Secrets Manager 管理應用程式秘密](integration-secrets-manager.md)和 [使用 AWS CodeConnections 連線至 Git 儲存庫](integration-codeconnections.md)。

## 步驟 2：建立 Argo CD 功能
<a name="_step_2_create_the_argo_cd_capability"></a>

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

首先，為您的 Identity Center 組態設定環境變數：

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

使用 Identity Center 整合建立 功能。將 *region-code* 取代為您叢集所在的 AWS 區域，並將 *my-cluster* 取代為您的叢集名稱，並將 *idc-region-code* 取代為您設定 IAM Identity Center 的區域代碼：

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

命令會立即傳回，但當 EKS 建立所需的功能基礎設施和元件時，功能需要一些時間才會變成作用中。EKS 會在建立叢集時，在叢集中安裝與此功能相關的 Kubernetes 自訂資源定義。

**注意**  
如果您收到叢集不存在或您沒有許可的錯誤，請驗證：  
叢集名稱正確
您的 AWS CLI 已針對正確的區域設定
您擁有必要的 IAM 許可

## 步驟 3：確認功能處於作用中狀態
<a name="_step_3_verify_the_capability_is_active"></a>

等待 功能變成作用中。將 *region-code* 取代為您的叢集所在的 AWS 區域，並將 *my-cluster* 取代為您的叢集名稱。

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

當狀態顯示 時，此功能已就緒`ACTIVE`。在狀態為 之前，請勿繼續下一個步驟`ACTIVE`。

您也可以檢視完整的功能詳細資訊：

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## 步驟 4：確認可用的自訂資源
<a name="_step_4_verify_custom_resources_are_available"></a>

功能處於作用中狀態後，請確認叢集中是否有可用的 Argo CD 自訂資源：

```
kubectl api-resources | grep argoproj.io
```

您應該會看到列出的 `ApplicationSet` `Application`和資源類型。

## 後續步驟
<a name="_next_steps"></a>
+  [使用 Argo CD](working-with-argocd.md) - 設定儲存庫、註冊叢集和建立應用程式
+  [Argo CD 考量事項](argocd-considerations.md) - 多叢集架構和進階組態
+  [使用 功能資源](working-with-capabilities.md) - 管理您的 Argo CD 功能資源

# 使用 eksctl 建立 Argo CD 功能
<a name="argocd-create-eksctl"></a>

本主題說明如何使用 eksctl 建立 Argo CD 功能。

**注意**  
下列步驟需要 eksctl 版本 `0.220.0` 或更新版本。若要檢查您的版本，請執行 `eksctl version`。

## 步驟 1：建立 IAM 功能角色
<a name="_step_1_create_an_iam_capability_role"></a>

建立信任政策檔案：

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

建立 IAM 角色：

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**注意**  
對於此基本設定，不需要額外的 IAM 政策。如果您打算將 Secrets Manager 用於儲存庫登入資料或 CodeConnections，則需要將許可新增至角色。如需 IAM 政策範例和組態指引，請參閱 [使用 AWS Secrets Manager 管理應用程式秘密](integration-secrets-manager.md)和 [使用 AWS CodeConnections 連線至 Git 儲存庫](integration-codeconnections.md)。

## 步驟 2：取得 AWS Identity Center 組態
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

取得 RBAC 組態的 Identity Center 執行個體 ARN 和使用者 ID：

```
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text

# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
  --identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text
```

請注意這些值 - 您將在下一個步驟中使用這些值。

## 步驟 3：建立 eksctl 組態檔案
<a name="_step_3_create_an_eksctl_configuration_file"></a>

建立名為 `argocd-capability.yaml` 且具有下列內容的檔案。將預留位置值取代為您叢集的名稱、叢集的區域、IAM 角色 ARN、Identity Center 執行個體 ARN、Identity Center 區域和使用者 ID：

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: cluster-region-code

capabilities:
  - name: my-argocd
    type: ARGOCD
    roleArn: arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    configuration:
      argocd:
        awsIdc:
          idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
          idcRegion: idc-region-code
        rbacRoleMappings:
          - role: ADMIN
            identities:
              - id: 38414300-1041-708a-01af-5422d6091e34
                type: SSO_USER
```

**注意**  
您可以將多個使用者或群組新增至 RBAC 映射。對於群組，請使用 `type: SSO_GROUP`並提供群組 ID。可用的角色為 `ADMIN`、 `EDITOR`和 `VIEWER`。

## 步驟 4：建立 Argo CD 功能
<a name="_step_4_create_the_argo_cd_capability"></a>

套用組態檔案：

```
eksctl create capability -f argocd-capability.yaml
```

命令會立即傳回，但 功能需要一些時間才會變成作用中。

## 步驟 5：確認功能已啟用
<a name="_step_5_verify_the_capability_is_active"></a>

檢查功能狀態。將 *region-code* 取代為您的叢集所在的 AWS 區域，並將 *my-cluster* 取代為您的叢集名稱。

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-argocd
```

當狀態顯示 時，此功能已就緒`ACTIVE`。

## 步驟 6：確認可用的自訂資源
<a name="_step_6_verify_custom_resources_are_available"></a>

功能處於作用中狀態後，請確認叢集中是否有可用的 Argo CD 自訂資源：

```
kubectl api-resources | grep argoproj.io
```

您應該會看到列出的 `ApplicationSet` `Application`和資源類型。

## 後續步驟
<a name="_next_steps"></a>
+  [使用 Argo CD](working-with-argocd.md) - 了解如何建立和管理 Argo CD 應用程式
+  [Argo CD 考量事項](argocd-considerations.md) - 設定 SSO 和多叢集存取
+  [使用 功能資源](working-with-capabilities.md) - 管理您的 Argo CD 功能資源