Helm 中模板和图表之间的差异

bea*_*ice 2 kubernetes kubernetes-helm

我刚刚开始尝试 Helm kubernetes 包管理器。但图表与模板主题对我来说似乎有点令人困惑。

据我所知,通过模板我将创建 kubernetes yaml,它将创建对象并安装它们。然而,图表也是如此,但后者是对 yaml 的抽象。./Charts 包含独立图表,而 ./templates 仅对基本图表有效。所以我知道这一点。但是我什么时候应该包含其他图表或只是创建一个模板?

通过网络寻找不同类型的图表,我仍然不知道该使用哪个。

假设我有一个名为 MyApp 的项目,其中有一个名为 MyServer 的组件,它将与 MySql 进行通信。

所以我创建了一个图表并将 MyServer 作为模板放入其中:
./MyApp/templates/MyServer.yaml
我应该如何使用 MySql?我在不同的项目中看到了两种解决方案,其中一个只是创建了另一个模板:
./MyApp/templates/MySQL.yaml
在其他项目上,我从图表存储库中看到了 MySql 的图表:
./MyApp/charts/mysql-version.tgz

最重要的是,我看到了一个大数据项目(hdfs、kafka、zookeeper、ELK、 oracle db..etc),一个组件作为图表包含在 ./charts 中,其他组件作为模板创建在 ./templates 中。
图表和模板之间的整个决定对我来说似乎是随机且令人困惑的。
您能解释一下什么时候使用哪个吗?

Dav*_*aze 6

图表是模板集合,加上一些额外的信息,例如Chart.yaml文件中的元数据和默认值values.yaml。在您的示例中,MyApp它本身就是一个图表。

对于众所周知的依赖项(特别是Helm 图表存储库中的内容,尤其是稳定的图表),您可能最好使用外部图表;requirements.yaml在您的或 (Helm v3)文件中声明依赖项Chart.yaml并运行helm dependency update. 这使您可以导入包含两行的图表,而不是复制图表中包含的StatefulSet、PersistentVolumeClaim等。