管理 Helm 資訊套件

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

事前準備

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

    執行 helm version 來驗證版本。

  5. 設定 Helm 以透過 Artifact Registry 進行authenticate

建立或取得圖表

本文件著重於管理圖表圖片,並假設您已建立圖表或熟悉建立圖表。如要進一步瞭解如何在 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 不支援使用標籤來提取圖表。

安裝圖表

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

後續步驟