IBM Cloud Docs
在 Helm 图表中使用 Container Registry

在 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 中使用。

从私人或公共注册表或 Helm 存储库中提取图表到电脑。
从另一个注册表中提取图表

开始之前,请完成以下任务。

  1. 将 Helm 图表下载到本地计算机。

    • 从 OCI 注册表中下载 Helm 图表:

      helm pull oci://REGISTRY/MY_NAMESPACE/CHART_NAME --version CHART_VERSION
      

      例如,其中 REGISTRYlocalhost:5000MY_NAMESPACEhelm-chartsCHART_NAMEmychartCHART_VERSION0.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_NAMEibm-charts/ibm-istioCHART_VERSION1.2.2

      您可以使用 helm repo add 命令添加 repo 别名。

      helm pull ibm-charts/ibm-istio  --version 1.2.2
      

    如果收到 unauthorized: authentication requireddenied: requested access to the resource is denied 消息,请运行 ibmcloud cr login 命令。

命名空间 提取图表后,可以将图表从本地计算机上载(推送)到命名空间。

将 Helm 图表推送到您的命名空间

您可以将计算机中的图表推送(上传)到 IBM Cloud Container Registry 中的命名空间,以存储图表并与其他用户共享。

将图表从电脑推送到 IBM Cloud Container Registry。
将图表推送到您的命名空间

开始之前,请完成以下任务。

要上传(推送)图表,请完成以下步骤:

  1. 运行以下命令登录 CLI,其中 DOMAIN 是域名,用户名 (-u) 设置为 iamapikey。 如需了解有关域名的更多信息,请参阅“地区”。

    helm registry login DOMAIN -u iamapikey
    

    然后,命令会提示您输入密码,即 IAM API 密钥。

    如果您从私人 IBM Cloud Container Registry 上调取图表,则必须登录。

  2. 要查看账户中可用的所有命名空间,请运行 ibmcloud cr namespace-list 命令。

  3. 将图表上传到您的命名空间。

    helm push MY_CHART_PACKAGE oci://REGION.icr.io/MY_NAMESPACE
    

    例如,其中 MY_CHART_PACKAGEmychart-0.1.0.tgzREGIONukMY_NAMESPACEhelm-charts

    helm push mychart-0.1.0.tgz oci://uk.icr.io/helm-charts
    

    如果您收到unauthorized: authentication requireddenied: requested access to the resource is denied消息,请运行 ibmcloud cr login 命令。

将图表推送到 IBM Cloud Container Registry 后,可将 Helm 图表安装到 IBM Cloud Kubernetes Service 中的群集

在登记册之间复制图表

您可以在注册表之间复制图表,方法是从一个区域的注册表中提取图表,然后将其推送到另一个区域的注册表中,这样就可以与两个区域的用户共享图表。

在登记册之间复制图表。
在登记册之间复制图表

开始之前,请完成以下任务。

要在两个注册表之间复制图表,请完成以下步骤:

  1. 从注册表中提取图表
  2. 将图表推送到另一个注册表。 确保针对新的目标地区使用正确的域名。

复制图表后,您可以 将 Helm 图表安装到 IBM Cloud Kubernetes Service 中的集群

将 Helm 图表安装到群集

您可以直接从注册表中将 Helm 图表安装到 IBM Cloud Kubernetes Service 中的群集。 请按照 Helm 图表 README 中的说明进行操作,并使用完整的注册表参照图表和图表版本进行安装。

helm install RELEASE_NAME oci://REGION.icr.io/MY_NAMESPACE/CHART_NAME --version CHART_VERSION

例如,其中 RELEASE_NAMEmyrelease, REGIONuk, MY_NAMESPACEhelm-charts, CHART_NAMEmychart, CHART_VERSION0.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 删除图表,请完成以下步骤:

  1. 通过运行 ibmcloud login 命令登录到 IBM Cloud。

  2. 要删除图表,请运行以下命令,其中 CHART 是要删除的图表名称,格式为 repository@digestrepository: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 的图像名称。

  3. 运行以下命令验证图表是否已删除,并检查图表是否已不在列表中显示。

    ibmcloud cr image-list
    

在控制台中删除私人资源库中的图表

您可以使用 IBM Cloud 控制台从私人 IBM Cloud 存储库中删除不需要的图表及其所有标签。

删除现有部署正在使用的图表可能会导致 Helm 升级、回滚或删除失败。

如果要恢复已删除的图表,可以通过运行 ibmcloud cr trash-list 命令列出已删除图表的内容,然后运行 ibmcloud cr image-restore 命令来恢复选定的图表。

要使用 IBM Cloud 控制台删除图表,请完成以下步骤。

  1. 登录 IBM Cloud 控制台 https://cloud.ibm.com/loginIBMid。
  2. 如果有多个 IBM Cloud 帐户,请从帐户菜单中选择您要使用的帐户和区域。
  3. 单击导航菜单图标,然后单击 Container Registry.
  4. 单击 映像。 显示图表列表(如果有图像)。 注册表存储不同的工件类型,包括 Helm 图表和容器映像。
  5. 在包含要删除的图表的行中,选择复选框。
  6. 单击 删除映像

将图表放入垃圾桶

您可以列出垃圾桶中已删除的图表,并查看它们的过期时间。

要找出垃圾中的图表,可以使用 ibmcloud cr trash-list 命令。 图表在垃圾桶中可保存 30 天。

要列出垃圾中的图表,请完成以下步骤。

  1. 通过运行 ibmcloud login 命令登录到 IBM Cloud。

  2. 您可以通过运行以下命令列出垃圾桶中的图表。

    ibmcloud cr trash-list
    
  3. 您可以通过运行以下命令(其中 NAMESPACE 是您的命名空间),只列出您感兴趣的命名空间垃圾桶中的图表。

    ibmcloud cr trash-list --restrict NAMESPACE
    

恢复图表

您可以从垃圾桶中恢复图表。 被删除的图表会在垃圾箱中保存 30 天。

您可以通过运行 ibmcloud cr image-restore 命令来恢复图表。 要找出垃圾中的图表,请运行 ibmcloud cr trash-list 命令。

运行 ibmcloud cr image-restore 命令来恢复图表。 您可以使用以下选项:

按摘要恢复图表

按摘要还原图表时,摘要会从垃圾桶移到实时版本库中,版本库中该摘要的所有标记也会还原。

要从垃圾中按摘要恢复图表,请完成以下步骤:

  1. 通过运行 ibmcloud login 命令登录到 IBM Cloud。

  2. 运行以下命令,列出垃圾桶中的图表。

    ibmcloud cr trash-list
    

    这将显示一个表,其中显示废纸篓中的各项。 该表会显示摘要、到期之前的天数以及该摘要的标记。

  3. 注意要恢复的图表的摘要。

  4. 运行以下命令将图表还原到版本库中。 其中 DNS 是域名,NAMESPACE 是命名空间,REPO 是存储库,DIGEST 是要恢复的图表摘要。

    ibmcloud cr image-restore DNS/NAMESPACE/REPO@DIGEST
    

    如果某些标记没有还原,请参阅 当我通过摘要还原时,为什么没有还原所有标记? 获取帮助。

    在实时资源库中,您可以按摘要提取图表。 如果运行 ibmcloud cr image-digests 命令,图表就会显示在输出中。

按标签恢复图表

按标签还原图表时,只有该特定标签会从垃圾桶移到实时资源库中。

要从垃圾中按标记恢复图表,请完成以下步骤。

  1. 通过运行 ibmcloud login 命令登录到 IBM Cloud。

  2. 运行以下命令,列出垃圾桶中的图表。

    ibmcloud cr trash-list
    

    这将显示一个表,其中显示废纸篓中的各项。 该表会显示摘要、到期之前的天数以及该摘要的标记。

  3. 对于要还原的图表,记下直到(但不包括)at 符号 (@) 的摘要。这部分摘要为 DNS/NAMESPACE/REPO,其中 DNS 是域名,NAMESPACE 是命名空间,REPO 是存储库。

  4. 对于要恢复的图表,请记下标签 TAG

  5. 运行以下命令将图表还原到版本库中,其中 DNS/NAMESPACE/REPO 是要还原的图表名称,TAG 是标签。

    ibmcloud cr image-restore DNS/NAMESPACE/REPO:TAG
    

    在实时资源库中,您可以按标签提取图表。

    如果运行 ibmcloud cr trash-list 命令,输出中会显示摘要和任何其他标记,但不再显示标记。

删除私有资源库和任何相关图表

您可以使用 IBM Cloud 控制台删除不再需要的私有存储库和任何相关图表。

删除存储库时,该存储库中的所有图表都会被删除。 此操作无法撤销。

开始之前,必须备份要保留的图表。

要使用 IBM Cloud 控制台删除私有资源库,请完成以下步骤。

  1. 登录 IBM Cloud 控制台 https://cloud.ibm.com/loginIBMid。

  2. 如果有多个 IBM Cloud 帐户,请从帐户菜单中选择您要使用的帐户和区域。

  3. 单击导航菜单图标,然后单击 Container Registry.

  4. 单击 存储库。 这将显示专用存储库的列表。

  5. 在包含要删除的私有资源库的行中,选择复选框。

    确保选择了正确的存储库,因为该操作无法撤销。

  6. 单击 删除存储库