[Kubernetes] ConfigMapでコンテナの設定ファイルをVolumeに配置する

スポンサーリンク

例えばMySQLのDocker Hubイメージは/docker-entrypoint-initdb.dにあるファイルを起動時に読み込むようになっており、ここにSQLを書けばコンテナ起動と同時にデータベースやテーブルを作成したりできます。
ローカルのDockerで動かす場合、ローカルに書いたファイルをVolumeとしてマウントしてやれば良いですが、Kubernetesが実行される環境はローカルマシンではないのでそのようにファイルを渡すことができません。

一つの案として、mysqlイメージからFROMで派生した自作イメージのDockerfileを書くことでイメージにファイルを埋め込むことができます。
しかしイメージを作成するということはpushしてpullできる環境も用意しなきゃいけないということで若干めんどくなります。
オリジナルのmysqlイメージとKubernetesのシステムだけを使ってなんとかできないでしょうか。できます。

ConfigMap

ConfigMapはキーと値の対応を保存できるオブジェクトですが、値を「ファイルとして」コンテナにマウントすることができます。
以下はそれを使ってMySQLにコンテナ作成と同時にDB・テーブルを設定する例です。

Deployment

ConfigMap

こんな感じでConfigMapを使えば特定のファイルを読み込むことになっているイメージにファイルを与えることができます。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする