SE(しがないエンジニア)のブログ

IT技術ネタ(クラウド・セキュリティ周り)が中心です!他雑記(お馬さん 他いろいろ)もあり。

Kubernetes(AKS)をやさしく学ぶ旅 その9

デプロイ方法を知ったあとは ConfigMap

アプリケーションの Deployment を知ったあとは、デプロイの世界からは少し離れたものを学ぶようにします。

アプリケーション内で利用する設定情報や外部へのAPIキーは環境に依存するため、アプリケーションのコンテナイメージで管理せず別方法で管理することが望ましくなります。これを実現するための解として Kubernetes では「ConfigMap」という仕組みが準備されています。

blog.a-know.me

ちなみに、ConfigMap を作成する方法としては3つの方法が存在します。

1 ➡ Kubernetesマニフェストファイルを作成

2 ➡ アプリケーションの config ファイルをマウント

3 ➡ kubectl コマンドから作成

1の作成方法に関しては前述の blog 記事でも記載されております。2の作成方法に関しては「kubectl create configmap」を利用する方法です。

qiita.com

また、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 で設定を保持する、と覚えておきます!短いですがこんなところで。