本页面介绍了如何管理保存为 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
替换以下值:
安装图表
使用 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 代码库中, 工件类型
控制台
如需查看代码库中的映像,请执行以下操作:
打开 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。 如果您的项目 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 控制台中的制品库页面。
点击映像名称即可查看该映像的版本。
选择您要删除的版本。
点击删除。
在确认对话框中,点击删除。
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 命令。