本文档介绍了从 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
代码库。
准备工作
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Enable the Artifact Registry 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 制品库
如需将
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
标志重新开始复制映像。