計画は、ドッキングされたアプリケーションをKubernetesに移動することです。
Dockerコンテナーは、いくつかのファイルを使用します。これは、docker-composeファイルで指定することによってdockerボリュームにマウントするために使用しました。
volumes:
- ./license.dat:/etc/sys0/license.dat
- ./config.json:/etc/sys0/config.json
構成ファイルは環境ごとに異なり、ライセンスファイルは全体で同じになります。
これをhelmテンプレートファイル(yaml)で定義して、実行中のアプリケーションで使用できるようにするにはどうすればよいですか?
これに対する一般的なベストプラクティスは何ですか? values.yamlで構成値を定義することも可能で、config.jsonファイルがそれを取得できますか?
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" . }}-config
ConfigMapの名前と一致します 。
そして デプロイメントのポッドにマウントします :
volumeMounts:
- name: "{{ template "centrifugo.fullname" . }}-config"
mountPath: "/centrifugo"
readOnly: true
このアプローチでは、values.yamlからjson構成ファイルにデータを入力できるため、環境ごとにカスタム値ファイルを指定してグラフのデフォルト値を上書きすることで、環境ごとに異なる値を設定できます。
License.datを処理するために、ConfigMapに追加のエントリを追加して、静的コンテンツが埋め込まれた追加のファイルを定義できます。これはライセンスであるため、代わりにConfigMapをシークレットに切り替えることをお勧めします。これは、定義内のシークレットのWordConfigMapを置き換える単純な変更です。ただし、最初にConfigMapで試すことができます。