本文介绍了什么是点,以及在舵图中有哪些用例?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在看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模板中的.与文件或目录无关。

Helm模板语言使用GO的text/template系统。句点字符有两种不同的显示方式。

首先,.可以是字符串中的一个字符:

{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{/*             ^^^^^^^^^^^^
       this is a literal string "config1.toml"             */}}
...
{{- end }}

其次,.可以是查找运算符。你的问题中没有任何可靠的例子,但一个典型的用法是在价值中查找。如果您values.yaml文件有

root:
  key: value

然后您可以展开

{{ .Values.root.key }}

rootkey之前的.在词典结构中向下导航一级。

第三个用法(也可能是让您困惑的一个用法)是.本身就是一个变量。

{{ . }}

您可以对其进行字段查找,您有一些这样的示例:.Filesindex . "Files"相同,并在对象.上查找字段"Files"。

您在几个地方将.用作变量:

{{- $files := .Files }}        {{/* Get "Files" from . */}}
{{ . }}                        {{/* Write . as a value */}}
{{ include "mychart.app" . }}  {{/* Pass . as the template parameter */}}

.比较棘手,因为它有一定的上下文含义:

  • 在顶层,Helm initializes . to an object,键FilesReleaseValuesChart
  • defined模板中,.是模板的参数。(因此,当您includetemplate时,您需要向下传递.作为该参数。)
  • 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 }}

这篇关于什么是点,以及在舵图中有哪些用例?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 19:17