gpt4 book ai didi

kubernetes-helm - 在 Go 模板中使用 include inside range (helm)

转载 作者:行者123 更新时间:2023-12-03 13:47:12 25 4
gpt4 key购买 nike

我有一个使用 range 多次渲染的模板迭代,我可以访问变量外部变量,例如 $.Release.Name没有问题。但是,当我包含模板时,我无法让它工作:

{{ range $key, $val := $.Values.resources }}
...
annotations:
checksum/config: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
{{ end }}

而在 secrets.yaml :
apiVersion: "v1"
kind: "Secret"
metadata:
name: {{ $.Release.Name }}-secrets

我收到此错误:
Error: render error in "botfront-project/templates/deployment.yaml": template: [filename] :19:28: executing [filename] at <include (print $.Template.BasePath "/secrets.yaml") .>: error calling include: template: .../secrets.yaml:4:19: executing ".../secrets.yaml" at <$.Release.Name>: nil pointer evaluating interface {}.Name


如何访问包含模板中的变量?

最佳答案

TL; 博士;
只需更换 .$使用全局范围而不是您创建的本地范围。
例子:

{{- include "my-chart.labels" $ | nindent 4 }}
说明
根据文档, https://helm.sh/docs/chart_template_guide/control_structures/#modifying-scope-using-with :

we can use $ for accessing the object Release.Name from the parentscope.$ is mapped to the root scope when template execution beginsand it does not change during template execution


range我们改变循环内的范围。确实, {{- include "my-chart.labels" . | nindent 4 }}将调用当前作用域 . .
所以如果你在 helm doc 中深入研究这个“范围”的东西,你最终会发现这部分: https://helm.sh/docs/chart_template_guide/variables/
通过这个例子:
{{- range .Values.tlsSecrets }}
apiVersion: v1
kind: Secret
metadata:
name: {{ .name }}
labels:
# Many helm templates would use `.` below, but that will not work,
# however `$` will work here
app.kubernetes.io/name: {{ template "fullname" $ }}
# I cannot reference .Chart.Name, but I can do $.Chart.Name
helm.sh/chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}"
app.kubernetes.io/instance: "{{ $.Release.Name }}"
# Value from appVersion in Chart.yaml
app.kubernetes.io/version: "{{ $.Chart.AppVersion }}"
app.kubernetes.io/managed-by: "{{ $.Release.Service }}"
type: kubernetes.io/tls
data:
tls.crt: {{ .certificate }}
tls.key: {{ .key }}
---
{{- end }}

关于kubernetes-helm - 在 Go 模板中使用 include inside range (helm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61297149/

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