

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 使用 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>

获取 Identity Center 实例 ARN 和用户 ID，用于 RBAC 配置：

```
# 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
```

您应该会看到列出的 `Application` 和 `ApplicationSet` 资源类型。

## 后续步骤
<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 功能资源