自动从 Container Registry 迁移到 Artifact Registry

本文档介绍了从 Container Registry 过渡到 pkg.dev Artifact Registry 代码库所需的步骤。

大多数 Container Registry 用户应改用托管在 Artifact Registry 上的 gcr.io 代码库,而不是 pkg.dev 代码库,因此,只有在您了解 Artifact Registry 中 gcr.io 代码库和 pkg.dev 代码库之间的区别后,才能按照这些说明操作。

自动迁移工具可以根据您选择的转换路径执行以下操作:

  • 在相应区域的 Artifact Registry 中为您的 gcr.io 项目创建 pkg.dev 代码库。
  • 为代码库建议 IAM 政策,并根据用户偏好设置应用或跳过应用。
  • 将存储在 Container Registry 中的所有容器映像复制到 Artifact Registry pkg.dev 代码库。

准备工作

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. Enable the Artifact Registry API.

    Enable the API


    如果您跳过此步骤,自动迁移工具会提示您启用 Artifact Registry API。

所需的角色

使用自动迁移工具进行所有转换都需要拥有以下角色。

服务账号角色

对于您要迁移到 Artifact Registry 的每个项目,您都必须向 Artifact Registry 服务账号授予以下角色。

为了确保 Artifact Registry 服务账号具有从 Container Registry 复制映像到 Artifact Registry 所需的权限,请让您的管理员向 Artifact Registry 服务账号授予 Container Registry 项目的 Storage Object Viewer (roles/storage.objectViewer) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过自定义角色或其他预定义角色向 Artifact Registry 服务账号授予所需的权限。

用户角色

如需获得迁移到 pkg.dev Artifact Registry 仓库所需的权限,请让您的管理员向您授予您要迁移的 Google Cloud 组织或项目的 Artifact Registry Container Registry Migration Admin (roles/artifactregistry.containerRegistryMigrationAdmin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

迁移到 pkg.dev Artifact Registry 制品库

  1. 如需将 gcr.io 项目迁移到 pkg.dev Artifact Registry 代码库,请运行以下命令:

    gcloud artifacts docker upgrade migrate \
        --from-gcr=GCR_HOSTNAME/GCR_PROJECT \
        --to-pkg-dev=AR_PROJECT/AR_REPOSITORY
    

    替换以下内容:

    • GCR_HOSTNAME 替换为 Container Registry 主机名。主机名取决于容器映像的存储位置:

      • gcr.io 在美国托管映像。
      • us.gcr.io 在美国托管映像,使用的存储桶与 gcr.io 托管的映像不同。
      • eu.gcr.io 在欧盟的成员国托管映像。
      • asia.gcr.io 在亚洲托管映像。
    • GCR_PROJECT 替换为您的 Container Registry Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

    • AR_PROJECT 替换为您启用了 Artifact Registry API 的 Google Cloud 项目 ID。

    • AR_REPOSITORY 替换为您的 Artifact Registry 制品库的名称。

迁移工具会完成以下步骤:

  • 如果 Artifact Registry 仓库不存在,则创建该仓库。
  • 为代码库建议 IAM 政策,并根据用户偏好设置应用或跳过应用。
  • 将指定 Container Registry 区域和项目中的映像复制到您的 Artifact Registry 代码库。

如果您只想复制在过去 30 到 180 天内从 Container Registry 拉取的映像,可以添加 --recent-images=DAYS 标志。将 DAYS 替换为工具应检查拉取操作的天数(介于 30 到 150 天之间)。

如果您遇到错误或超时,可以放心地重新运行该命令,系统会跳过已完成的步骤。

复制图片

迁移工具会在您运行时自动复制容器映像,但如果您想跳过自动迁移的所有其他步骤,并使用该工具将映像复制到 Artifact Registry,则可以传递 --copy-only 标志。

如需将映像从 Container Registry 复制到 pkg.dev Artifact Registry 仓库,请运行以下命令:

gcloud artifacts docker upgrade migrate \
    --from-gcr=GCR_HOSTNAME/GCR_PROJECT \
    --to-pkg-dev=AR_PROJECT/AR_REPOSITORY \
    --copy-only

替换以下内容:

  • GCR_HOSTNAME 替换为 Container Registry 主机名。主机名取决于容器映像的存储位置:

    • gcr.io 在美国托管映像。
    • us.gcr.io 在美国托管映像,使用的存储桶与 gcr.io 托管的映像不同。
    • eu.gcr.io 在欧盟的成员国托管映像。
    • asia.gcr.io 在亚洲托管映像。
  • GCR_PROJECT 替换为您的 Container Registry Google Cloud 项目 ID。如果您的项目 ID 包含英文冒号 (:),请参阅网域级项目

  • AR_PROJECT 替换为您启用了 Artifact Registry API 的 Google Cloud 项目 ID。

  • AR_REPOSITORY 替换为您的 Artifact Registry 制品库的名称。

该工具会跳过所有迁移步骤,并将映像从 Container Registry 中的指定位置和项目复制到您的 Artifact Registry 代码库。

如果您在复制映像过程中发生错误或超时,还可以使用 --copy-only 标志重新开始复制映像。

后续步骤