管理 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 不支持使用标记拉取图表。

安装图表

使用 Helm 安装存储在 Artifact Registry 中的图表 安装 命令。

helm install RELEASE \
    oci://LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/IMAGE \
    --version VERSION

以下示例使用版本 0.1.0 安装名为 release1 的版本 (位于图表 us-west1-docker.pkg.dev/nyap-test/helm-repo/my-chart 中):

helm install release1 oci://us-west1-docker.pkg.dev/nyap-test/helm-repo/my-chart --version 0.1.0

列表图表

您可以使用 Google Cloud 控制台或命令行列出图表。如果您 将容器映像和图表存储在同一个 Docker 代码库中, 工件类型

控制台

如需查看代码库中的映像,请执行以下操作:

  1. 打开 Google Cloud 控制台中的制品库页面。

    打开“代码库”页面

  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 控制台中的制品库页面。

    打开“代码库”页面

  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 会移除应用于映像版本的所有标记。借助此标志,您可以在以下情况下强制删除映像版本:
    • 您指定了一个标记,但有其他标记与映像版本相关联。
    • 您指定的映像摘要至少具有一个标记。

后续步骤