自动从 Container Registry 迁移到 Artifact Registry

使用自动迁移工具从 Container Registry 迁移到 托管在 Artifact Registry 或标准 Artifact Registry 上的 gcr.io 代码库 代码库

自动迁移工具可以执行以下操作,具体取决于 您选择的转换路径:

  • 在 Artifact Registry 中创建 gcr.io 代码库或标准代码库 相应区域中列出的每个 gcr.io 项目。
  • 为每个代码库建议 IAM 政策并应用 政策或跳过应用程序,具体取决于用户偏好设置。
  • 将所有来自 gcr.io 端点的流量重定向到 Artifact Registry。
  • 将存储在 Container Registry 中的所有容器映像复制到 Artifact Registry gcr.io 代码库或标准代码库,即使您已启用 重定向。

准备工作

  1. 安装 Google Cloud CLI。
  2. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  3. 选择一个过渡选项
    • 如果您要改用托管在 Artifact Registry 上的 gcr.io 代码库, 在 Container Registry 项目中启用 Artifact Registry API 迁移。在以下情况下,该工具还会提示您启用 Artifact Registry API 您可以跳过此步骤

      启用 Artifact Registry API。

      启用 API

    • 如果您要改用标准 Artifact Registry 代码库,请启用 为项目迁移 Artifact Registry API Container Registry 容器映像您可以使用 已启用 Container Registry 或其他项目。

      启用 Artifact Registry API。

      启用 API

所需的角色

使用自动 迁移工具

Artifact Registry 服务账号所需的角色

为了确保 Artifact Registry 服务账号拥有必要的 拥有将映像从 Container Registry 复制到 Artifact Registry 的权限, 请让管理员向 Artifact Registry 服务账号授予 针对 Container Registry 项目的 Storage Object Viewer (roles/storage.objectViewer) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

您的管理员或许还可以向 Artifact Registry 服务账号提供 通过自定义 或其他预定义的 角色。

生成 IAM 建议所需的角色

为了获得分析允许政策所需的权限, 请让管理员向您授予 针对您要迁移的 Container Registry 项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理访问权限

这些预定义角色包含 分析允许政策所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

分析允许政策需要以下权限:

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • 如需分析使用自定义 IAM 角色的政策,请执行以下操作: iam.roles.get
  • 如需使用 Google Cloud CLI 分析政策,请执行以下操作: serviceusage.services.use

您也可以使用自定义角色或其他预定义角色来获取这些权限。

您可以在不同资源上授予以下角色,具体取决于您的 转换选项。

gcr.io 代码库

如需获取转换为托管在 Artifact Registry 上的 gcr.io 代码库所需的权限, 请让管理员向您授予 以下 IAM 角色:

  • 创建 Artifact Registry 代码库并授予对各个代码库的访问权限: Artifact Registry 管理员 (roles/artifactregistry.admin) 针对包含 Container Registry 映像的 Google Cloud 项目
  • 查看和管理应用于 Cloud Storage 存储分区的现有 Container Registry 配置: Storage Admin (roles/storage.admin) 针对包含 Container Registry 映像的 Google Cloud 项目

如需详细了解如何授予角色,请参阅管理访问权限

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

标准代码库

如需获取转换为标准 Artifact Registry 代码库所需的权限, 请让管理员向您授予 以下 IAM 角色:

  • 创建 Artifact Registry 代码库并授予对各个代码库的访问权限: Artifact Registry 管理员 (roles/artifactregistry.admin) 在启用了 Artifact Registry API 的 Google Cloud 项目中
  • 查看和管理应用于 Cloud Storage 存储分区的现有 Container Registry 配置: Storage Admin (roles/storage.admin) 针对包含 Container Registry 映像的 Google Cloud 项目

如需详细了解如何授予角色,请参阅管理访问权限

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

迁移到托管在 Artifact Registry 上的 gcr.io 代码库

您可以迁移单个 Google Cloud 项目或多个 Google Cloud 项目 同时使用gcloud artifacts docker upgrade migrate 命令。

如需迁移到 gcr.io 代码库,请运行以下命令。

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS

其中,PROJECTS 是您要创建的单个项目的 ID 迁移到托管在 Artifact Registry 上的 gcr.io 代码库,或以逗号分隔 您要迁移到托管在 gcr.io 代码库的项目 ID 列表 Artifact Registry

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

  • 在 Artifact Registry 中为每个以下项创建 gcr.io 代码库: 相应区域中列出的 gcr.io 项目。
  • 为每个代码库建议 IAM 政策,并应用 政策或根据用户偏好设置跳过应用程序。
  • 将所有来自 gcr.io 端点的流量重定向到 Artifact Registry。 Artifact Registry 通过复制缺失的映像来暂时提供这些映像 Container Registry,直到所有容器映像都复制到 Artifact Registry
  • 将存储在 gcr.io 存储分区中的所有容器映像复制到新创建的 托管在 Artifact Registry 上的 gcr.io 代码库。
  • 停用请求时复制。上托管的 gcr.io 代码库 Artifact Registry 不再依赖于 Container Registry。

如果您只想将过去 30 天内从 Container Registry 拉取的映像复制到 您可以在 150 天内添加 --recent-images=DAYS 标志。 将 DAYS 替换为在 30 到 150 之间 工具应检查是否发生拉入。

如果您想分别复制特定数量的近期上传版本 图片,可以添加 --last-uploaded-versions=VERSIONS 标志。将 VERSIONS 替换为您要复制的版本数 每个图像。如果在复制过程中上传了新图片,则图片数量会超过 可能会复制指定的 个版本。

--recent-images 标志和 --last-uploaded-versions 标志相互作用 不能同时使用。

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

迁移到标准 Artifact Registry 代码库

  1. 如需将 gcr.io 项目迁移到 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 替换为已启用的 Google Cloud 项目 ID Artifact Registry API

    • AR_REPOSITORY 替换为您的 Artifact Registry 代码库的名称。

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

  • 创建 Artifact Registry 仓库(如果仓库尚未创建) 存在。
  • 为代码库建议 IAM 政策,并应用 政策或根据用户偏好设置跳过应用程序。
  • 复制指定 Container Registry 区域中的映像,并且 推送到 Artifact Registry 代码库

如果您只想将过去 30 天内从 Container Registry 拉取的映像复制到 您可以在 150 天内添加 --recent-images=DAYS 标志。 将 DAYS 替换为在 30 到 150 之间 工具应检查是否发生拉入。

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

复制图片

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

将映像从 Container Registry 复制到托管在 Artifact Registry,请运行以下命令:

gcloud artifacts docker upgrade migrate \
    --projects=PROJECTS \
    --copy-only

其中 PROJECTS 是您要创建的单个项目的 ID 迁移到托管在 Artifact Registry 上的 gcr.io 代码库,或以逗号分隔 您要迁移到托管在 gcr.io 代码库的项目 ID 列表 Artifact Registry

该工具会跳过所有迁移步骤,并复制 从 Container Registry 到托管在 gcr.io 上的代码库 Artifact Registry

如需将映像从 Container Registry 复制到标准 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 替换为已启用的 Google Cloud 项目 ID Artifact Registry API

  • AR_REPOSITORY 替换为您的 Artifact Registry 代码库的名称。

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

您也可以使用 --copy-only 标志重新开始复制图片,如果您有 发生错误或超时。

后续步骤