如何解决将文件注入Helm模板
我在values.yaml
中定义了一个属性列表,如下所示:
files:
- "file1"
- "file2"
然后在我的模板中,我要根据我的值创建配置映射。
我想出了以下模板:
{{- range $value := .Values.files }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $value }}
data:
{{ $value }}: {{ .Files.Get (printf "%s/%s" "files" $value) | indent 4 }}
{{- end }}
如您所见,我想拥有与文件同名的配置映射。我混合了文档的几个部分,但是我的模板无法按预期工作。
如何通过模板实现configmap的创建?
// EDIT 我希望具有以下ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: file1
data:
file1: <file1 content>
---
apiVersion: v1
kind: ConfigMap
metadata:
name: file2
data:
file2: <file2 content>
解决方法
尝试以下操作:
{{- $files := .Files }}
{{- range $value := .Values.files }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $value }}
data:
{{ $value }}: |
{{ $files.Get (printf "%s/%s" "files" $value) | indent 6 }}
{{- end }}
您的问题似乎是缩进不正确。确保带有$files.Get
的行开头没有空格。
我还添加了{{- $files := .Files }}
来访问.Files
,因为出于某种原因range
正在更改.
范围。
我在文档中找到了this example,但似乎仅在文件内容为一行时才起作用。因此,如果文件仅一行,那么您应该检查示例。
还要注意|
之后的{{ $value }}:
。您需要它,因为文件内容是多行字符串。查看this StackQuestion,了解如何在Yaml中使用多行字符串。
尝试以下操作
{{ $currentScope := .}}
{{- range $value := .Values.files }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $value }}
data:
{{- with $currentScope}}
{{ $value }}: {{ .Files.Get (printf "%s/%s" "files" $value) | indent 4 }}
{{- end }}
{{- end }}
我的图表结构
├── Chart.yaml
├── charts
├── files
│ ├── file1
│ └── file2
├── templates
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── secret.yaml
│ └── service.yaml
└── values.yaml
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。