从官方文件: 当模板引擎运行时,它会删除{{和}}内的内容,但它会完全保留剩余的空格。可以使用特殊字符修改模板声明的大括号语法,以告诉模板引擎选择空白。 {{ - (添加了破折号和空格)表示应该左边的空格,而 - }}表示应该消耗右边的空格。
但我尝试所有变化都没有成功。有没有人解决如何将yaml放在yaml里面?我不想使用range
apiVersion: v1
kind: Pod
metadata:
name: app
labels:
app: app
spec:
containers:
- name: app
image: image
volumeMounts:
- mountPath: test
name: test
resources:
{{ toYaml .Values.pod.resources | indent 6 }}
volumes:
- name: test
emptyDir: {}
当我在没有-}}
的情况下使用此代码时,它会添加换行符:
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 20m
memory: 64Mi
volumes:
- name: test
emptyDir: {}
但是当我使用-}}
时,它会与另一个位置结合。
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 20m
memory: 64Mi
volumes: <- shoud be in indent 2
- name: test
emptyDir: {}
values.yaml是
pod:
resources:
requests:
cpu: 20m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
答案 0 :(得分:1)
以下变体是正确的:
{{ toYaml .Values.pod.resources | indent 6 }}
添加换行符不会在此处产生任何问题。
我已尝试过您的pod.yaml
并收到以下错误:
$ helm install .
Error: release pilfering-pronghorn failed: Pod "app" is invalid: spec.containers[0].volumeMounts[0].mountPath: Invalid value: "test": must be an absolute path
这意味着mountPath
的{{1}}应该类似于volumeMounts
。
因此,以下/mnt
效果非常好,并使用我们在pod.yaml
中定义的确切资源创建了一个pod:
values.yaml
答案 1 :(得分:0)
@Nickolay,它是不一个有效的yaml文件,根据helm - 至少是helm barfs并说:
将YAML转换为JSON时出错:yaml:第51行:找不到预期的密钥
对我来说,第51行是空白区域 - 以下任何内容都不应缩进到同一级别
答案 2 :(得分:0)
这对我有用:
{{1}}