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

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

在 Amazon EKS 中使用 Amazon ECR 映像

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

  • 与您的工作线程节点一起使用的 Amazon EKS 工作线程节点 IAM 角色 (NodeInstanceRole) 必须对 Amazon ECR 具有以下 IAM 策略权限。

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

    如果您使用 eksctlAmazon EKS 入门指南中的 AWS CloudFormation 模板来创建集群和工作线程节点组,则默认情况下,这些 IAM 权限将应用于您的工作线程节点 IAM 角色。

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

安装托管在上的Helm图表 Amazon ECR 配 Amazon EKS

您的Helm图表托管于 Amazon ECR 可以安装在您的 Amazon EKS 群集。以下步骤演示了此。

Prerequisites

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

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

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

  • 您已配置 kubectl 与 Amazon EKS. 有关更多信息,请参阅 创建 kubeconfig 为 Amazon EKSAmazon EKS 用户指南. 如果以下命令成功用于您的群集,则表示您已正确配置。

    kubectl get svc

安装 Amazon ECR 将Helmchart托管到 Amazon EKS 群集

  1. 在Helm3客户端中启用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图表拉到本地缓存中。

    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. (可选)查看您的Helm图表在 Amazon EKS pod.

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

    helm uninstall ecr-chart-demo