将 Amazon ECR 映像与 Amazon EKS 结合使用 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

将 Amazon ECR 映像与 Amazon EKS 结合使用

您可以将 Amazon ECR 映像与 Amazon EKS 结合使用,但需要满足以下先决条件。

  • 对于在托管式节点或自行管理的节点上托管的 Amazon EKS 工作负载,必须提供 Amazon EKS Worker 节点 IAM 角色(NodeInstanceRole)。Amazon EKS Worker 节点 IAM 角色必须包含以下适用于 Amazon ECR 的 IAM 策略权限。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
    注意

    如果您使用 Amazon EKS 入门中的 eksctl 或 Amazon CloudFormation 模板创建集群和工作节点组,则预设情况下,这些 IAM 权限将应用于您的工作节点 IAM 角色。

  • 对于在 Amazon Fargate 上托管的 Amazon EKS 工作负载,您必须使用 Fargate 容器组(Pod)执行角色,该角色为您的 Pod 提供了从私有 Amazon ECR 存储库中提取镜像的权限。有关更多信息,请参阅创建 Fargate Pod 执行角色。

  • 从 Amazon ECR 中引用映像时,您必须为映像使用完整的 registry/repository:tag 命名。例如:aws_account_id.dkr.ecr.region.amazonaws.com/my-repository:latest

使用 Amazon EKS 安装托管在 Amazon ECR 上的 Helm Chart

您在 Amazon ECR 中托管的 Helm Chart 可以安装在您的 Amazon EKS 集群上。以下步骤演示了这一点。

先决条件

开始使用之前,请确保您已完成以下步骤。

  • 安装最新版本的 Helm 客户端。这些步骤是使用 Helm 版本 3.9.0 编写的。有关更多信息,请参阅安装 Helm

  • 您至少已在计算机上安装了 Amazon CLI 的版本 1.23.92.6.3。有关更多信息,请参阅安装或更新 Amazon CLI 的最新版本

  • 您已将 Helm Chart 推送到您的 Amazon ECR 存储库。有关更多信息,请参阅推送 Helm Chart

  • 您已配置 kubectl 以使用 Amazon EKS。有关更多信息,请参阅 Amazon EKS 用户指南中的为 Amazon EKS 创建 kubeconfig。如果集群的以下命令成功,说明您已正确配置。

    kubectl get svc

将 Amazon ECR 托管的 Helm Chart 安装到 Amazon EKS 集群

  1. 向托管 Helm Chart 的 Amazon ECR 注册表验证您的 Helm 客户端。必须针对每个注册表获得授权令牌,令牌有效期为 12 小时。有关更多信息,请参阅私有注册表身份验证

    aws ecr get-login-password \ --region us-west-2 | helm registry login \ --username AWS \ --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
  2. 安装图表。将 helm-test-chart 替换为您的存储库,并将 0.1.0 替换为 Helm 图表的标签。

    helm install ecr-chart-demo oci://aws_account_id.dkr.ecr.region.amazonaws.com/helm-test-chart --version 0.1.0

    输出应如下所示:

    NAME: ecr-chart-demo
    LAST DEPLOYED: Tue May 31 17:38:56 2022
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
  3. 验证图表安装。

    helm list -n default

    输出示例:

    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    ecr-chart-demo  default         1               2022-06-01 15:56:40.128669157 +0000 UTC deployed        helm-test-chart-0.1.0   1.16.0
  4. (可选)查看已安装的 Helm 图表 ConfigMap

    kubectl describe configmap helm-test-chart-configmap
  5. 完成后,您可以从集群中删除图表版本。

    helm uninstall ecr-chart-demo