本頁說明如何管理儲存為 OCI 容器映像檔的 Helm 3 資訊套件,包括推送 (上傳)、提取 (下載)、列出、標記及刪除資訊套件。
事前準備
- 如果目標存放區不存在,請建立新的存放區。選擇 Docker 做為存放區格式。
- 確認您具備存放區的必要權限。
- (選用) 設定 Google Cloud CLI 指令的預設值。
安裝 Helm 3.8.0 以上版本。 在舊版 Helm 中,OCI 格式的圖表支援功能屬於實驗功能。
執行
helm version來驗證版本。設定 Helm,以便向 Artifact Registry 驗證。
建立或取得圖表
本文件著重於管理圖表圖片,並假設您已有圖表,或熟悉如何建立圖表。如要進一步瞭解如何建立圖表,或在 Artifact Hub 中取得公開圖表,請參閱 Helm 說明文件中的下列資訊。
封裝圖表
如要將圖表推送至 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 不支援使用標記拉取 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-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 指令。