web-dev-qa-db-ja.com

ヘルムチャートを使用してKubernetesのボリュームにファイルを保存するにはどうすればよいですか?

計画は、ドッキングされたアプリケーションをKubernetesに移動することです。

Dockerコンテナーは、いくつかのファイルを使用します。これは、docker-composeファイルで指定することによってdockerボリュームにマウントするために使用しました。

volumes:
      - ./license.dat:/etc/sys0/license.dat
      - ./config.json:/etc/sys0/config.json

構成ファイルは環境ごとに異なり、ライセンスファイルは全体で同じになります。

これをhelmテンプレートファイル(yaml)で定義して、実行中のアプリケーションで使用できるようにするにはどうすればよいですか?

これに対する一般的なベストプラクティスは何ですか? values.yamlで構成値を定義することも可能で、config.jsonファイルがそれを取得できますか?

3
Chillax

Jsonを扱っているので、従うべき良い例は 公式の安定版/遠心チャート かもしれません。 config.jsonファイルを含むConfigMapを定義します。

data:
  config.json: |-
{{ toJson .Values.config| indent 4 }}

したがって、values.yamlからconfigセクションを取得し、toJson関数を使用してjsonに変換します。構成は、そのyamlで定義したいものなら何でもかまいません-チャートには次のものがあります:

config:
  web: true
  namespaces:
  - name: public
    anonymous: true
    publish: true
...

Deployment.yamlでそれ configmapからボリュームを作成します

      volumes:
      - name: {{ template "centrifugo.fullname" . }}-config
        configMap:
          name: {{ template "centrifugo.fullname" . }}-config

ご了承ください {{ template "centrifugo.fullname" . }}-configConfigMapの名前と一致します

そして デプロイメントのポッドにマウントします

        volumeMounts:
        - name: "{{ template "centrifugo.fullname" . }}-config"
          mountPath: "/centrifugo"
          readOnly: true

このアプローチでは、values.yamlからjson構成ファイルにデータを入力できるため、環境ごとにカスタム値ファイルを指定してグラフのデフォルト値を上書きすることで、環境ごとに異なる値を設定できます。

License.datを処理するために、ConfigMapに追加のエントリを追加して、静的コンテンツが埋め込まれた追加のファイルを定義できます。これはライセンスであるため、代わりにConfigMapをシークレットに切り替えることをお勧めします。これは、定義内のシークレットのWordConfigMapを置き換える単純な変更です。ただし、最初にConfigMapで試すことができます。

3
Ryan Dawson