本文說明從 Container Registry 遷移至 pkg.dev
Artifact Registry 存放區的必要步驟。
大多數 Container Registry 使用者應轉移至 gcr.io
Artifact Registry 上代管的存放區,而非 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 物件檢視者」 (roles/storage.objectViewer
) IAM 角色。
管理員或許也能透過自訂角色或其他預先定義的角色,將必要權限授予 Artifact Registry 服務帳戶。
使用者角色:
如要取得遷移至 pkg.dev
Artifact Registry 存放區所需的權限,請要求管理員在您要遷移的 Google Cloud 機構或專案中,授予您 Artifact Registry Container Registry 遷移管理員角色 (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
旗標重新啟動複製作業。