Kubernetes(AKS)をやさしく学ぶ旅 その9
デプロイ方法を知ったあとは ConfigMap
アプリケーションの Deployment を知ったあとは、デプロイの世界からは少し離れたものを学ぶようにします。
アプリケーション内で利用する設定情報や外部へのAPIキーは環境に依存するため、アプリケーションのコンテナイメージで管理せず別方法で管理することが望ましくなります。これを実現するための解として Kubernetes では「ConfigMap」という仕組みが準備されています。
ちなみに、ConfigMap を作成する方法としては3つの方法が存在します。
1 ➡ Kubernetes のマニフェストファイルを作成
2 ➡ アプリケーションの config ファイルをマウント
3 ➡ kubectl コマンドから作成
1の作成方法に関しては前述の blog 記事でも記載されております。2の作成方法に関しては「kubectl create configmap」を利用する方法です。
また、ConfigMap の値の参照方法としては
・環境変数渡し
・Volume としてマウント
があります。前者の場合はマニフェストファイルの [containers] - [env] フィールドを利用([valueFrom] - [configMapKeyRef])します。後者の場合もマニフェストファイルには記載しますが [containers] - [volumeMounts] ([volumes] - [configMap])フィールドの設定で ConfigMap をコンテナーのどこにマウントするか具体的に指定します。
つづいて Secret !!
一般的なアプリケーションは他システムの呼び出しで使用するAPIキー、データベースへの接続のための ID / パスワード等、機密データを扱います。その管理の際には Secrets リソースを使います。ConfigMap との違いとしては ConfigMap が何も暗号化されていないのに対して Secrets は etcd の中で暗号化された状態で管理される、といった違いがあります。
ちなみに、作成する方法としては2つの方法が存在します
1 ➡ Kubernetes のマニフェストファイルを作成
2 ➡ 機密情報のファイルをマウント
また、ConfigMap の際と同様に値の参照方法としては
・環境変数渡し
・Volume としてマウント
があります。同じですね。前者の場合はこれまた ConfigMap と同様ですがマニフェストファイルの [containers] - [env] フィールドを利用(Secrets の場合は [valueFrom] - [secretKeyRef])します。後者の場合もこれまたマニフェストファイルに記載しますが [containers] - [volumeMounts] ([volumes] - [secret])フィールドの設定で Secret をコンテナーのどこにマウントするか具体的に指定します。
今回はハンズオンなしとなりますが、環境依存する部分に関しては ConfigMap や Secrets で設定を保持する、と覚えておきます!短いですがこんなところで。