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
_を介して必要なすべてのフィールドに個別にアクセスできるようにすることなく、構成をポッドに一度に渡す他の可能性はありますか?
エンコードを回避したい場合の別の提案を次に示します。
env:
- name: MYCONFIG
value: {{ .Files.Get "config.json" | toPrettyJson }}
helm docs によると、helmは組み込みのGoテキスト/テンプレートパッケージと Sprigテンプレート関数ライブラリ によって提供されるtoPrettyJson
などのテンプレート関数を使用します=。