gpt4 book ai didi

kubernetes - Helm 图中的点 "."是什么,以及哪些用例?

转载 作者:行者123 更新时间:2023-12-02 11:30:59 24 4
gpt4 key购买 nike

我目前正在阅读 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" 相同,并在对象上查找字段"file" . .

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

{{- $files := .Files }}        {{/* Get "Files" from . */}}
{{ . }} {{/* Write . as a value */}}
{{ include "mychart.app" . }} {{/* Pass . as the template parameter */}}
.很棘手,因为它具有一定的上下文含义:
  • 在顶层,Helm initializes . to an object带 key Files , Release , Values , 和 Chart .
  • define d 模板,.是模板的参数。 (因此,当您 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 }}

    关于kubernetes - Helm 图中的点 "."是什么,以及哪些用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62472224/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com