管理 Helm 資訊套件

本頁說明如何管理儲存為 OCI 容器映像檔的 Helm 3 資訊套件,包括推送 (上傳)、提取 (下載)、列出、標記及刪除資訊套件。

事前準備

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

    執行 helm version 來驗證版本。

  5. 設定 Helm,以便向 Artifact Registry 驗證

建立或取得圖表

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

  • 使用 Helm 一文說明如何從公開的 Artifact Hub 取得圖表,以及如何在安裝圖表前自訂圖表。
  • 圖表說明圖表和建立圖表。
  • 圖表最佳做法指南說明瞭慣例和最佳做法。

封裝圖表

如要將圖表推送至 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 不支援使用標記拉取 Chart。

安裝圖表

使用 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-chart0.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 可移除套用至圖片集錦的所有標記。在下列情況下,您可以使用這個旗標強制刪除圖片集錦:
    • 您指定了標記,但映像檔版本還有其他相關聯的標記。
    • 您指定的映像檔摘要至少有一個標記。

後續步驟