在 Amazon 中创建直通缓存规则 ECR - 亚马逊 ECR

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

在 Amazon 中创建直通缓存规则 ECR

对于每个包含您要缓存在 Amazon ECR 私有注册表中的图像的上游注册表,您必须创建一条直通缓存规则。

对于需要身份验证的上游注册表,您必须将凭据存储在 Secrets Manager 密钥中。您可以使用现有的 密钥或创建一个新密钥。你可以在亚马逊ECR控制台或 Secrets Manager 控制台中创建 Secrets Manager 密钥。要使用 Secrets Manager 控制台而不是亚马逊ECR控制台创建 Secrets Manager 密钥,请参阅将您的上游存储库凭证存储在 AWS Secrets Manager 密钥中

先决条件

  • 验证您是否具有创建直通缓存规则的适当IAM权限。有关信息,请参阅IAM将上游注册表与 Amazon ECR 私有注册表同步所需的权限

  • 对于需要身份验证的上游注册表:如果要使用现有密钥,请验证 Secrets Manager 密钥是否满足以下要求:

    • 机密的名称以开头ecr-pullthroughcache/。 AWS Management Console 仅显示带ecr-pullthroughcache/前缀的 Secrets Manager 密钥。

    • 密钥所在的账户和区域必须与拉取缓存规则所在的账户和区域相匹配。

要创建缓存提取规则 (AWS Management Console)

以下步骤展示了如何使用亚马逊ECR控制台创建直通缓存规则和 Secrets Manager 密钥。要使用 Secrets Manager 控制台创建密钥,请参阅将您的上游存储库凭证存储在 AWS Secrets Manager 密钥中

  1. 打开 Amazon ECR 控制台,网址为https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 在 “步骤 1:指定源页面” 中,对于 “注册表”,从上游注册表列表中选择 Amazon ECR Public、Kubernetes 或 Quay,然后选择 “下一步”。

  6. 在 “步骤 2:指定目标页面” 中,在 Amazon ECR 存储库前缀中,指定缓存从源公共注册表提取的图像时要使用的存储库命名空间前缀,然后选择下一步。默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  7. 步骤 3:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  8. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台,网址为https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,对于注册表,选择 Docker Hub,然后选择下一步

  6. 步骤 2:配置身份验证页面上,对于上游凭证,您必须以 AWS Secrets Manager 密钥存储 Docker Hub 的身份验证凭证。您可以指定现有密钥或使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 AWS 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步

      注意

      AWS Management Console 仅显示名称使用ecr-pullthroughcache/前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 AWS 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. Docker Hub 用户名中,请指定 Docker Hub 用户名。

      3. Docker Hub 访问令牌中,请指定 Docker Hub 访问令牌。有关如何创建 Docker Hub 访问令牌的更多信息,请参阅 Docker 文档中的 Create and manage access tokens

  7. 在 “步骤 3:指定目标页面” 中,在 Amazon ECR 存储库前缀中,指定缓存从源公共注册表提取的图像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台,网址为https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 在 “步骤 1:指定来源” 页面上,对于 “注册表”,选择 “GitHub 容器注册”,然后选择 “下一步”。

  6. 在 “步骤 2:配置身份验证” 页面上,对于上游凭证,您必须将 GitHub 容器注册表的身份验证凭据存储在 AWS Secrets Manager 密钥中。您可以指定现有密钥或使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 AWS 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步

      注意

      AWS Management Console 仅显示名称使用ecr-pullthroughcache/前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 AWS 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. 对于GitHub 容器注册表用户名,请指定您的 GitHub 容器注册表用户名。

      3. 对于GitHub 容器注册表访问令牌,请指定您的 GitHub 容器注册表访问令牌。有关创建 GitHub 访问令牌的更多信息,请参阅 GitHub 文档中的管理您的个人访问令牌

  7. 在 “步骤 3:指定目标页面” 中,在 Amazon ECR 存储库前缀中,指定缓存从源公共注册表提取的图像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台,网址为https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 步骤 1:指定来源页面上,执行以下操作。

    1. 注册表中,请选择Microsoft Azure 容器注册表

    2. 对于源注册表 URL,请指定 Microsoft Azure 容器注册表的名称,然后选择 “下一步”。

      重要

      您只需要指定前缀,因为系统已代表您填充 .azurecr.io 后缀。

  6. 步骤 2:配置身份验证页面上,对于上游凭证,您必须以 AWS Secrets Manager 密钥存储 Microsoft Azure 容器注册表的身份验证凭证。您可以指定现有密钥或使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 AWS 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步

      注意

      AWS Management Console 仅显示名称使用ecr-pullthroughcache/前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 AWS 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. Microsoft Azure 容器注册表用户名中,请指定 Microsoft Azure 容器注册表用户名。

      3. Microsoft Azure 容器注册表访问令牌中,请指定 Microsoft Azure 容器注册表访问令牌。有关如何创建 Microsoft Azure 容器注册表访问令牌的更多信息,请参阅 Microsoft Azure 文档中的创建令牌 - 门户

  7. 在 “步骤 3:指定目标页面” 中,在 Amazon ECR 存储库前缀中,指定缓存从源公共注册表提取的图像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

  1. 打开 Amazon ECR 控制台,网址为https://console.aws.amazon.com/ecr/

  2. 从导航栏中,选择要配置私有注册表设置的区域。

  3. 在导航窗格中,选择 Private registry(私有注册表)、Pull through cache(缓存提取)。

  4. Pull through cache configuration(缓存提取配置)页面上,选择 Add rule(添加规则)。

  5. 在 “步骤 1:指定来源” 页面上,对于 “注册表”,选择 “ GitLab 容器注册表”,然后选择 “下一步”。

  6. 在 “步骤 2:配置身份验证” 页面上,对于上游凭证,您必须将 GitLab 容器注册表的身份验证凭据存储在 AWS Secrets Manager 密钥中。您可以指定现有密钥或使用 Amazon ECR 控制台创建新密钥。

    1. 要使用现有密钥,请选择使用现有 AWS 密钥。对于密钥名称,使用下拉列表选择现有的密钥,然后选择下一步。有关使用 Secrets Manager 控制台创建 Secrets Manager 密钥的更多信息,请参阅将您的上游存储库凭证存储在 AWS Secrets Manager 密钥中

      注意

      AWS Management Console 仅显示名称使用ecr-pullthroughcache/前缀的 Secrets Manager 密钥。密钥还必须与缓存提取规则位于相同的账户和区域。

    2. 要创建新密钥,请选择创建 AWS 密钥,执行以下操作,然后选择下一步

      1. 密钥名称中,请为密钥指定一个描述性名称。密钥名称必须包含 1-512 个 Unicode 字符。

      2. 对于GitLab 容器注册表用户名,请指定您的 GitLab 容器注册表用户名。

      3. 对于GitLab 容器注册表访问令牌,请指定您的 GitLab 容器注册表访问令牌。有关创建 GitLab 容器注册表访问令牌的更多信息,请参阅 GitLab 文档中的个人访问令牌、群组访问令牌或项目访问令牌

  7. 在 “步骤 3:指定目标页面” 中,在 Amazon ECR 存储库前缀中,指定缓存从源公共注册表提取的图像时要使用的存储库命名空间,然后选择下一步

    默认情况下,已填充命名空间,但也可以指定自定义命名空间。

  8. 步骤 4:审核并创建页面上,审核缓存提取规则配置,然后选择创建

  9. 对要创建的每个缓存提取重复上一步骤。单独为每个区域创建了缓存提取规则。

要创建缓存提取规则 (AWS CLI)

使用 create-pull-through-cache- AWS CLI rule 命令为亚马逊ECR私有注册表创建直通缓存规则。对于需要身份验证的上游注册表,您必须以 Secrets Manager 密钥存储凭证。要使用 Secrets Manager 控制台创建密钥,请参阅将您的上游存储库凭证存储在 AWS Secrets Manager 密钥中

针对每个支持的上游注册表提供以下示例。

以下示例为 Amazon ECR 公共注册表创建了通过缓存规则。它指定了存储库前缀 ecr-public,这导致使用缓存提取规则创建的每个存储库都具有 ecr-public/upstream-repository-name 命名方案。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix ecr-public \ --upstream-registry-url public.ecr.aws \ --region us-east-2

以下示例为 Kubernetes 公有注册表创建了一个缓存提取规则。它指定了存储库前缀 kubernetes,这导致使用缓存提取规则创建的每个存储库都具有 kubernetes/upstream-repository-name 命名方案。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix kubernetes \ --upstream-registry-url registry.k8s.io \ --region us-east-2

以下示例为 Quay 公有注册表创建了一个缓存提取规则。它指定了存储库前缀 quay,这导致使用推送缓存规则创建的每个存储库都具有命名方案 quay/upstream-repository-name

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix quay \ --upstream-registry-url quay.io \ --region us-east-2

以下示例为 Docker Hub 注册表创建了一个缓存提取规则。它指定了存储库前缀 docker-hub,这导致使用缓存提取规则创建的每个存储库都具有 docker-hub/upstream-repository-name 命名方案。您必须指定包含您的 Docker Hub 凭证的密钥的完整亚马逊资源名称 (ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix docker-hub \ --upstream-registry-url registry-1.docker.io \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

以下示例为 GitHub 容器注册表创建了通过缓存规则。它指定了存储库前缀 docker-hub,这导致使用缓存提取规则创建的每个存储库都具有 github/upstream-repository-name 命名方案。您必须指定包含您的 GitHub 容器注册凭证的密钥的完整 Amazon 资源名称 (ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix github \ --upstream-registry-url ghcr.io \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

以下示例为 Microsoft Azure 容器注册表创建了拉取缓存规则。它指定了存储库前缀 azure,这导致使用缓存提取规则创建的每个存储库都具有 azure/upstream-repository-name 命名方案。你必须指定包含你的 Microsoft Azure 容器注册表凭证的密钥的完整亚马逊资源名称 (ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix azure \ --upstream-registry-url myregistry.azurecr.io \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

以下示例为 GitLab 容器注册表创建了通过缓存规则。它指定了存储库前缀 gitlab,这导致使用缓存提取规则创建的每个存储库都具有 gitlab/upstream-repository-name 命名方案。您必须指定包含您的 GitLab 容器注册凭证的密钥的完整 Amazon 资源名称 (ARN)。

aws ecr create-pull-through-cache-rule \ --ecr-repository-prefix gitlab \ --upstream-registry-url registry.gitlab.com \ --credential-arn arn:aws:secretsmanager:us-east-2:111122223333:secret:ecr-pullthroughcache/example1234 \ --region us-east-2

后续步骤

创建直通缓存规则后,接下来的步骤如下: