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

帮助改进此页面

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

使用 eksctl 创建 kro 功能

本主题旨在介绍如何使用 eksctl 创建 kro(Kube Resource Orchestrator)功能。

注意

以下步骤需要 eksctl 版本 0.220.0 或更高版本。要检查版本,请运行 eksctl version

步骤 1:创建 IAM 功能角色

创建信任策略文件:

cat > kro-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 KROCapabilityRole \ --assume-role-policy-document file://kro-trust-policy.json
注意

与 ACK 和 Argo CD 不同,kro 除信任策略外,无需额外的 IAM 权限。kro 完全在集群中运行,不会发起 Amazon API 调用。

步骤 2:创建 kro 功能

使用 eksctl 创建 kro 功能。将 region-code 替换为您的集群所在的 Amazon 区域,并将 my-cluster 替换为您的集群的名称。

eksctl create capability \ --region region-code \ --cluster my-cluster \ --name my-kro \ --type KRO \ --role-arn arn:aws:iam::[.replaceable]111122223333:role/KROCapabilityRole

命令会立即返回,但该功能需要一些时间才能变为活动状态。

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

检查功能状态。将 region-code 替换为您的集群所在的 Amazon 区域,并将 my-cluster 替换为您的集群的名称。

eksctl get capability \ --region region-code \ --cluster my-cluster \ --name my-kro

当状态显示为 ACTIVE 时,表示功能已准备就绪。

步骤 4:授予 Kubernetes 资源管理权限

默认情况下,kro 仅能创建和管理 ResourceGraphDefinition 及其对应的实例。若要允许 kro 创建和管理 ResourceGraphDefinition 中定义的底层 Kubernetes 资源,需将 AmazonEKSClusterAdminPolicy 访问策略关联到该功能的访问条目。

获取功能角色的 ARN:

CAPABILITY_ROLE_ARN=$(aws eks describe-capability \ --region region-code \ --cluster my-cluster \ --name my-kro \ --query 'capability.roleArn' \ --output text)

关联集群管理员策略:

aws eks associate-access-policy \ --region region-code \ --cluster my-cluster \ --principal-arn $CAPABILITY_ROLE_ARN \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \ --access-scope type=cluster
重要

AmazonEKSClusterAdminPolicy 会授予宽泛的权限,支持创建和管理所有 Kubernetes 资源,该策略的设计目的是简化功能的入门流程。在生产环境使用时,请创建权限范围更严格的 RBAC 策略,仅授予 ResourceGraphDefinition 需管理的特定资源对应的权限。有关配置最低权限的指引,请参阅配置 kro 权限EKS 功能的安全注意事项

步骤 5:验证自定义资源是否可用

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

kubectl api-resources | grep kro.run

您应能看到 ResourceGraphDefinition 这一资源类型已被列出。

后续步骤