【发布时间】:2020-08-11 21:14:01
【问题描述】:
我有一个带有以下 yaml 的 helm 3 模板,它工作得非常好。它有一个多行 shell 脚本作为initContainers 的一部分,它可以根据需要工作。
initContainers:
- name: check-crd
image: 'bitnami/kubectl:1.12'
env:
- name: CRDs
value: {{ .Values.CRDs.list }}
command:
- "/bin/bash"
- "-c"
- |
set -x
for i in $(echo $CRDs | tr ":" "\n")
do
kubectl get -o json $i
done
但是,当我尝试将 shell 脚本移动到 helm 值时,出现错误。新的 yaml 和值:
initContainers:
- name: check-crd
image: 'bitnami/kubectl:1.12'
env:
- name: CRDs
value: {{ .Values.CRDs.list }}
command:
- "/bin/bash"
- "-c"
- {{ .Values.CRDs.script }}
values.yaml 文件是:
CRDs:
list: 'mycrd1s.example.com:mycrd2s.example.com'
script: |
set -x
for i in $(echo $CRDs | tr ":" "\n")
do
kubectl get -o json $i
done
当我尝试 helm3 安装它时,我收到一个错误:
error converting YAML to JSON: yaml: line 30: could not find expected ':'
我知道这是某种 YAML 多行字符串问题,但不知道如何解决。我尝试了{{、{{-、toYaml 等的各种组合,但无法解决此问题。有什么方法可以使用多行 shell 脚本作为 helm 值?
PS:我知道我可以使用 shell 脚本作为数据创建ConfigMap 并实现相同的效果,但我希望一切都通过 yaml 文件完成,因为由于某些不可避免的原因我无法创建 configmap .
【问题讨论】:
标签: kubernetes yaml kubernetes-helm