本页面介绍了如何管理以 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
替换以下值:
Helm 使用 Chart.yaml 中的信息作为 OCI 容器映像名称和标记。请考虑以下示例命令:
helm push my-chart-0.1.0.tgz oci://-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。
- REPOSITORY 是存储了映像的代码库的名称。
- IMAGE 是代码库中的映像名称。
- VERSION 是图表的语义版本。此标志是必需的。Helm 不支持使用标记拉取图表。
安装图表
使用 helm install 命令安装存储在 Artifact Registry 中的图表。
helm install RELEASE \
oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
--version VERSION
以下示例使用图表 -docker.pkg.dev/nyap-test/helm-repo/my-chart 的版本 0.1.0
安装名为 release1 的版本:
helm install release1 oci://-docker.pkg.dev/nyap-test/helm-repo/my-chart --version 0.1.0
列出图表
您可以使用 Google Cloud console 或命令行列出图表。如果您将容器映像和图表存储在同一 Docker 代码库中,则这两种工件类型都会显示在列表中。
控制台
如需查看代码库中的映像,请执行以下操作:
在 Google Cloud 控制台中打开代码库 页面。
点击包含容器映像的制品库。
点击映像即可查看其版本。
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。
- REPOSITORY 是存储了映像的代码库的名称。
- IMAGE 是代码库中的映像名称。
--include-tags会显示映像的所有版本,包括摘要和标记。如果省略此标志,则返回的列表仅包含顶级容器映像。
例如,假设一个映像具有以下特征:
- 代码库位置:
- 代码库名称:
my-repo - 项目 ID:
my-project - 映像名称:
my-image
完整的代码库名称为:
-docker.pkg.dev/my-project/my-repo
完整的映像名称为:
-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。REPOSITORY:存储了映像的代码库的名称。PACKAGE:映像的名称。VERSION:映像摘要,一个以sha256:开头的字符串。TAG:与容器映像关联的标记。
删除映像
在 Artifact Registry 代码库中,您可以删除整个容器映像,也可以删除与标记或摘要关联的特定映像版本。删除映像后,您便无法撤消此操作。
如需删除存储在 Artifact Registry 中的映像,请执行以下操作:
控制台
在 Google Cloud 控制台中打开代码库 页面。
点击映像名称即可查看该映像的版本。
选择您要删除的版本。
点击删除 。
在确认对话框中,点击删除 。
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。
- REPOSITORY 是存储了映像的代码库的名称。
- IMAGE 是代码库中的映像名称。
- TAG 是您要删除的版本的标记。如果多个标记与同一映像版本相关联,则您必须添加
--delete-tags才能删除映像版本,而无需先移除标记。 - IMAGE-DIGEST 是您要删除的版本的 sha256 哈希值。如果某个标记与映像摘要相关联,则您必须添加
--delete-tags才能删除映像版本,而无需先移除标记。 --delete-tags会移除应用于图片集锦的所有标记。借助此标志,您可以在以下情况下强制删除映像版本:- 您指定了一个标记,但还有其他标记与该映像版本相关联。
- 您指定的映像摘要至少具有一个标记。