heml学习笔记
仓库的管理和维护方法请参考官网文档 https://docs.helm.sh
注意在YAML中有一个空行,为什么?当模板引擎运行时,它 移除了 {{
和 }}
里面的内容,但是留下的空白完全保持原样。
YAML认为空白是有意义的,因此管理空白变得很重要。幸运的是,Helm模板有些工具可以处理此类问题。
首先,模板声明的大括号语法可以通过特殊的字符修改,并通知模板引擎取消空白。{{-
(包括添加的横杠和空格)表示向左删除空白, 而 -}}
表示右边的空格应该被去掉。 一定注意空格就是换行
|-标识在YAML中是指多行字符串。这在清单列表中嵌入大块数据是很有用的技术
命名以下划线(_)开始的文件则假定 没有 包含清单内容。这些文件不会渲染为Kubernetes对象定义,但在其他chart模板中都可用。
Helm模板中使用include
而不是template
被认为是更好的方式 只是为了更好地处理YAML文档的输出格式Helm模板中使用include
而不是template
被认为是更好的方式 只是为了更好地处理YAML文档的输出格式mychart
现在是mysubchart
的 父。这种关系是基于mysubchart
在mychart/charts
中这一事实
运行 Helm 的节点也应该是可以正常使用 kubectl 命令的主机
示例:helm install minideploy_chart --name minideploy-dev --namespace quickai-dev
运行“ helm version ,,命令即可显示客户端和服务端的版本号,若两者均显示正常,则表示安装成功
Tiller 将数据存储于 ConfigMap 资源中,
更新仓库元信息:helm repo update
列出仓库中Charts的列表: helm search (helm search redis)
打印出指定的 Charts 的详细信息: helm inspect
列出已经安装生成的 Release : helm list
删除release:helm delete redis
升级或回滚应用,要分别使用“ helm upgrade 和“ helm rollback
helm install 命令支持基于多种安装源进行应用部署,这包括 Charts 仓库、本地的 Charts 压缩包 、本地 Charts 目录,甚至是指定某个 Charts 的 URL 。
修改了依赖关系后需要执行“ helm dependency update ”命令,执行后会自动下载被依赖的 Charts 至 charts/ 目录中 。
生成一个空 Charts:helm create mychart
确认修改后的 Charts 是否格式良好: helm lint
用helm install 调试运行以查看由 Charts 定义的容器化应用是否能够正确部署 : helm install --name myapp --dry run debug . /mychart set service . type =NodePort
移除命令 中的“一dry-run ”选项后再次运行命令即可完成应用的部署:
通过“ helm package 命令将其打包为 tar 格式后分享给团队 :helm package ./mychart
仓库的管理需要使用“ helm repo”命令进行,如添加仓库:helm repo add incubator http : //storage.googleapis.com/kubernetes - charts-incubator
所有可用的仓库列表 : helm repo list
使用“ helm repo update ”命令获取最新的仓库元数据信息
删除指定的仓库配置: helm repo remove <REPO_NAME>
==========
查看可安装的 chart: helm search
查看 Helm 仓库:helm repo list
NAME URL
stable http://ai-image.jd.com/chartrepo/chart
local http://127.0.0.1:8879/charts
Helm 安装时已经默认配置好了两个仓库:stable 和 local。stable 是官方仓库,local 是用户存放自己开发的 chart 的本地仓库。
可以通过 helm repo add 添加更多的仓库
安装 chart 也很简单,执行如下命令可以安装 MySQL:
helm install stable/mysql
显示已经部署的 release: helm list
删除 release: helm delete
查看chart的状态:helm status my
release 发布后可以执行 helm upgrade 对其升级,通过 --values 或 --set应用新的配置,如:
helm upgrade --set imageTag=5.7.15 my stable/mysql
helm history 可以查看 release 所有的版本。通过 helm rollback 可以回滚到任何版本
指定自己的 values 文件:
helm install --values=myvalues.yaml mysql
执行 helm create mychart 的命令创建 chart mychart
Helm 提供了 debug 的工具:helm lint 和 helm install --dry-run --debug。
helm lint 会检测 chart 的语法,报告错误以及给出建议。
如:helm lint mychart
helm install --dry-run --debug 会模拟安装 chart,并输出每个模板生成的 YAML 内容,如:
helm install --dry-run mychart --debug
Helm 采用了 Go 语言的模板来编写 chart
randAlphaNum、b64enc、quote 都是 Go 模板语言支持的函数,函数之间可以通过管道 | 连接。
{{ randAlphaNum 10 | b64enc | quote }} 的作用是首先随机产生一个长度为 10 的字符串,然后将其 base64 编码,最后两边加上双引号。
Chart 和 Release 是 Helm 预定义的对象,每个对象都有自己的属性,可以在模板中使用
Values 也是预定义的对象,代表的是 values.yaml 文件
========
有时在执行helm uninstall
时有些资源不应该被卸载。Chart的开发者可以在资源中添加额外的说明避免被卸载。
kind: Secret
metadata:
annotations:
"helm.sh/resource-policy": keep
[...]