zna*_*nat 11 go-templates kubernetes-helm
我有一个通过range迭代渲染多次的模板,我可以$.Release.Name毫无问题地访问变量外部变量。但是,当我包含模板时,我无法让它工作:
{{ range $key, $val := $.Values.resources }}
...
annotations:
checksum/config: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)
并在secrets.yaml:
apiVersion: "v1"
kind: "Secret"
metadata:
name: {{ $.Release.Name }}-secrets
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
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
Run Code Online (Sandbox Code Playgroud)
如何访问包含模板中的变量?
Fra*_*ois 20
只需更换.与$使用在全球范围内,而不是你创建的本地之一。
例子:
{{- include "my-chart.labels" $ | nindent 4 }}
Run Code Online (Sandbox Code Playgroud)
根据文档,https : //helm.sh/docs/chart_template_guide/control_structures/#modifying-scope-using-with:
我们可以使用 $ 从父作用域访问对象 Release.Name。$ 在模板执行开始时被映射到根作用域,并且在模板执行期间它不会改变
随着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 }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3618 次 |
| 最近记录: |