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

帮助改进此页面

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

使用 Amazon CLI 创建 kro 功能

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

先决条件

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

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

步骤 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 调用。只有在与 EKS 功能服务建立信任关系时,才需要该角色。

步骤 2:创建 kro 功能

在集群上创建 kro 功能资源。将 region-code 替换为集群所在的 Amazon 区域(例如 us-west-2),并将 my-cluster 替换为集群的实际名称。

aws eks create-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-kro \ --type KRO \ --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/KROCapabilityRole \ --delete-propagation-policy RETAIN

命令会立即返回,但是由于 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-kro \ --query 'capability.status' \ --output text

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

您也可以查看完整功能详细信息:

aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-kro

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

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

获取功能角色的 ARN:

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

关联集群管理员策略:

aws eks associate-access-policy \ --region region-code \ --cluster-name 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 这一资源类型已被列出。

后续步骤