对于Helm Chart Dependencies, Depend on ChartCenter

更新:截至2021年5月1日- ChartCenter中央存储库已经日落,所有功能已弃用。有关中心日落的更多信息,请阅读中心弃用博客文章

ChartCenter是一个免费的Helm chart中央存储库,用于帮助社区为公开可用的Kubernetes应用程序寻找不可变的、安全的和可靠的图表。有了ChartCenter,你就有了一个单一的事实来源,可以从一个始终可用的位置代理所有公共图表。

如果没有ChartCenter,你需要将每个Helm图表的存储库添加到你想要安装和更新的每个Kubernetes应用程序的Helm客户端。当您将ChartCenter存储库添加到Helm客户端时,您将可以立即访问执掌图表超过250名公众人士Kubernetes应用程序(并且还在不断增长)在ChartCenter中进行代理。因此,与其使用许多公共Helm存储库,不如只使用一个。

当您创建自己的Helm图表时,您还可以通过在ChartCenter中引用它们的代理来确保作为依赖项使用的公共图表是不可变的,并且始终可用。这避免了由于稍后在图表的原始repo中强制推送或删除而导致的任何不愉快的意外。当你浏览ChartCenter时,你总是会知道你得到了什么——ChartCenter丰富的依赖、统计和安全元数据更是如此。

让我们看看如何从依赖关系图中引用ChartCenter,以及Helm的小插件使您能够这样做。

使用ChartCenter

将ChartCenter设置为中心非常容易执掌库

$ helm repo添加中心https://repo.chartcenter.io $ helm repo更新


现在你的Helm客户端可以访问在ChartCenter中提供的超过30,000个版本的Helm图表中的任何一个,许多流行的应用程序图表都在ChartCenter的主页上,所以你可以方便地找到它们。

但是,ChartCenter可能会为同一个Kubernetes应用程序保留几组不同的Helm图表,这些图表来自不同的仓库,可能包含专门版本、重复版本或弃用版本的图表。

例如,搜索PostgreSQL数据库应用在图表中心找到几个匹配:

在ChartCenter中,名称空间标识了Helm存储库,在这里可以找到Helm图表版本,您必须通过该名称空间引用ChartCenter Helm图表。例如,引用PostgreSQL的官方Bitnami Helm图表为bitnami这样\ postgresql

从helm命令行安装PostgreSQL:

postgresql center/bitnami/postgresql

使用ChartCenter制作依赖关系图

在上面的例子中,我们安装了bitnami这样/ postgresql从Helm回购https://repo.chartcenter.io,而且效果很好。

但是,我们不希望通过helm客户端的命令行安装PostgreSQL,而是希望将它作为一个依赖项安装在我们自己创建的helm图表中。

要将Bitnami PostgreSQL包含在您的Helm图表中,您的图表requirements.yamlChart.yaml文件可以在依赖关系Bitnami的图表存储库

依赖项:—name: postgresql version: 9.2.1 repository: https://charts.bitnami.com/bitnami condition: postgresql.enabled


但我们想在ChartCenter中使用Bitnami图表的不可变代理。在这种情况下,存储库将指定的URL为图表中心的回购,但图表的名字还必须包括命名空间:

依赖项:- name:bitnami这样/ postgresql版本:9.2.1https://repo.chartcenter.io条件:postgresql.enabled


bitnami这样名称空间使我们能够在ChartCenter中处理正确的图表,但是
问题是吗?执掌包指挥官还不明白。

有一个问题为Helm v3客户端打开了一个额外的名称空间执掌包命令,但这可能需要一段时间来排序。Helm v2客户端不接受任何新特性。

那么在此期间我们如何解决这个问题呢?

使用ChartCenter插件

为了使Helm客户机能够识别名称空间,我们开发了一个ChartCenter插件的掌舵可以与Helm v3或v2客户端一起使用。

让我们安装最新的插件版本

$ helm plugin安装https://github.com/jfrog/chartcenter-plugin


插件将替换Helm依赖更新执掌包只有一个的命令领导中心命令:

$ helm center 


这个新命令将运行Helm依赖更新,从ChartCenter Helm存储库中拉出子图表,然后将主图表和子图表打包到. tgz文件,准备上传到任何Helm存储库。

Boom,这是一个很好的简单的方法,可以使用ChartCenter插件作为工具,从ChartCenter helm repo中打包依赖图。

快乐图表中心图表