Helm: セット内の複雑なオブジェクトのサポート

作成日 2017年03月03日  ·  3コメント  ·  ソース: helm/helm

チャットで、私は--setを介してこのようなオブジェクトを定義する機能について尋ねましたが、悲しいことに真実に直面しました。

env:
  - name: ROUTER
    value: cake
  - name: PASSWORD
    value: derp

values.yamlこのようなスタンザを使用して、特定のコンテナー仕様のenv変数全体のニーズを定義するのが好きなので、仕様では次のことだけが必要です。

        env:
{{ toYaml .Values.env | indent 10 }}

これが役立つ理由はたくさんあります。

  1. 空の変数をアプリに渡すことを心配する必要はありません。
  2. 変数はすべて1つの場所で定義されているため、変数名が変更された場合でも、すばやく設定して作業を進めることができます。
  3. 他のいくつかの変数をメインプロセスに渡したいという理由だけで、 deploymentオブジェクトのようなものを完全に再デプロイすることを心配する必要はありません。

残念ながら、これらのタイプのオブジェクトの受け渡しは現在サポートされていません。 今のところ、これを回避するための最善の方法でテンプレートでifステートメントを使用しますが、アプリに関する潜在的に動的な情報の大きな綿棒をvalues.yaml定義するのは素晴らしいことです。

feature

最も参考になるコメント

これは、次の構文を使用して可能になりました。

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

これはここに文書化さ

全てのコメント3件

私は実際にkube-legoを観察することでこれを行う別の方法を見つけました:

          {{- range $key, $value := .Values.config }}
            - name: "{{ $key }}"
              value: "{{ $value }}"
          {{- end }}

私の問題も同様です。
Chartaws-cluster-autoscalerを次の場所で使用します。
https://github.com/kubernetes/charts/tree/master/stable/aws-cluster-autoscaler

--setを使用して、コマンドラインからautoscalingGroups []。nameを渡し、ファイルparams.yamlを介してその他の情報を渡します。

autoscalingGroups:
- minSize: 2
  maxSize: 8
awsRegion: eu-west-1

自動スケーリンググループ名を次のように設定しようとすると、次のようになります。

$ helm upgrade cluster-autoscaler stable/aws-cluster-autoscaler -f params.yaml --set "autoscalingGroups[].name"="nodes.k8s.test.eu-west-1.aws.redacted.net"

しかし、それはうまくいきません。

ドキュメントを読んで、これは知られていますが、それでもこれができるといいでしょう。

これは、次の構文を使用して可能になりました。

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

これはここに文書化さ

このページは役に立ちましたか?
0 / 5 - 0 評価