本文介绍了什么是点,以及在舵图中有哪些用例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在看Helm的文档,点(.)至少有3种不同的用法,有什么具体的定义吗?它与bash的使用(实际的文件夹/文件)有什么共同之处吗?文档中的一些案例
这将打印之前调用的范围内的访问文件?
{{- $files := .Files }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{ . }}: |-
{{ $files.Get . }}
{{- end }}
这将告诉"mychart.app"使用当前文件夹中的文件(类似bash的行为)
{{ include "mychart.app" . | indent 4 }}
这个,我猜它是从整个文件夹中取出的值?我想这是不正确的,因为它不工作(它是由另一名员工当时制作的,我必须修复它)
{{- define "read.select-annot" -}}
{{- range $key, $value := . }}
{{ $key }}: {{ $value }}
{{- end }}
{{- end }}
感谢您的帮助
推荐答案
通常,Helm模板中的.
与文件或目录无关。
首先,.
可以是字符串中的一个字符:
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{/* ^^^^^^^^^^^^
this is a literal string "config1.toml" */}}
...
{{- end }}
其次,.
可以是查找运算符。你的问题中没有任何可靠的例子,但一个典型的用法是在价值中查找。如果您values.yaml
文件有
root:
key: value
然后您可以展开
{{ .Values.root.key }}
和root
和key
之前的.
在词典结构中向下导航一级。
第三个用法(也可能是让您困惑的一个用法)是.
本身就是一个变量。
{{ . }}
您可以对其进行字段查找,您有一些这样的示例:.Files
与index . "Files"
相同,并在对象.
上查找字段"Files"。
您在几个地方将.
用作变量:
{{- $files := .Files }} {{/* Get "Files" from . */}}
{{ . }} {{/* Write . as a value */}}
{{ include "mychart.app" . }} {{/* Pass . as the template parameter */}}
.
比较棘手,因为它有一定的上下文含义:
- 在顶层,Helm initializes
.
to an object,键Files
、Release
、Values
和Chart
。 - 在
define
d模板中,.
是模板的参数。(因此,当您include
或template
时,您需要向下传递.
作为该参数。) - 在
range
循环中,.
是正在迭代的当前项。 - 在
with
块中,.
是匹配项(如果存在)。
range
的交互可能比较棘手。让我们看一下您的循环的简化版本:# {{ . }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
- {{ . }}
{{- end }}
在range
循环之外,.
可能是顶级Helm对象。但在range
循环中,.
是文件名(每个值依次来自tuple
)。这就是您需要将.
中的值保存到局部变量中的地方:{{/* We're about to invalidate ., so save .Files into a variable. */}}
{{- $files := .Files }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{/* This . is the filename from the "tuple" call */}}
{{ . }}: |-
{{/* Call .Get, from the saved $files, passing the filename .
as the parameter */}}
{{ $files.Get . }}
{{- end }}
这篇关于什么是点,以及在舵图中有哪些用例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!