本文档介绍了从 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.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
如果您跳过此步骤,自动迁移工具会提示您启用 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
标志重新开始复制映像。