0

Helm チャートを使用して kubernetes にデプロイし、helm を使用してそれらのチャートを生成します。残念ながら、私は helm または helm テンプレートに精通していません (そして、kubernetes にはあまり詳しくありません) ので、以下の質問をする際に、間違った用語を使用する可能性があります (実際、この段落で既に行っている可能性があります)。スピードアップ。

次のような Helm テンプレート foo.yaml があります。

{{- define "env.variables" }}
  echo "--- Setting env variables ---"

  export foo={{ .Values.global_vars.foo }}
{{- end }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: "{{ .Values.global_vars.bar }}-set-env-vars"
data:
  set-env-vars.sh: {{ include "env.variables" . | b64enc }}

ご覧のとおり、いくつかの環境変数を作成するスクリプトを定義しています。私は、いくつかの条件が true である変数のみを作成するという要件に取り組んでいます ( .Values.global_vars.baz == 1)

次のようなことを行うことでこれを達成できると思います:

{{- define "env.variables" }}
  if [ {{ .Values.global_vars.baz }} = 1 ]
  then
    echo "--- Setting env variables ---"

    export foo={{ .Values.global_vars.foo }}
  fi
{{- end }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: "{{ .Values.global_vars.bar }}-set-env-vars"
data:
  set-env-vars.sh: {{ include "env.variables" . | b64enc }}

しかし、それは非常にエレガントな方法とは思えません。data条件が満たされたスクリプトのみを含む条件式を入れることはできますか? このようなもの:

{{- define "env.variables" }}
  echo "--- Setting env variables ---"

  export foo={{ .Values.global_vars.foo }}
{{- end }}
{{- define "no.env.variables" }}
  echo "--- No env variables to set ---"
{{- end }}
apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: "{{ .Values.global_vars.bar }}-set-env-vars"
data:
  set-env-vars.sh: {{ if {{ .Values.global_vars.bar }} = 1 then include "env.variables" else include "no.env.variables" . | b64enc }}

それが理にかなっていることを願っています。これは文字通り、実権を握る初めての遠足なので、初心者向けのガイダンスを探しています。

4

1 に答える 1