定义集合时添加新闻行

问题描述 投票:0回答:2

我正在尝试定义一个集合(dict),我想在每个定义上添加一个新行(为了便于阅读),例如:

{{ $deployment := dict 
"Release" .Release 
"Chart" .Chart 
"Values" .Values }}

但是当我这样做时,helm响应一个解析错误:

Error: parse error in "XXX": template: XXX:2: unclosed action
Error: UPGRADE FAILED: parse error in "XXX": template: XXX:2: unclosed action

HELM有没有办法做到这一点?

kubernetes yaml kubernetes-helm
2个回答
1
投票

TLDR;

用多线方式声明dict是不可能的,就像使用Perl胖逗号运算符一样。 请检查“Sprig:Go模板的模板函数”的reference

相反,你可以使用这种hacky方式来实现类似的结果:

  1. 为了便于阅读,请将全局值文件中的每个键值对保持在单独的行中:

# values.yaml
  -- 
  global:
  someMap:
    coffee: robusta
    origin: Angola
    crema: yes
  1. 在_helpers.tpl中定义帮助器模板:

{{- define "mychart.labels.standard"}}
{{- $global := default (dict) .Values.global.someMap -}}
Release: {{ .Release.Name | quote }}
Chart: {{ .Chart.Name }}
Values:
{{- $global := default (dict) .Values.global.someMap -}} 
{{- range $key, $value := $global }}
  {{ $key }}: {{ $value }}
{{- end }}
{{- end -}}
  1. 将其包含在另一个模板中:

helm_data:
  {{- $global := default (dict) .Values.global -}}
  {{- range $key, $value := $global }}
    {{ $key }}: {{ $value }}
  {{- end }}
  {{ include "mychart.labels.standard" . | nindent 0 -}}
  1. 渲染它以验证结果(helm模板--name dict-chart。)

---
# Source: mychart/templates/data_type.yaml
helm_data:
    someMap: map[crema:true origin:Angola coffee:robusta]
  
Release: "dict-chart"
Chart: mychart
Values:
    coffee: robusta
    crema: true
    origin: Angol

1
投票

似乎不可能这样做。 Helm模板系统基本上是Go模板系统。如Go templating docs所述:

除了原始字符串之外,虽然注释可以,但操作可能不会跨越换行符。

© www.soinside.com 2019 - 2024. All rights reserved.