自動從 Container Registry 遷移至 Artifact Registry

本文說明從 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 存放區。

事前準備

  1. Install the Google Cloud CLI.

  2. 如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

  3. 如要初始化 gcloud CLI,請執行下列指令:

    gcloud init
  4. Enable the API


    如果您略過這個步驟,自動遷移工具會提示您啟用 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 存放區

  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 旗標重新啟動複製作業。

後續步驟