在 Helm 图表中使用 Container Registry
您可以在 IBM Cloud® Container Registry 中安全地存储 Helm 图表并与其他用户共享。
Helm 图表的 OCI 支持
开放容器倡议(OCI) 于 2021 年 9 月发布了 开放容器倡议分发规范 v1.0.0。 除容器映像外,本规范还支持其他工件类型。 Helm 图表是 支持的人工制品类型之一。
Helm v3.8.0 支持在 OCI 注册表中存储和处理图表,以替代 Helm 图表存储库。 更多信息,请参阅 Helm 注册表文档。
在命名空间中添加 Helm 图表
通过在 IBM Cloud Container Registry 的 命名空间在注册表中存储映像的存储库的集合。 名称空间与 IBM Cloud 帐户相关联,该帐户可以包含多个名称空间。中添加图表,您可以安全地存储 Helm 图表并与其他用户共享。
要添加到命名空间的每个 Helm 图表都必须首先存在于本地计算机中。 您可以从其他资源库下载(提取)图表到本地计算机,也可以使用 helm create
命令创建自己的图表。 要将图表添加到命名空间,必须在 IBM Cloud Container Registry 中将本地图表上载(推送)到命名空间。
请勿在图表(如名称空间名称或描述字段)或任何图表或图表配置数据(如图表名称或图表标签)中输入个人信息。
从另一个注册表或 Helm 存储库中提取图表
您可以从任何私人或公共 注册表包含用于创建容器的公共或专用映像的存储和分发服务。源或 Helm 存储库中提取(下载)图表到您的电脑,然后将其标记,以便以后在 IBM Cloud Container Registry 中使用。
开始之前,请完成以下任务。
- 安装 CLI 以使用您的命名空间。
- 在 IBM Cloud Container Registry 中设置自己的名称空间。
- 安装 Helm CLI 的最新版本,以便使用图表。
-
将 Helm 图表下载到本地计算机。
-
从 OCI 注册表中下载 Helm 图表:
helm pull oci://REGISTRY/MY_NAMESPACE/CHART_NAME --version CHART_VERSION
例如,其中
REGISTRY
是localhost:5000
,MY_NAMESPACE
是helm-charts
,CHART_NAME
是mychart
,CHART_VERSION
是0.1.0
:helm pull oci://localhost:5000/helm-charts/mychart --version 0.1.0
-
从 Helm 资源库下载 Helm 图表:
helm pull [CHART_URL | REPO/CHART_NAME] --version CHART_VERSION
例如,其中
REPO/CHART_NAME
是ibm-charts/ibm-istio
,CHART_VERSION
是1.2.2
。您可以使用
helm repo add
命令添加 repo 别名。helm pull ibm-charts/ibm-istio --version 1.2.2
如果收到
unauthorized: authentication required
或denied: requested access to the resource is denied
消息,请运行ibmcloud cr login
命令。 -
为 命名空间 提取图表后,可以将图表从本地计算机上载(推送)到命名空间。
将 Helm 图表推送到您的命名空间
您可以将计算机中的图表推送(上传)到 IBM Cloud Container Registry 中的命名空间,以存储图表并与其他用户共享。
开始之前,请完成以下任务。
- 安装 CLI 以使用您的命名空间。
- 在 IBM Cloud Container Registry 中设置自己的名称空间。
- 安装 Helm CLI 的最新版本,以便使用图表。
- 在本地计算机上 提取 或 创建图表。 如果创建了图表,必须使用
helm package
命令将图表保存为存档。
要上传(推送)图表,请完成以下步骤:
-
运行以下命令登录 CLI,其中
DOMAIN
是域名,用户名 (-u
) 设置为iamapikey
。 如需了解有关域名的更多信息,请参阅“地区”。helm registry login DOMAIN -u iamapikey
然后,命令会提示您输入密码,即 IAM API 密钥。
如果您从私人 IBM Cloud Container Registry 上调取图表,则必须登录。
-
要查看账户中可用的所有命名空间,请运行
ibmcloud cr namespace-list
命令。 -
将图表上传到您的命名空间。
helm push MY_CHART_PACKAGE oci://REGION.icr.io/MY_NAMESPACE
例如,其中
MY_CHART_PACKAGE
是mychart-0.1.0.tgz
,REGION
是uk
,MY_NAMESPACE
是helm-charts
:helm push mychart-0.1.0.tgz oci://uk.icr.io/helm-charts
如果您收到
unauthorized: authentication required
或denied: requested access to the resource is denied
消息,请运行ibmcloud cr login
命令。
将图表推送到 IBM Cloud Container Registry 后,可将 Helm 图表安装到 IBM Cloud Kubernetes Service 中的群集。
在登记册之间复制图表
您可以在注册表之间复制图表,方法是从一个区域的注册表中提取图表,然后将其推送到另一个区域的注册表中,这样就可以与两个区域的用户共享图表。
开始之前,请完成以下任务。
- 安装 CLI 以使用您的命名空间。
- 在 IBM Cloud Container Registry 中设置自己的名称空间。
- 安装 Helm CLI 的最新版本,以便使用图表。
要在两个注册表之间复制图表,请完成以下步骤:
- 从注册表中提取图表。
- 将图表推送到另一个注册表。 确保针对新的目标地区使用正确的域名。
将 Helm 图表安装到群集
您可以直接从注册表中将 Helm 图表安装到 IBM Cloud Kubernetes Service 中的群集。 请按照 Helm 图表 README
中的说明进行操作,并使用完整的注册表参照图表和图表版本进行安装。
helm install RELEASE_NAME oci://REGION.icr.io/MY_NAMESPACE/CHART_NAME --version CHART_VERSION
例如,其中 RELEASE_NAME
是 myrelease
, REGION
是 uk
, MY_NAMESPACE
是 helm-charts
, CHART_NAME
是 mychart
, CHART_VERSION
是 0.1.0
:
helm install myrelease oci://uk.icr.io/helm-charts/mychart --version 0.1.0
从私人资源库中删除图表
您可以使用 IBM Cloud 控制台或 CLI 从私人 IBM Cloud 存储库中 删除不需要的图表。
如果要删除私有资源库及其相关图表,请参阅 删除私有资源库和任何相关图表。
删除现有部署正在使用的图表可能会导致 Helm 升级、回滚或删除失败。
如果要恢复已删除的图表,可以通过运行 ibmcloud cr trash-list
命令列出已删除图表的内容,然后运行 ibmcloud cr image-restore
命令来恢复选定的图表。 您可以使用这些命令,因为 Helm 图表是 OCI 支持的工件类型。
如果同一图表摘要在资源库中存在多个 标签附加到帐户中包含的资源分组的用户定义的标识。 标记在帐户范围内可视。,该 ibmcloud cr image-rm
命令会删除底层图表及其所有标记。 如果同一图表存在于不同的版本库或命名空间,则图表副本不会被移除。
标签必须始终与图表的语义版本相匹配,这意味着不能使用 latest
标签。
使用 CLI 从私人资源库中删除图表
您可以使用 CLI 从私人 IBM Cloud 存储库中删除不需要的图表及其所有标签。
删除现有部署正在使用的图表可能会导致 Helm 升级、回滚或删除失败。
如果要恢复已删除的图表,可以通过运行 ibmcloud cr trash-list
命令列出已删除图表的内容,然后运行 ibmcloud cr image-restore
命令来恢复选定的图表。
要使用 CLI 删除图表,请完成以下步骤:
-
通过运行
ibmcloud login
命令登录到 IBM Cloud。 -
要删除图表,请运行以下命令,其中
CHART
是要删除的图表名称,格式为repository@digest
或repository:tag
。 与图像不同,必须指定一个标签,因为latest
标签并不存在,因为标签必须始终与图表的语义版本相匹配。 您可以删除多个图表,方法是在命令中列出每个 IBM Cloud 私有注册表路径,每个路径之间用空格隔开。ibmcloud cr image-rm CHART
要查找图表名称,请运行
ibmcloud cr image-list
。 注册表存储不同的工件类型,包括 Helm 图表和容器映像。 将“存储处”列 (repository
) 和“标签”列 (tag
) 的内容用冒号 (:
) 分隔,创建格式为repository:tag
的图像名称。 要通过摘要识别图表,请运行ibmcloud cr image-digests
命令。 将“存储处”栏 (repository
) 和“摘要”栏 (digest
) 中的内容用 at (@
) 符号分隔,创建格式为repository@digest
的图像名称。 -
运行以下命令验证图表是否已删除,并检查图表是否已不在列表中显示。
ibmcloud cr image-list
在控制台中删除私人资源库中的图表
您可以使用 IBM Cloud 控制台从私人 IBM Cloud 存储库中删除不需要的图表及其所有标签。
删除现有部署正在使用的图表可能会导致 Helm 升级、回滚或删除失败。
如果要恢复已删除的图表,可以通过运行 ibmcloud cr trash-list
命令列出已删除图表的内容,然后运行 ibmcloud cr image-restore
命令来恢复选定的图表。
要使用 IBM Cloud 控制台删除图表,请完成以下步骤。
- 登录 IBM Cloud 控制台 https://cloud.ibm.com/loginIBMid。
- 如果有多个 IBM Cloud 帐户,请从帐户菜单中选择您要使用的帐户和区域。
- 单击导航菜单图标,然后单击 Container Registry.
- 单击 映像。 显示图表列表(如果有图像)。 注册表存储不同的工件类型,包括 Helm 图表和容器映像。
- 在包含要删除的图表的行中,选择复选框。
- 单击 删除映像。
将图表放入垃圾桶
您可以列出垃圾桶中已删除的图表,并查看它们的过期时间。
要找出垃圾中的图表,可以使用 ibmcloud cr trash-list
命令。 图表在垃圾桶中可保存 30 天。
要列出垃圾中的图表,请完成以下步骤。
-
通过运行
ibmcloud login
命令登录到 IBM Cloud。 -
您可以通过运行以下命令列出垃圾桶中的图表。
ibmcloud cr trash-list
-
您可以通过运行以下命令(其中
NAMESPACE
是您的命名空间),只列出您感兴趣的命名空间垃圾桶中的图表。ibmcloud cr trash-list --restrict NAMESPACE
恢复图表
您可以从垃圾桶中恢复图表。 被删除的图表会在垃圾箱中保存 30 天。
您可以通过运行 ibmcloud cr image-restore
命令来恢复图表。 要找出垃圾中的图表,请运行 ibmcloud cr trash-list
命令。
运行 ibmcloud cr image-restore
命令来恢复图表。 您可以使用以下选项:
按摘要恢复图表
按摘要还原图表时,摘要会从垃圾桶移到实时版本库中,版本库中该摘要的所有标记也会还原。
要从垃圾中按摘要恢复图表,请完成以下步骤:
-
通过运行
ibmcloud login
命令登录到 IBM Cloud。 -
运行以下命令,列出垃圾桶中的图表。
ibmcloud cr trash-list
这将显示一个表,其中显示废纸篓中的各项。 该表会显示摘要、到期之前的天数以及该摘要的标记。
-
注意要恢复的图表的摘要。
-
运行以下命令将图表还原到版本库中。 其中
DNS
是域名,NAMESPACE
是命名空间,REPO
是存储库,DIGEST
是要恢复的图表摘要。ibmcloud cr image-restore DNS/NAMESPACE/REPO@DIGEST
如果某些标记没有还原,请参阅 当我通过摘要还原时,为什么没有还原所有标记? 获取帮助。
在实时资源库中,您可以按摘要提取图表。 如果运行
ibmcloud cr image-digests
命令,图表就会显示在输出中。
按标签恢复图表
按标签还原图表时,只有该特定标签会从垃圾桶移到实时资源库中。
要从垃圾中按标记恢复图表,请完成以下步骤。
-
通过运行
ibmcloud login
命令登录到 IBM Cloud。 -
运行以下命令,列出垃圾桶中的图表。
ibmcloud cr trash-list
这将显示一个表,其中显示废纸篓中的各项。 该表会显示摘要、到期之前的天数以及该摘要的标记。
-
对于要还原的图表,记下直到(但不包括)at 符号 (
@
) 的摘要。这部分摘要为DNS/NAMESPACE/REPO
,其中DNS
是域名,NAMESPACE
是命名空间,REPO
是存储库。 -
对于要恢复的图表,请记下标签
TAG
。 -
运行以下命令将图表还原到版本库中,其中
DNS/NAMESPACE/REPO
是要还原的图表名称,TAG
是标签。ibmcloud cr image-restore DNS/NAMESPACE/REPO:TAG
在实时资源库中,您可以按标签提取图表。
如果运行
ibmcloud cr trash-list
命令,输出中会显示摘要和任何其他标记,但不再显示标记。
删除私有资源库和任何相关图表
您可以使用 IBM Cloud 控制台删除不再需要的私有存储库和任何相关图表。
删除存储库时,该存储库中的所有图表都会被删除。 此操作无法撤销。
开始之前,必须备份要保留的图表。
要使用 IBM Cloud 控制台删除私有资源库,请完成以下步骤。
-
登录 IBM Cloud 控制台 https://cloud.ibm.com/loginIBMid。
-
如果有多个 IBM Cloud 帐户,请从帐户菜单中选择您要使用的帐户和区域。
-
单击导航菜单图标,然后单击 Container Registry.
-
单击 存储库。 这将显示专用存储库的列表。
-
在包含要删除的私有资源库的行中,选择复选框。
确保选择了正确的存储库,因为该操作无法撤销。
-
单击 删除存储库。