管理 Helm 資訊套件

將 Helm 3 chart 儲存為 OCI 容器映像檔,即可像管理 Artifact Registry 中的 Docker 映像檔一樣管理這些 chart。您可以上傳 (推送)、下載 (提取)、列出、標記及刪除圖表,管理其在存放區中的生命週期。

事前準備

  1. 如果目標存放區不存在,請建立新的存放區。選擇 Docker 做為存放區格式。
  2. 確認您具備存放區的必要權限。
  3. (選用) 設定 Google Cloud CLI 指令的預設值。
  4. 安裝 Helm 3.8.0 以上版本。在舊版 Helm 中,對 OCI 格式圖表的支援是一項實驗功能。

    執行 helm version 驗證版本。

  5. 設定 Helm,向 Artifact Registry 驗證。

建立或取得圖表

本文件著重於管理圖表圖片,並假設您已有圖表或熟悉圖表建立方式。如要進一步瞭解如何在 Artifact Hub 中建立圖表或取得公開圖表,請參閱 Helm 說明文件中的下列資訊。

封裝圖表

您必須先將圖表封裝為圖表封存檔,才能將圖表推送至 Artifact Registry。

  1. 切換至圖表所在的目錄。

  2. 封裝圖表。

    helm package CHART-PATH
    

    將 CHART-PATH 替換為 Chart.yaml 檔案所在目錄的路徑。

Helm 會使用圖表名稱和版本做為封存檔案名稱。舉例來說,如果圖表名稱為 my-chart,版本號碼為 0.1.0,則套件名稱為 my-chart-0.1.0.tgz。

現在可以將圖表推送至 Artifact Registry。

推送圖表

封裝圖表後,即可推送至 Artifact Registry。

執行下列指令來推送圖表:

helm push my-chart-0.1.0.tgz oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

替換下列值:

  • LOCATION 是存放區的單一區域或多區域位置。
  • PROJECT 是您的 Google Cloud 專案 ID。如果專案 ID 包含半形冒號 (:),請參閱「網域範圍專案」。
  • REPOSITORY 是存放區的名稱。

Helm 會使用 Chart.yaml 的資訊,做為 OCI 容器映像檔名稱和標記。請參考以下範例指令:

helm push my-chart-0.1.0.tgz oci://us-west1-docker.pkg.dev/my-project/my-repo

Helm 會將圖表封存檔上傳為映像檔 my-chart,並加上 0.1.0 標記。

如要確認推送作業是否成功,請列出存放區中的映像檔。

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

提取圖表

如要提取圖表,請按照下列步驟操作:

  1. 執行下列指令,提取圖表封存檔:

    helm pull oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
        --version VERSION
    

    如要提取圖表封存檔並擷取內容,請新增 --untar 旗標。

    helm pull oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
        --version VERSION \
        --untar
    

    替換下列值:

  • LOCATION 是存放區的單一區域或多區域位置。
  • PROJECT 是您的 Google Cloud 專案 ID。 如果專案 ID 包含半形冒號 (:),請參閱「網域範圍專案」。
  • REPOSITORY 是儲存映像檔的存放區名稱。
  • IMAGE 是存放區中的映像檔名稱。
  • VERSION 是圖表的語意版本。必須提供這個旗標。Helm 不支援使用標記提取圖表。

安裝圖表

使用 helm install 指令,安裝儲存在 Artifact Registry 中的圖表。

helm install RELEASE \
    oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
    --version VERSION

以下範例使用 us-west1-docker.pkg.dev/nyap-test/helm-repo/my-chart 圖表的 0.1.0 版本,安裝名為 release1 的版本:

helm install release1 oci://us-west1-docker.pkg.dev/nyap-test/helm-repo/my-chart --version 0.1.0

排行榜

您可以使用 Google Cloud console 或指令列列出圖表。如果將容器映像檔和圖表儲存在同一個 Docker 存放區,這兩種構件類型都會顯示在清單中。

控制台

如要查看存放區中的映像檔,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 按一下含有容器映像檔的存放區。

  3. 按一下圖片即可查看版本。

gcloud

如要在設定預設值後,列出預設專案、存放區和位置中的所有映像檔,請執行下列指令:

gcloud artifacts docker images list

如要列出特定位置存放區中的映像檔,請執行下列指令:

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY

如要列出特定映像檔的所有摘要和標記,請執行下列指令:

gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--include-tags

替換下列值:

  • LOCATION 是存放區的單一區域或多區域位置。
  • PROJECT 是您的 Google Cloud 專案 ID。如果專案 ID 包含半形冒號 (:),請參閱「網域範圍專案」。
  • REPOSITORY 是儲存映像檔的存放區名稱。
  • IMAGE 是存放區中的映像檔名稱。
  • --include-tags 會顯示所有版本的映像檔,包括摘要和標記。如果省略這個旗標,傳回的清單只會包含頂層容器映像檔。

舉例來說,假設某張圖片具有下列特徵:

  • 存放區位置:us-west1
  • 存放區名稱:my-repo
  • 專案 ID:my-project
  • 映像檔名稱:my-image

完整的存放區名稱如下:

us-west1-docker.pkg.dev/my-project/my-repo

完整映像檔名稱如下:

us-west1-docker.pkg.dev/my-project/my-repo/my-image

如要進一步瞭解映像檔名稱格式,請參閱「存放區和映像檔名稱」。

正在列出檔案

您可以列出存放區中的檔案、指定容器映像檔所有版本中的檔案,或特定版本映像檔中的檔案。

在下列所有指令中,您可以在指令中加入 --limit 旗標,設定要傳回的檔案數量上限。

如要在設定預設值後,列出預設專案、存放區和位置中的所有檔案,請執行下列指令:

gcloud artifacts files list

如要列出指定專案、存放區和位置中的檔案,請執行下列指令:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

如要列出特定容器映像檔所有版本的檔案,請執行下列指令:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

如要列出特定容器映像檔版本的檔案,請按照下列步驟操作:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION
如要列出特定標記的檔案,請按照下列步驟操作:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --tag=TAG

替換下列值:

  • LOCATION:存放區的區域或多區域位置。
  • PROJECT:您的 Google Cloud 專案 ID。 如果專案 ID 包含半形冒號 (:),請參閱「網域範圍專案」。
  • REPOSITORY:儲存映像檔的存放區名稱。
  • PACKAGE:映文件名稱。
  • VERSION:映像檔摘要,開頭為 sha256: 的字串。
  • TAG:與容器映像檔相關聯的標記。

刪除映像檔

在 Artifact Registry 存放區中,您可以刪除整個容器映像檔,或刪除與標記或摘要相關聯的特定映像檔版本。圖片一經刪除即無法復原。

如要刪除儲存在 Artifact Registry 的映像檔,請按照下列步驟操作:

控制台

  1. 在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。

    開啟「存放區」頁面

  2. 按一下映像檔名稱,即可查看該映像檔的版本。

  3. 選取要刪除的版本。

  4. 按一下 [刪除]。

  5. 在確認對話方塊中,點選「刪除」。

gcloud

如要刪除映像檔和所有標記,請執行下列指令:

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE --delete-tags

如要刪除特定映像檔版本,請使用下列其中一個指令。

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE:TAG [--delete-tags]

或

gcloud artifacts docker images delete LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE@IMAGE-DIGEST [--delete-tags]

地點

  • LOCATION 是存放區的單一區域或多區域位置。
  • PROJECT 是您的 Google Cloud 專案 ID。 如果專案 ID 包含半形冒號 (:),請參閱「網域範圍專案」。
  • REPOSITORY 是儲存映像檔的存放區名稱。
  • IMAGE 是存放區中的映像檔名稱。
  • TAG 是要刪除的版本標記。如果有多個標記與同一個映像檔版本相關聯,您必須加入 --delete-tags,才能在不先移除標記的情況下刪除映像檔版本。
  • IMAGE-DIGEST 是要刪除版本的 sha256 雜湊值。如果標記與映像檔摘要相關聯,您必須加入 --delete-tags,才能在不先移除標記的情況下刪除映像檔版本。
  • --delete-tags 會移除套用至圖片集錦的所有標記。這個旗標可讓您在下列情況下強制刪除映像檔版本:
    • 您指定了標記,但還有其他標記與映像檔版本相關聯。
    • 您指定的映像檔摘要至少有一個標記。

後續步驟