有没有办法从字符串创建可迭代列表?
Is there a way to create an iterable list from a string?
我正在通过 values.yaml 传递以下字符串:
urls: http://example.com http://example2.com http://example3.com
有没有办法从中创建一个列表,这样我就可以做类似的事情:
{{ range $urls }}
{{ . }}
{{ end }}
问题是我以动态方式传递 urls var,而且我也无法避免为此使用单个字符串(ArgoCD ApplicationSet 不允许我传递列表)。
用空格分割得到一个 url 数组。
{{- range _, $v := $urls | split " " }}
{{ $v }}
{{- end }}
基本上您只需要在模板中添加这一行 yaml
:
{{- $urls := splitList " " .Values.urls }}
它将从 values.yaml
as the list 导入 urls
字符串,这样您就可以 运行 您在问题中发布的代码。
基于helm docs的简单示例:
让我们得到helm docs中使用的简单图表并准备一下:
helm create mychart
rm -rf mychart/templates/*
编辑 values.yaml
并插入 urls
字符串:
urls: http://example.com http://example2.com http://example3.com
在 templates
文件夹中创建 ConfigMap(将其命名为 configmap.yaml
)
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
{{- $urls := splitList " " .Values.urls }}
urls: |-
{{- range $urls }}
- {{ . }}
{{- end }}
如您所见,我正在使用您的循环(带有“-”以避免创建空行)。
安装图表并检查:
helm install example ./mychart/
helm get manifest example
输出:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: example-configmap
data:
urls: |-
- http://example.com
- http://example2.com
- http://example3.com
我正在通过 values.yaml 传递以下字符串:
urls: http://example.com http://example2.com http://example3.com
有没有办法从中创建一个列表,这样我就可以做类似的事情:
{{ range $urls }}
{{ . }}
{{ end }}
问题是我以动态方式传递 urls var,而且我也无法避免为此使用单个字符串(ArgoCD ApplicationSet 不允许我传递列表)。
用空格分割得到一个 url 数组。
{{- range _, $v := $urls | split " " }}
{{ $v }}
{{- end }}
基本上您只需要在模板中添加这一行 yaml
:
{{- $urls := splitList " " .Values.urls }}
它将从 values.yaml
as the list 导入 urls
字符串,这样您就可以 运行 您在问题中发布的代码。
基于helm docs的简单示例:
让我们得到helm docs中使用的简单图表并准备一下:
helm create mychart rm -rf mychart/templates/*
编辑
values.yaml
并插入urls
字符串:urls: http://example.com http://example2.com http://example3.com
在
templates
文件夹中创建 ConfigMap(将其命名为configmap.yaml
)apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: {{- $urls := splitList " " .Values.urls }} urls: |- {{- range $urls }} - {{ . }} {{- end }}
如您所见,我正在使用您的循环(带有“-”以避免创建空行)。
安装图表并检查:
helm install example ./mychart/ helm get manifest example
输出:
--- # Source: mychart/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: example-configmap data: urls: |- - http://example.com - http://example2.com - http://example3.com