帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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 \ --regionregion-code\ --cluster-namemy-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 \ --regionregion-code\ --cluster-namemy-cluster\ --capability-name my-kro \ --query 'capability.status' \ --output text
当状态显示为 ACTIVE 时,表示功能已准备就绪。
您也可以查看完整功能详细信息:
aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-name my-kro
步骤 4:授予 Kubernetes 资源管理权限
默认情况下,kro 仅能创建和管理 ResourceGraphDefinition 及其对应的实例。若要允许 kro 创建和管理 ResourceGraphDefinition 中定义的底层 Kubernetes 资源,需将 AmazonEKSClusterAdminPolicy 访问策略关联到该功能的访问条目。
获取功能角色的 ARN:
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-name my-kro \ --query 'capability.roleArn' \ --output text)
关联集群管理员策略:
aws eks associate-access-policy \ --regionregion-code\ --cluster-namemy-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 这一资源类型已被列出。