带有 if-else 条件的 Kubernetes YAML 文件

Kubernetes YAML file with if-else condition

我有用于在所有环境中部署我的应用程序的 yaml 文件。我只想为测试环境添加一些 JVM args。无论如何我可以在 YAML 文件中做到这一点吗?

这是 yaml

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88
      env:
       - name: JAVA_OPTS
         value: "
                -Dlog4j.configurationFile=log4j2.xml
                -Denable.scan=true

                "

这里我希望 -Denable.scan=true 是有条件的,应该只为测试环境添加。

我尝试了以下方法,但它不起作用,并且 kubernete 抛出错误 error converting YAML to JSON: yaml: line 53: did not find expected key

尝试过:-

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88
      env:
       - name: JAVA_OPTS
         value: "
                -Dlog4j.configurationFile=log4j2.xml
                ${{if eq "TEST" "TEST" }} # just sample condition , it will change
                -Denable.scan=true
                 ${{end }}

                "

helm 会这样做。事实上,语法几乎与您输入的相同,并且是这样的:

      env:
       - name: JAVA_OPTS
         value: "
                -Dlog4j.configurationFile=log4j2.xml
                 {{- if eq .Values.profile "TEST" }}
                -Denable.scan=true
                 {{- end }}

                "

然后您通过安装包(称为图表)声明您要使用哪个配置文件(即您设置 .Values.profile 值)

您可以查看 https://helm.sh/ 了解详细信息和示例