将亚马逊 ECR 图片与亚马逊 EKS 一起使用 - Amazon ECR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将亚马逊 ECR 图片与亚马逊 EKS 一起使用

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

  • 亚马逊 EKS 工作节点 IAM 角色 (NodeInstanceRole) 必须对 Amazon ECR 具有以下 IAM 策略权限。

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

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

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

使用亚马逊 EKS 安装亚马逊 ECR 托管的头盔图表

您在亚马逊 ECR 中托管的 Helm 图表可以安装在您的亚马逊 EKS 集群上。以下步骤演示了这一点。

Prerequisites

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

  • 安装 Helm 客户端版本 3。有关更多信息,请参阅 。安装头盔

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

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

    kubectl get svc

将亚马逊 ECR 托管的头盔图表安装到 Amazon EKS 集群

  1. 在 Helm 3 客户端中启用 OCI 支持。

    export HELM_EXPERIMENTAL_OCI=1
  2. 向托管 Helm 图表的 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 pull aws_account_id.dkr.ecr.region.amazonaws.com/repository-name:mychart
  4. 将图表导出到本地目录。在此示例中,我们使用名为charts

    helm chart export aws_account_id.dkr.ecr.region.amazonaws.com/repository-name:mychart --destination ./charts
  5. 安装图表。

    helm install ecr-chart-demo ./mychart

    输出应该类似于以下内容:

    NAME: ecr-chart-demo
    LAST DEPLOYED: Wed Sep  2 14:32:07 2020
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
  6. 验证图表安装。输出将是图表部署的 Kubernetes 资源的 YAML 表示。

    helm get manifest ecr-chart-demo
  7. (可选)查看您在亚马逊 EKS 窗格中运行的头盔图表。

    kubectl get pods --all-namespaces
  8. 完成后,您可以从集群中删除图表版本。

    helm uninstall ecr-chart-demo