web-dev-qa-db-ja.com

JSON文字列全体をHelmチャート値に渡す方法は?

JSON文字列全体をHelmチャート値に渡すにはどうすればよいですか?

私は_values.yml_を持っていますが、設定値にはアプリケーションの設定を含むJSON全体が含まれている必要があります

_...
config: some JSON here
...
_

この値をシークレットテンプレートに渡し、それをボリュームとしてKubernetesポッドにマウントする必要があります。

_{{- $env := default "integration" .Values.env}}
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-{{ $env }}
type: Opaque
data:
  config.json: {{ .Values.config | b64enc | quote }}
_

ただし、_'{"redis": "localhost:6379"}'_のように一重引用符で囲まれた文字列を渡す明らかなアプローチは失敗します。Helmが何らかの理由で文字列内のすべての二重引用符を削除するためです(エスケープしても)、結局、有効ではない_{redis: localhost:6379}_になりますJSON。

tpl関数を使用してテンプレートファイルをロードし、_values.yml_を介して必要なすべてのフィールドに個別にアクセスできるようにすることなく、構成をポッドに一度に渡す他の可能性はありますか?

5
Kostrahb

エンコードを回避したい場合の別の提案を次に示します。

env:
  - name: MYCONFIG
  value: {{ .Files.Get "config.json" | toPrettyJson }}

helm docs によると、helmは組み込みのGoテキスト/テン​​プレートパッケージと Sprigテンプレート関数ライブラリ によって提供されるtoPrettyJsonなどのテンプレート関数を使用します=。

0
Rose