

 **協助改進此頁面** 

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

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

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

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

使用 CLI 在 Amazon EKS 叢集上建立 Argo CD AWS 功能。此程序會逐步引導您建立 IAM 角色、設定 AWS Identity Center 整合，以及驗證功能是否作用中。

## 先決條件
<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 存取。
+  **Identity AWS Center 中至少有一個使用者或群組** – 您必須在 Identity Center 執行個體中設定至少一個使用者或群組，以指派 Argo CD RBAC 角色映射並提供 Argo CD UI 的存取權。

## 步驟 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)。

## （選用） 設定私有端點
<a name="_optional_configure_a_private_endpoint"></a>

根據預設，Argo CD UI 和 API 端點可透過網際網路公開存取。如果您需要限制存取，您可以設定 VPC 端點。對於網路安全需求嚴格的環境，建議使用此選項。

### 為 EKS 功能建立 VPC 端點
<a name="_create_a_vpc_endpoint_for_eks_capabilities"></a>

在 VPC 中為 EKS 功能服務建立介面 VPC 端點。將 {{vpc-id}}、{{netnet-id-1 subnet-id-2}}、{{sg-id}} 和 {{region-code}} 取代為您自己的值：

```
aws ec2 create-vpc-endpoint \
  --vpc-endpoint-type Interface \
  --service-name com.amazonaws.{{region-code}}.eks-capabilities \
  --vpc-id {{vpc-id}} \
  --subnet-ids {{subnet-id-1 subnet-id-2}} \
  --security-group-ids {{sg-id}} \
  --region {{region-code}}
```

**注意**  
子網路應位於不同的可用區域中，以實現高可用性。
安全群組必須允許來自需要存取 Argo CD UI 和 API 之網路的傳入 HTTPS （連接埠 443) 流量。
請注意此命令傳回的 VPC 端點 ID，建立 功能時需要它。

### 驗證 VPC 端點是否可用
<a name="_verify_the_vpc_endpoint_is_available"></a>

```
aws ec2 describe-vpc-endpoints \
  --vpc-endpoint-ids {{vpce-xxxxxxxx}} \
  --query 'VpcEndpoints[0].State' \
  --output text \
  --region {{region-code}}
```

請等到狀態顯示`available`後再繼續。

## 步驟 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 {{region-code}} --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 {{region-code}} \
  --identity-store-id $(aws sso-admin list-instances --region {{region-code}} --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}} 取代為您的 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": "'idc-region-code'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

如果您已設定 VPC 端點進行私有存取，請包含 `network-configuration` 參數以使用私有端點建立 功能。將 {{vpce-xxxxxxxx}} 取代為您的 VPC 端點 ID：

```
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 \
  --network-configuration '{
    "elasticNetworkInterfaces": {
      "vpcEndpointId": "'vpce-xxxxxxxx'"
    }
  }' \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'idc-region-code'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

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

**注意**  
如果您收到叢集不存在或您沒有許可的錯誤，請驗證：  
叢集名稱正確
您的 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 功能資源