使用 Amazon CLI 创建 Argo CD 功能 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

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

使用 Amazon CLI 创建 Argo CD 功能

本主题将介绍如何使用 Amazon CLI 创建 Argo CD 功能。

先决条件

  • Amazon CLI:版本 2.12.3 或更高版本。要检查版本,请运行 aws --version。有关更多信息,请参阅《Amazon 命令行界面用户指南》中的安装

  • kubectl:用于与 Kubernetes 集群结合使用的命令行工具。有关更多信息,请参阅 设置 kubectl 和 eksctl

  • 已配置 Amazon Identity Center:Argo CD 需要使用 Amazon Identity Center 进行身份验证。不支持本地用户。如果您尚未设置 Amazon Identity Center,请参阅开始使用 Amazon Identity Center 以创建 Identity Center 实例,并参阅添加用户添加组以创建用于访问 Argo CD 的用户和组。

步骤 1:创建 IAM 功能角色

创建信任策略文件:

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
注意

如果计划使用与 Amazon Secrets Manager 或 Amazon CodeConnections 的可选集成,则需要向该角色添加权限。有关 IAM 策略示例和配置指南,请参阅使用 Amazon Secrets Manager 管理应用程序密钥使用 Amazon CodeConnections 连接到 Git 存储库

步骤 2:创建 Argo CD 功能

在集群上创建 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 替换为集群所在的 Amazon 区域,并将 my-cluster 替换为集群名称:

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]`region-code`'" }, "rbacRoleMappings": [{ "role": "ADMIN", "identities": [{ "id": "'$IDC_USER_ID'", "type": "SSO_USER" }] }] } }'

命令会立即返回,但是由于 EKS 正在创建所需的功能基础设施和组件,该功能需要一些时间才能变为活动状态。在创建集群时,EKS 将在集群中安装与此功能相关的 Kubernetes 自定义资源定义。

注意

如果收到集群不存在或您没有权限的错误消息,请验证:

  • 集群名称是否正确

  • Amazon CLI 是否针对正确的区域进行配置

  • 您是否拥有所需的 IAM 权限

步骤 3:验证功能是否处于活动状态

等待功能变为活动状态。将 region-code 替换为集群所在的 Amazon 区域,并将 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:验证自定义资源是否可用

待该功能处于活动状态后,验证 Argo CD 自定义资源是否已在集群中正常可用:

kubectl api-resources | grep argoproj.io

您应该会看到列出的 ApplicationApplicationSet 资源类型。

后续步骤