如何使用chart模板

65次阅读
没有评论

共计 1682 个字符,预计需要花费 5 分钟才能阅读完成。

本篇文章给大家分享的是有关如何使用 chart 模板,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

Helm 通过模板创建 Kubernetes 能够理解的 YAML 格式的资源配置文件,我们将通过例子来学习如何使用模板。

以  templates/secrets.yaml  为例:

从结构看,文件的内容非常像 Secret 配置,只是大部分属性值变成了 {{xxx}}。这些  {{xxx}}  实际上是模板的语法。Helm 采用了 Go 语言的模板来编写 chart。Go 模板非常强大,支持变量、对象、函数、流控制等功能。下面我们通过解析  templates/secrets.yaml  快速学习模板。

① {{template mysql.fullname   定义 Secret 的  name。
关键字  template  的作用是引用一个子模板  mysql.fullname。这个子模板是在  templates/_helpers.tpl  文件中定义的。

这个定义还是很复杂的,因为它用到了模板语言中的对象、函数、流控制等概念。现在看不懂没关系,这里我们学习的重点是:如果存在一些信息多个模板都会用到,则可在  templates/_helpers.tpl  中将其定义为子模板,然后通过  templates  函数引用。

这里  mysql.fullname  是由 release 与 chart 二者名字拼接组成。

根据 chart 的最佳实践,所有资源的名称都应该保持一致,对于我们这个 chart,无论 Secret 还是 Deployment、PersistentVolumeClaim、Service,它们的名字都是子模板  mysql.fullname  的值。

② Chart  和  Release  是 Helm 预定义的对象,每个对象都有自己的属性,可以在模板中使用。如果使用下面命令安装 chart:

helm install stable/mysql -n my

那么:
{{.Chart.Name}}  的值为  mysql。
{{.Chart.Version}}  的值为  0.3.0。
{{.Release.Name}}  的值为  my。
{{.Release.Service}}  始终取值为  Tiller。
{{template mysql.fullname   计算结果为  my-mysql。

③ 这里指定  mysql-root-password  的值,不过使用了  if-else  的流控制,其逻辑为:
如果  .Values.mysqlRootPassword  有值,则对其进行 base64 编码;否则随机生成一个 10 位的字符串并编码。

Values  也是预定义的对象,代表的是  values.yaml  文件。而  .Values.mysqlRootPassword  则是  values.yaml  中定义的  mysqlRootPassword  参数:

因为  mysqlRootPassword  被注释掉了,没有赋值,所以逻辑判断会走  else,即随机生成密码。

randAlphaNum、b64enc、quote  都是 Go 模板语言支持的函数,函数之间可以通过管道  |  连接。{{randAlphaNum 10 | b64enc | quote}}  的作用是首先随机产生一个长度为 10 的字符串,然后将其 base64 编码,最后两边加上双引号。

templates/secrets.yaml  这个例子展示了 chart 模板主要的功能,我们最大的收获应该是:模板将 chart 参数化了,通过  values.yaml  可以灵活定制应用。

无论多复杂的应用,用户都可以用 Go 模板语言编写出 chart。无非是使用到更多的函数、对象和流控制。对于初学者,我的建议是尽量参考官方的 chart。根据二八定律,这些 chart 已经覆盖了绝大部分情况,而且采用了最佳实践。

以上就是如何使用 chart 模板,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1682字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)