前: StatefulSet-volumeClaimTemplate
ここまででだいぶK8sにも慣れてきたと思うのでここからは少し手順を簡略化して書いていきます。
ConfigMapはPodに設定する環境変数やファイルをPodとは切り離して扱うようにするリソースです。 まずは環境変数としてのConfigMapの利用を確認します。
Podにパラメータを渡す方法として、Podのenvに指定する方法を紹介しましたが、1つ2つならまだしも、大量の環境変数が必要な場合に1つずつenvを定義するのは大変です。 このような場合、ConfigMapに設定情報を登録し、PodからConfigMapを読み込むことでパラメータを渡します。 また、ConfigMapは複数のPodに同じConfigMapを紐づけることができるため、複数Podで使用する環境変数の集中管理も可能です。
ConfigMapをPodに紐づける方法は次の2種類があります。
- ConfigMapを環境変数として渡す
- ConfigMapをVolumeにマウントする
まずはConfigMapを環境変数として渡す方法を試してみます。
-
以下を満たすマニフェストを作成しデプロイしてください。ConfigMapについては公式ドキュメントを参考にしてください。PodでConfigMapを環境変数として読み込む方法は公式ドキュメントを参考にしてください。
- 要件
- ConfigMap
- 以下のKey-Valueをdataとして持つ
- EP1: The Python Menace
- EP2: Attack of the Clones
- EP3: Revenge of the Sith
- EP4: A New Hoge
- EP5: The Empire Strikes Back
- EP6: Return of the Jedi
- EP7: The Force Awakens
- EP8: The Last Jedi
- EP9: The Rise of Kubernetes
- 以下のKey-Valueをdataとして持つ
- Deployment(1つ目)
- メインコンテナはshが使用できれば何でも良い
- 上記ConfigMapのKey-Valueをすべて環境変数として読み込む
- メインコンテナのコマンドは以下を指定
- command:
['/bin/sh','-c','echo "Star Wars no title ichiran \n $EP1 \n $EP2 \n $EP3 \n $EP4 \n $EP5 \n $EP6 \n $EP7 \n $EP8 \n $EP9"; sleep 3600']
- command:
- Deployment(2つ目)
- メインコンテナはshが使用できれば何でも良い
- 上記ConfigMapのKey-Valueをすべて環境変数として読み込む
- メインコンテナのコマンドは以下を指定
- command:
['/bin/sh','-c','echo "Star Wars no koukai jyun \n $EP4 \n $EP5 \n $EP6 \n $EP1 \n $EP2 \n $EP3 \n $EP7 \n $EP8 \n $EP9"; sleep 3600']
- command:
- ConfigMap
- 要件
-
各Deploymentで展開したPodのログを表示してください。
-
ConfigMapの値の誤りを修正し再デプロイしてください。なお、正しいvalueは参考サイトなどを参照してください。
(誤りは3か所) -
各Deploymentで展開したPodのログを表示してください。表示が
変わらないことを確認してください。 -
各Deploymentで展開したPodを削除し、セルフ・ヒーリングさせてください。
-
各Deploymentで展開したPodのログを表示してください。表示が変わることを確認してください。
-
作成したリソースを削除してください。
以上で本演習は終了です。
具体的な操作およびその結果に関する回答例はこちらにあります。 具体的な操作方法がわからなかった場合や、想定した結果にならなかった場合などに参照してください。