將 Helm 3 chart 儲存為 OCI 容器映像檔,即可像管理 Artifact Registry 中的 Docker 映像檔一樣管理這些 chart。您可以上傳 (推送)、下載 (提取)、列出、標記及刪除圖表,管理其在存放區中的生命週期。
事前準備
- 如果目標存放區不存在,請建立新的存放區。選擇 Docker 做為存放區格式。
- 確認您具備存放區的必要權限。
- (選用) 設定 Google Cloud CLI 指令的預設值。
安裝 Helm 3.8.0 以上版本。在舊版 Helm 中,對 OCI 格式圖表的支援是一項實驗功能。
執行
helm version驗證版本。設定 Helm,向 Artifact Registry 驗證。
建立或取得圖表
本文件著重於管理圖表圖片,並假設您已有圖表或熟悉圖表建立方式。如要進一步瞭解如何在 Artifact Hub 中建立圖表或取得公開圖表,請參閱 Helm 說明文件中的下列資訊。
- 使用 Helm 說明如何從公開 Artifact Hub 取得圖表,並在安裝前自訂圖表。
- 圖表:說明圖表和建立圖表。
- Chart 最佳做法指南說明瞭慣例和最佳做法。
封裝圖表
您必須先將圖表封裝為圖表封存檔,才能將圖表推送至 Artifact Registry。
切換至圖表所在的目錄。
封裝圖表。
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
提取圖表
如要提取圖表,請按照下列步驟操作:
執行下列指令,提取圖表封存檔:
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 存放區,這兩種構件類型都會顯示在清單中。
控制台
如要查看存放區中的映像檔,請按照下列步驟操作:
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
按一下含有容器映像檔的存放區。
按一下圖片即可查看版本。
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 的映像檔,請按照下列步驟操作:
控制台
在 Google Cloud 控制台中開啟「Repositories」(存放區) 頁面。
按一下映像檔名稱,即可查看該映像檔的版本。
選取要刪除的版本。
按一下 [刪除]。
在確認對話方塊中,點選「刪除」。
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會移除套用至圖片集錦的所有標記。這個旗標可讓您在下列情況下強制刪除映像檔版本:- 您指定了標記,但還有其他標記與映像檔版本相關聯。
- 您指定的映像檔摘要至少有一個標記。
後續步驟
- 瞭解如何管理 Docker 映像檔。
- 下載存放區中的個別檔案,不需使用 Helm 指令。