云原生应用管理:原理与实践
上QQ阅读APP看书,第一时间看更新

2.10 Chart模板开发高阶介绍

前面我们对Chart模板有了基本的认识,也简单了解了Helm的功能。本节我将介绍一些编写Chart用到的高阶方法,包括模板语言、内置函数、内置默认变量等。刚开始读者可能会觉得有些难懂,可以暂且略过本节,当在第3章学习中发现不懂的地方时,再回本节查漏补缺。当然,如果能顺利阅读完本节,肯定对后续的学习大有裨益,学好本节内容对于将来阅读标准社区Chart与开发项目也有很大的帮助。

在开始本节学习之前,我们先创建一个Chart,这个Chart会随着讲解逐渐丰富。就像上文所讲的一样,一个Chart的结构如下所示。


myChart/
  Chart.yaml
  values.yaml
  Charts/
  templates/
  ...

template文件夹存放所有的Kubernetes资源文件,values.yaml存放本Chart默认的参数,Chart.yaml存放描述该Chart的元信息,Charts/文件夹存放依赖的子Chart文件内容。

本节先创建一个名为myChart的Chart,然后再填充一些Kubernetes资源到template文件夹中。


[root@iZ8vb0qditk1qw27yu4k5nZ ~]# helm create myChart
Creating myChart
[root@iZ8vb0qditk1qw27yu4k5nZ ~]# tree myChart/
myChart/
├── Charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

[root@iZ8vb0qditk1qw27yu4k5nZ ~]# rm -rf myChart/templates/*
[root@iZ8vb0qditk1qw27yu4k5nZ ~]# tree myChart/
myChart/
├── Charts
├── Chart.yaml
├── templates
└── values.yaml

下面把自动生成的template文件夹的内容全部删除,这样才能方便后面创建我们的文件。当然这是为了演示使用,如果在生产环境中创建Chart,还是建议直接复用自动生成的Chart内容,它会大大提高我们创建Chart的速度。