kubernetes - Kubernetes helm、Files.Get 和变量
问题描述
我正在尝试使用 Helm 模板语言动态指定要包含在 configmap.yaml 中的文件的名称。
这是一个例子:
{{- $filename := .Values.KRB5_REALM -}}
apiVersion: v1
data:
# When the config map is mounted as a volume, these will be created as files.
krb5.conf: |
{{ .Files.Get $filename".krb5.conf" | indent 4 }}
kind: ConfigMap
metadata:
name: {{ template "myapp.fullname" . }}
labels:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app: {{ template "myapp.name" . }}
environment: {{ .Values.environment }}
上面的代码会导致错误。
我尝试了几种变体,但没有任何成功,例如:
{{ .Files.Get .Values.KRB5_REALM".krb5.conf" | indent 4 }}
我该如何解决这个问题?
解决方案
像这样组装字符串的常用方法是使用Go 文本/模板 printf
函数。一种方法可能是:
{{ printf "%s.krb5.conf" .Values.KRB5_REALM | .Files.Get | indent 4 }}
或者你可以给表达式加上括号:
{{ .Files.Get (printf "%s.krb5.conf" .Values.KRB5_REALM) | indent 4 }}
推荐阅读
- java - 将帧的字节或十六进制或十进制发送到蓝牙
- python - 如何在使用 ctypes.pythonapi.PyCapsule_New 时设置名称参数
- xamarin - Xamarin Forms 自定义字体 iOS
- powershell - 似乎无法摆脱 Powershell Get-Content 命令
- python - 当且仅当其他列满足特定条件时,熊猫数据框计算特定值在列中出现的次数
- postman - Teamcity newman 未被识别为内部或外部命令
- list - 如何在 Microsoft Outlook 中创建所有任务的文本列表?
- bash - 如何让我的脚本菜单在 Unix 中执行我的下标
- r - 如何定义关于 4 列的新列?
- java - 如何操作给定索引内的字符串?爪哇