【Kubernetesリソースシリーズ第五弾】ConfigMapについて知る!
どもです。お気に入りの時計がとうとう壊れてしまって真面目に新しい時計が欲しいsaisaiです。
今回はkuberneteリソースシリーズ第五段ということで、ConfigMapについて記事にしてみたいと思います。
Kubernetesの扱いにも慣れてきたところですが、油断せずに頑張っていきたいと思います。
ConfigMapの概要
ConfigMapとは、端的にいえばKubernetes上のあらゆる情報を定義するリソースです。
早速マニフェストファイルをみていきましょう。
#ConfigMapを定義
apiVersion: v1
kind: ConfigMap
metadata:
name: test-config
namespace: default
data: #設定内容を定義
test.cfg: |
user: testuser
type: "application"
---
apiVersion: v1
kind: Pod
metadata:
name: test
namespace: default
spec:
containers:
- name: test
image: nginx:1.17.2-alpine
env:
- name: TYPE
valueFrom:
configMapKeyRef: #Key,Value形式でConfigMapの値を使用
name: test-config
key: type
volumeMounts:
- name: config-storage
mountPath: /home/nginx
volumes:
- name: config-storage
configMap:
name: sample-config
items: #こちらも同様にConfigMapの設定を使用
- key: test.cfg
path: test.cfg
ConfigMapはspecではなくdataで定義します。ConfigMapを定義しておくことで、Key,Value形式でPodの定義に利用しているという点が特徴的です。
それでは以下のコマンドでリソースを作成していきます。
$ kubectl apply -f マニフェストファイル名
エラーが何も起こらず、正常にpodが作成されているかを確認します。
$ kubectl get all
作成されていることが確認できましたらpodに接続してConfigMapにて指定した環境変数が正しく設定されているかを確認します。まずはpodに接続しましょう。
$ kubectl exec -it test /bin/sh
接続できましたら、envコマンドで環境変数を確認します。
# env
・・・
TYPE=application
・・・
設定された環境変数の中にConfigMapにて指定したものがあることが分かります。
続いてマウント設定によって作成されているはずのファイルの中身もみていきましょう。
cat /home/nginx/test.cfg
user: testuser
こちらもしっかり設定されていることが分かりましたね!
以上で、ConfigMapの仕様について一通り体験することができました。
ひとこと
今回はConfigMapについて記事にしてみました。
Kubernetesはその性質上非常に多くのコンテナを扱うことになるので、それぞれの役割に沿ったConfigMapを作成しておくことでちょっとして修正も手軽かつ安全に行うことができそうです。
与える環境変数に規則性などがある場合は積極的に使っていきたいですね!
ここまで読んでいただきありがとうございました。
-saisai-
↓オススメ教材