将 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.7.0 编写的。有关更多信息,请参阅安装 Helm

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

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

    kubectl get svc

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

  1. OCI 支持目前被视为实验性。要使用这些步骤中的命令,您必须在 Helm 客户端中启用 OCI 支持。

    export HELM_EXPERIMENTAL_OCI=1
  2. 向托管 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
  3. 将您的 Helm Chart 提取到本地缓存。

    helm pull oci://aws_account_id.dkr.ecr.region.amazonaws.com/helm-test-chart --version 0.1.0
  4. 安装图表。

    helm install ecr-chart-demo ./helm-test-chart

    输出应如下所示:

    NAME: ecr-chart-demo
    LAST DEPLOYED: Thu Sep 23 16:41:53 2021
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
  5. 验证图表安装。输出将是图表部署的 Kubernetes 资源的 YAML 表示。

    helm get manifest ecr-chart-demo
  6. (可选)查看已安装的 Helm Chart configmap。

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

    helm uninstall ecr-chart-demo