ano*_*999 11 go-templates kubernetes kubernetes-helm
我目前正在阅读 helm 的文档,点 (.) 至少有 3 种不同的用途,是否有任何具体定义?它与 bash 使用(实际文件夹/文件)有什么共同之处吗?
文档中的一些案例
这会打印之前调用的范围内的访问文件吗?
{{- $files := .Files }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{ . }}: |-
{{ $files.Get . }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
这告诉“mychart.app”使用当前文件夹中的文件(类似 bash 的行为)
{{ include "mychart.app" . | indent 4 }}
Run Code Online (Sandbox Code Playgroud)
而这个,我想它从整个文件夹中获取值???我想这是不正确的,因为它不起作用(当时是另一名员工制作的,我必须修复它)
{{- define "read.select-annot" -}}
{{- range $key, $value := . }}
{{ $key }}: {{ $value }}
{{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
Dav*_*aze 19
一般来说,.在 Helm 中模板与文件或目录无关。
Helm 模板语言使用 Go 的文本/模板系统。句点字符可以通过几种不同的方式出现在那里。
首先,.可以是字符串中的一个字符:
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{/* ^^^^^^^^^^^^
this is a literal string "config1.toml" */}}
...
{{- end }}
Run Code Online (Sandbox Code Playgroud)
其次,.可以是查找操作符。您的问题中没有任何可靠的示例,但典型的用途是查找值。如果您的values.yaml文件有
root:
key: value
Run Code Online (Sandbox Code Playgroud)
然后你可以扩展
root:
key: value
Run Code Online (Sandbox Code Playgroud)
而.beforeroot和key在字典结构中向下导航一级。
第三种用途,也可能是让您感到困惑的用途,.它本身就是一个变量。
{{ .Values.root.key }}
Run Code Online (Sandbox Code Playgroud)
您可以对其进行字段查找,并且您有一些示例:.Files与 相同index . "Files",并在对象上查找字段“文件” .。
您可以.在几个地方用作变量:
{{ . }}
Run Code Online (Sandbox Code Playgroud)
. 很棘手,因为它具有一定的上下文含义:
.到对象的钥匙Files,Release,Values,和Chart。defined 模板中,.是模板的参数。(因此,当您使用include或 时template,您需要将.其作为该参数传递。)range循环中,.是迭代的当前项目。with块中,.是匹配项(如果存在)。特别是,与 的交互range可能很棘手。让我们看一下循环的简化版本:
{{- $files := .Files }} {{/* Get "Files" from . */}}
{{ . }} {{/* Write . as a value */}}
{{ include "mychart.app" . }} {{/* Pass . as the template parameter */}}
Run Code Online (Sandbox Code Playgroud)
在range循环之外,.可能是顶级 Helm 对象。但在range循环内部,.是文件名(tuple依次来自 的每个值)。这就是您需要将值保存.到局部变量的地方:
# {{ . }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
- {{ . }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |