使用 AWS CLI 创建 ACK 功能 - Amazon EKS

帮助改进此页面

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

使用 AWS CLI 创建 ACK 功能

本主题将介绍如何使用 AWS CLI 创建 AWS Controllers for Kubernetes(ACK)功能。

先决条件

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

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

步骤 1:创建 IAM 功能角色

创建信任策略文件:

cat > ack-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 ACKCapabilityRole \ --assume-role-policy-document file://ack-trust-policy.json

AdministratorAccess 托管式策略附加到角色:

aws iam attach-role-policy \ --role-name ACKCapabilityRole \ --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
重要

建议的 AdministratorAccess 策略授予了广泛权限,旨在简化入门流程。对于生产用途,请将其替换为自定义策略,该策略仅授予您计划通过 ACK 管理的特定 AWS 服务所需的权限。有关创建最低权限策略的指导,请参阅配置 ACK 权限EKS 功能的安全注意事项

步骤 2:创建 ACK 功能

在集群上创建 ACK 功能资源。将 region-code 替换为您的集群所在的 AWS 区域,并将 my-cluster 替换为您的集群的名称。

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

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

注意

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

  • 集群名称是否正确

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

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

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

等待功能变为活动状态。将 region-code 替换为您的集群所在的 AWS 区域,并将 my-cluster 替换为您的集群的名称。

aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-ack \ --query 'capability.status' \ --output text

当状态显示为 ACTIVE 时,表示功能已准备就绪。在该状态变为 ACTIVE 之前,请勿继续执行下一步。

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

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

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

功能激活后,验证 ACK 自定义资源是否已在集群中可用:

kubectl api-resources | grep services.k8s.aws

您应该会看到列出的多个用于 AWS 资源的 API。

注意

AWS Controllers for Kubernetes 功能将为各种 AWS 资源安装大量 CRD。

后续步骤