掌舵:如何在 toYaml 函数后删除换行符

Cru*_*erX 5 kubernetes-helm

来自官方文档:当模板引擎运行时,它会删除 {{ 和 }} 中的内容,但保留原样的剩余空白。模板声明的花括号语法可以用特殊字符修改,以告诉模板引擎截取空格。{{-(加上破折号和空格)表示应该向左压缩空白,而 -}} 表示应该消耗右边的空白。

但是我尝试了所有变体都没有成功。有没有人解决如何将 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)


Nic*_*lay 3

下面的变体是正确的:

{{ 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)

  • 无论如何,这都不是问题的答案。这只是一个“不用担心没有坏处”,但不是问题的答案。 (3认同)