具有多个命令的 helm chart init 容器

helm chart init container with multiple commands

我们正在为我们的 helm 图表定义一个 initContainer。相关部分如下

  initContainers:
      - name: "set-volumes-init"
        image: "IMAGE AND TAG"
        command: ['sh', '-c', 'COMMAND 1 && COMMAND 2 && COMMAND 3']
        volumeMounts:
        - name: volume-summary
          mountPath: /usr/summ

问题是:如何使 "command" 像根据是否定义值使用不同的命令?

例如:如果我定义了值:podx.val2,我希望包含 COMMAND 2,但如果不是,那么我不想要它。

其他命令相同

如果我这样做,我会构建一个包含 shell 脚本的自定义图像,并由环境变量控制它。

#!/bin/sh
if [ -n "$DO_COMMAND_2" ]; then
  command2
fi

您编写的样式可以结合使用 YAML 块语法和 Helm 条件。这可能更难维护和测试,但像这样的东西应该可以工作:

command: >-
  command1
{{ if .Values.val2 }}
  && command2
{{ end }}
  && command3

YAML >- 语法会导致其后缩进的所有内容折叠成一行,这有助于解决空格控制问题。