chart 模板 - 每天5分钟玩转 Docker 容器技术(165)
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 已经覆盖了绝大部分情况,而且采用了最佳实践。如何遇到不懂的函数、对象和其他语法,可参考官网文档 https://docs.helm.sh
有了上面 chart 结构和模板的知识后,下节我们将重新实践一次 MySQL chart,相信会有更多收获。
书籍:
1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html
2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
转载于:https://www.cnblogs.com/CloudMan6/p/9006203.html
chart 模板 - 每天5分钟玩转 Docker 容器技术(165)相关推荐
- 开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)
Kubernetes 给我们提供了大量官方 chart,不过要部署微服务应用,还是需要开发自己的 chart,下面就来实践这个主题. 创建 chart 执行 helm create mychart 的 ...
- 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)
学习了 chart 结构和模板的知识后,现在重新实践一次 MySQL chart,相信会有更多收获. chart 安装前的准备 作为准备工作,安装之前需要先清楚 chart 的使用方法.这些信息通常记 ...
- Helm 架构 - 每天5分钟玩转 Docker 容器技术(161)
在实践之前,我们先来看看 Helm 的架构. Helm 有两个重要的概念:chart 和 release. chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板.参数定 ...
- k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
命令 vs 配置文件 Kubernetes 支持两种方式创建资源: 1. 用 kubectl 命令直接创建,比如: kubectl run nginx-deployment --image=nginx ...
- 定时执行 Job - 每天5分钟玩转 Docker 容器技术(135)
Linux 中有 cron 程序定时执行任务,Kubernetes 的 CronJob 提供了类似的功能,可以定时执行 Job.CronJob 配置文件示例如下: ① batch/v2alpha1 是 ...
- 使用 Helm - 每天5分钟玩转 Docker 容器技术(163)
2019独角兽企业重金招聘Python工程师标准>>> Helm 安装成功后,可执行 helm search 查看当前可安装的 chart. 这个列表很长,这里只截取了一部分.大家不 ...
- 用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)
默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Nod ...
- 3、《每天5分钟玩转Docker容器技术》学习-Docker架构
------------------------------------重要说明------------------------------------ 本文内容都是参考Cloudman系列进行学习, ...
- 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...
最新文章
- 聚类和EM算法——K均值聚类
- 成功解决./nvidia-installer: invalid option: ‐‐no‐opengl‐files ERROR: Invalid commandline, please run `
- CentOS添加一个新的硬盘、添加分区到挂载的过程
- 巨头入局,华为云将给音视频行业带来什么?
- SAP Spartacus的登录验证机制 - user login Authentication
- Android使用token维持登陆状态的方法
- Linux系统下,MySQL以及禅道的安装/卸载
- 编写一个脚本判断某个用户是否处在活动模式_使用 TypeScript 编写爬虫
- CAutoupdater通用 自动升级组件用户手册
- Java判断文件是否为图片
- python 数据流中的移动平均值_Python实现数据流中的中位数【堆】
- 如何用好谷歌等搜索引擎?
- 宠物合成养成游戏养猫养牛流量主小程序开发
- 我的第一篇论文诞生的故事
- 移动页面HTML5自适应手机屏幕宽度几种办法
- cat()函数的用法
- pthread_cont_wait和pthread_cont_signal
- 【以太网硬件TCP/IP协议栈】硬件协议栈W5500应用
- shp文件的可视化与编辑
- 空指针-Base on windows Writeup -- 最新版DZ3.4实战渗透
热门文章
- python初学者可以做的金融小程序-Python入门 —— 用pycharm写一个简单的小程序3...
- python常用内置模块-Python-常用的内置模块
- python 代码-20个Python代码段,你需要立刻学会,好用到哭!
- python3.6.2安装教程-CentOS 7.2下安装Python 3.6.2
- python变量类型-【干货】Python基础语法之变量类型
- vscode使用教程python-用VSCode写python的正确姿势
- 零基础自学python的app-零基础入门免费学Python 课程和APP推荐
- python 程序流程控制结构-Python基础—程序控制结构
- python 制作gif-怎样用Python制作好玩的GIF动图
- python3哪个教程好-Python3 教程