クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

ConfigMapで設定を変える

このレッスンのあとで: ConfigMapの値を、動いているPodに読ませ直せる。

60分のレッスンコマンド15件Kubernetes のラボ:専用の Ubuntu VM に生徒ごとの1ノード k3s クラスター

ConfigMapとは何か

ConfigMap(コンフィグマップ)は、アプリの設定を、アプリの外に置いておく入れ物です。設定を変えたいとき、イメージを作り直さずに、ConfigMapの値だけを書き換えられます。

注文アプリの「本日のおすすめ」は、毎日変わります。そのたびにアプリを作り直すのは、手間がかかります。

このレッスンのゴール

メモ

ConfigMapの値を、動いているPodに読ませ直せる。

重要な言葉

ことばいみれい
ConfigMap設定を、名前と値の組で入れておく部品
キーConfigMapの中の、設定1つの名前SPECIAL_DISH
環境変数プログラムが始まるときに受け取る、名前と値
イメージコンテナのもとになる、アプリを1つにまとめた型
ロールアウトPodを、新しいものに順に入れ替える作業

学生が入力するセルは、このプレビューでは空白です。

ConfigMapは設定の入れ物

ConfigMapには、キーと値の組を入れます。たとえば、キーが SPECIAL_DISH、値が curry です。

パスワードのような秘密は、ここに入れません。ConfigMapは、誰が見てもよい設定のためのものです。Podの外にあるので、Podを作り直さなくても値を書き換えられます。

名前空間を作る

コマンド
kubectl create namespace cafe

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

厨房のDeployment

コマンド
kubectl create deployment kitchen --image=busybox:1.37.0 -n cafe -- sleep 3600

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ConfigMapを作る

コマンド
kubectl create configmap board -n cafe --from-literal=SPECIAL_DISH=curry

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

値だけを読む

コマンド
kubectl get configmap board -n cafe -o jsonpath='{.data.SPECIAL_DISH}'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ConfigMapの中身を見る

コマンド
kubectl describe configmap board -n cafe

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ConfigMapを環境変数としてPodに渡す

ConfigMapは、作っただけではPodに届きません。Deploymentの書き方に、「この値を環境変数で渡す」と足します。

kubectl set env --from=configmap/board は、そのキーを全部、同じ名前の環境変数にします。書き方が変わるので、ロールアウトでPodが入れ替わります。

環境変数として渡す

コマンド
kubectl set env deployment/kitchen -n cafe --from=configmap/board

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

入れ替わるまで待つ

コマンド
kubectl rollout status deployment/kitchen -n cafe

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

Podの中の値を読む

コマンド
kubectl exec deployment/kitchen -n cafe -- printenv SPECIAL_DISH

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

動いているPodは古い値のまま

環境変数は、Podが始まるときに1度だけ決まります。あとでConfigMapを書き換えても、動いているPodの値は変わりません。

新しい値を読ませるには、Podを入れ替えます。kubectl rollout restart が、順に入れ替えます。

ConfigMapを書き換える

コマンド
kubectl patch configmap board -n cafe -p '{"data":{"SPECIAL_DISH":"ramen"}}'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ConfigMapの値を読む

コマンド
kubectl get configmap board -n cafe -o jsonpath='{.data.SPECIAL_DISH}'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

Podの値は、まだ古い

コマンド
kubectl exec deployment/kitchen -n cafe -- printenv SPECIAL_DISH

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ConfigMapとPodの値のずれ

出来事ConfigMapの値Podが見る値
環境変数として渡して、Podが始まるcurrycurry
ConfigMapを書き換えるramencurry
rollout restart で入れ替えるramenramen

学生が入力するセルは、このプレビューでは空白です。

Podを入れ替える

コマンド
kubectl rollout restart deployment/kitchen -n cafe

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

入れ替わるまで待つ

コマンド
kubectl rollout status deployment/kitchen -n cafe

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

新しい値を読む

コマンド
kubectl exec deployment/kitchen -n cafe -- printenv SPECIAL_DISH

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

ConfigMapを書き換えれば、動いているPodも新しい値になると思いがちです。環境変数として渡した値は、Podが始まるときに決まります。書き換えたら、Podを入れ替えます。入れ替えるまで、古い値のままです。

名前空間を片づける

コマンド
kubectl delete namespace cafe

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

このラボとソースについて: Kubernetes のラボ:専用の Ubuntu VM に生徒ごとの1ノード k3s クラスター

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。