helm笔记
一。注意事项
1.values.yaml 中可以使用'#'号注释行,而/templates 下的文件不能用#号,如果要注释可以使用 {{/* context */}}
2。{{- #忽略前面空格 ,-}} #忽略后面空格
3.在yaml中如果要输入大块有格式的数据可以用 ‘|-’,这样就会保留原有格式,否则我们加载到程序中时不会保留原有格式
4.在YAML中可以使用 '!!str' 将内容强制为字符类型,'!!int'将内容强制转换为整数类型
5.include与 template的区别:
template后面无法使用管道,template只是一个动作而不是一个函数,数据属性是内联的,无缩进
include是一个函数,后面可以使用管道,可以利用indent函数缩进
二。模板内读取文件中内容:
1.需要传入要读取的文件名
{{ $file := .Files }}
{{ range tuple "file" "file2" }}
{{ . }} ----- {{ $file.Get .}}
{{ end }}
########################
2.筛选指定类型只匹配以yaml结尾的文件:
{{ $root := . }}
{{ range $path, $bytes := .Files.Glob "**.yaml" }}
{{ $path }}: |-
{{ $root.Files.Get $path }}
{{ end }}
3.将文件内容导入configmap:
{{ .Files.Get "file" }}
4.将指定类型文件读入后显示文件名和文件内容:
{{- (.Files.Glob "foo/*").AsConfig | nindent 2 }}
渲染结果:
# Source: helm-repo/templates/configmap.yaml
file: |
hello
file2: |
word
5.将文件内容导入做Secret
{{- (.Files.Glob "bar/*").AsSecrets | nindent 2 }}
渲染结果:
# Source: helm-repo/templates/configmap.yaml
file: aGVsbG8K
file2: d29yZAo=
6.逐行显示文件:
{{ range .Files.Lines "foo/bar.txt" }}
{{ . }}
{{ end }}
三。内置方法:
1.title #首字母大写
2.upper #转为大写
3.quote #用引号括起来
4.default val #定义一个默认值
5.requied #定义一个约束,values文件中必须定义此值,否则就报错
6.b64enc #使用base64加密
7.b64dec #使用base64解密
8.indent INT #缩进指定字符
9.nindent INT #在新行缩进
四。模板变量:
{{- $NAME := .Release.Name -}} #定义变量并赋值
{{ $NAME }} #变量引用
上面定义的变量的作用是全局的,而下面的示例变量的范围则是局部的,只作用于定义的块中:
#字典循环:
{{- range $key, $val := .Values.favorite }} {{ $key }}: {{ $val | quote }} {{- end}}
#列表循环:
{{ range $index, $val := .Values.name }}
{{ $index }} : {{ $val }}
{{ end }}
Note:在helm中循环使用range来实现的,没有FOR。
五.chart与子chart:
- 子chart是独立的,这意味着子chart永远不会明确依赖其父chart。
- 子chart无法访问其父级的值,除非在父chart中定义global
- 父chart可以覆盖子chart的值。
六。调试:
1.helm lint Chart_Path #查看是否有语法错误
2.helm install --dry-run --debug #查看渲染结果而不真的发布到k8s
3.helm get manifest Release_name #查看release的K8Syml定义文件
4.helm template Chart -x templates/deployment.yaml #查看指定模板的渲染结果
posted on 2019-05-07 14:02 it_man_xiangge 阅读(3124) 评论(0) 编辑 收藏 举报