来自官方文档:当模板引擎运行时,它会删除 {{ 和 }} 中的内容,但保留原样的剩余空白。模板声明的花括号语法可以用特殊字符修改,以告诉模板引擎截取空格。{{-(加上破折号和空格)表示应该向左压缩空白,而 -}} 表示应该消耗右边的空白。
但是我尝试了所有变体都没有成功。有没有人解决如何将 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: {}
Run Code Online (Sandbox Code Playgroud)
当我使用此代码而不-}}添加换行符时:
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 20m
memory: 64Mi
volumes:
- name: test
emptyDir: {}
Run Code Online (Sandbox Code Playgroud)
但是当我使用-}}它时,它会与另一个位置连接。
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 20m
memory: 64Mi
volumes: <- shoud be in indent 2
- name: test
emptyDir: {}
Run Code Online (Sandbox Code Playgroud)
values.yaml 是
pod:
resources:
requests:
cpu: 20m
memory: 64Mi
limits:
cpu: 100m
memory: 128Mi
Run Code Online (Sandbox Code Playgroud)
小智 15
这对我有用:
{{ toYaml .Values.pod.resources | trim | indent 6 }}
Run Code Online (Sandbox Code Playgroud)
下面的变体是正确的:
{{ toYaml .Values.pod.resources | indent 6 }}
Run Code Online (Sandbox Code Playgroud)
添加换行符在这里不会产生任何问题。
我已经尝试过你的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
Run Code Online (Sandbox Code Playgroud)
这意味着mountPath应该volumeMounts类似于/mnt.
因此,以下方法pod.yaml效果很好,并使用我们在中定义的确切资源创建一个 Pod values.yaml:
apiVersion: v1
kind: Pod
metadata:
name: app
labels:
app: app
spec:
containers:
- name: app
image: image
volumeMounts:
- mountPath: /mnt
name: test
resources:
{{ toYaml .Values.pod.resources | indent 6 }}
volumes:
- name: test
emptyDir: {}
Run Code Online (Sandbox Code Playgroud)