

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

# 将 Helm 图表推送到 Amazon ECR 私有存储库
<a name="push-oci-artifact"></a>

您可以将 Open Container Initiative（OCI）构件推送到 Amazon ECR 存储库。要查看此功能的示例，请使用以下步骤将 Helm 图表推送到 Amazon ECR。

有关在 Amazon EKS 中使用 Amazon ECR 托管的 Helm 图表的信息，请参阅[在 Amazon EKS 集群中安装 Helm 图表](using-helm-charts-eks.md)。

**将 Helm Chart 推送到 Amazon ECR 存储库**

1. 安装最新版本的 Helm 客户端。这些步骤是使用 Helm 版本 `3.18.6` 编写的。要与 Amazon EKS 支持的 Kubernetes 版本兼容，请使用 Helm 版本 3.9 或更高版本。有关更多信息，请参阅[安装 Helm](https://helm.sh/docs/intro/install/)。

1. 请按照以下步骤创建测试 Helm Chart。有关更多信息，请参阅 [Helm 文档 - 入门](https://helm.sh/docs/chart_template_guide/getting_started/)。

   1. 创建名为 `helm-test-chart` 的 Helm Chart 并清除 `templates` 目录的内容。

      ```
      helm create helm-test-chart
      rm -rf ./helm-test-chart/templates/*
      ```

   1. 在 `templates` 文件夹中创建 `ConfigMap`。

      ```
      cd helm-test-chart/templates
      cat <<EOF > configmap.yaml
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: helm-test-chart-configmap
      data:
        myvalue: "Hello World"
      EOF
      ```

1. 打包图表。输出将包含您在推送 Helm Chart 时使用的打包图表的文件名。

   ```
   cd ../..
   helm package helm-test-chart
   ```

   Output

   ```
   Successfully packaged chart and saved it to: /Users/username/helm-test-chart-0.1.0.tgz
   ```

1. 创建存储库以存储 Helm Chart。存储库的名称应与步骤 2 中创建 Helm Chart 时使用的名称匹配。有关更多信息，请参阅 [创建 Amazon ECR 私有存储库以存储映像](repository-create.md)。

   ```
   aws ecr create-repository \
        --repository-name helm-test-chart \
        --region us-west-2
   ```

1. 对要向其推送 Helm Chart 的 Amazon ECR 注册表验证 Docker 客户端的身份。必须针对每个注册表获得授权令牌，令牌有效期为 12 小时。有关更多信息，请参阅 [Amazon ECR 中的私有注册表身份验证](registry_auth.md)。

   ```
   aws ecr get-login-password \
        --region us-west-2 | helm registry login \
        --username AWS \
        --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
   ```

1. 使用 **helm push** 命令推送 Helm Chart。输出应包括 Amazon ECR 存储库 URI 和 SHA 摘要。

   ```
   helm push helm-test-chart-0.1.0.tgz oci://aws_account_id.dkr.ecr.region.amazonaws.com/
   ```

1. 描述您的 Helm Chart。

   ```
   aws ecr describe-images \
        --repository-name helm-test-chart \
        --region us-west-2
   ```

   在输出中，验证 `artifactMediaType` 参数指示正确的构件类型。

   ```
   {
       "imageDetails": [
           {
               "registryId": "aws_account_id",
               "repositoryName": "helm-test-chart",
               "imageDigest": "sha256:dd8aebdda7df991a0ffe0b3d6c0cf315fd582cd26f9755a347a52adEXAMPLE",
               "imageTags": [
                   "0.1.0"
               ],
               "imageSizeInBytes": 1620,
               "imagePushedAt": "2021-09-23T11:39:30-05:00",
               "imageManifestMediaType": "application/vnd.oci.image.manifest.v1+json",
               "artifactMediaType": "application/vnd.cncf.helm.config.v1+json"
           }
       ]
   }
   ```

1. （可选）有关其他步骤，请安装 Helm `ConfigMap` 并开始使用 Amazon EKS。有关更多信息，请参阅 [在 Amazon EKS 集群中安装 Helm 图表](using-helm-charts-eks.md)。