【Kubernetesリソースシリーズ第五弾】ConfigMapについて知る!

10月 11, 2023

どもです。お気に入りの時計がとうとう壊れてしまって真面目に新しい時計が欲しい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-


↓オススメ教材

kubernetes

Posted by CY