KubernetesのConfigMap設定について

目的

DB接続情報などを記載した設定ファイルは開発者全員に見せる必要がないという場合に、
ConfigMapを使用して、ソース管理とは別で必要最低限の人だけが見れるように設定します。

前提

・kubernetesが作成済みであること
・kubectlコマンドが実行可能であること

ConfigMapのyamlファイル作成

ConfigMapのyamlファイルを作成する。
ConfigMapには単一の値もしくは
Configurationファイルのような値を設定できる。

作成ファイル:game-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
 name: game-config
data:
 # プロパティーに似たキー。各キーは単純な値にマッピングされている
 player_initial_lives: "3"
 ui_properties_file_name: "user-interface.properties"

 # ファイルに似たキー
 game.properties: |
  enemy.types=aliens,monsters
  player.maximum-lives=5
user-interface.properties: |
  color.good=purple
  color.bad=yellow
  allow.textmode=true

 

作成したConfigMapファイルをkubectlコマンドでデプロイする。

1kubectl apply -f game-config.yaml

デプロイされたconfigmapを確認する

以下のコマンドで登録内容を確認する。

1kubectl get configmap game-config

yaml形式で内容を見たい場合は以下のコマンドを実行する

1kubectl get configmap game-config -o yaml

 

 

上記で作成したConfigMapを参照するPodを作成する。

作成ファイル:pod-demo.yaml

apiVersion: v1
kind: Pod
metadata:
 name: configmap-demo-pod
spec:
 containers:
  - name: demo
   image: alpine
   command: ["sleep", "3600"]
   env:
    # 環境変数を定義します。
    - name: PLAYER_INITIAL_LIVES # ここではConfigMap内のキーの名前とは違い
                    # 大文字が使われていることに着目してください。
     valueFrom:
      configMapKeyRef:
       name: game-config # この値を取得するConfigMap。
       key: player_initial_lives # 取得するキー。
    - name: UI_PROPERTIES_FILE_NAME
     valueFrom:
      configMapKeyRef:
       name: game-config
       key: ui_properties_file_name
   volumeMounts:
   - name: config
    mountPath: "/config"
    readOnly: true
 volumes:
  # Podレベルでボリュームを設定し、Pod内のコンテナにマウントします。
  - name: config
   configMap:
    # マウントしたいConfigMapの名前を指定します。
    name: game-config
    # ファイルとして作成するConfigMapのキーの配列
    items:
   - key: "game.properties"
    path: "game.properties"
   - key: "user-interface.properties"
    path: "user-interface.properties"

 

 

作成したPodに入りマウントしたConfigMapの情報を確認する。

以下のコマンドで対象Podを確認する。

以下のコマンドでPodに入る

1kubectl exec -it configmap-demo-pod /bin/sh

環境変数に登録した内容を確認する。

以下のコマンドを実行する

1printenv PLAYER_INITIAL_LIVES

以下のコマンドを実行する

1printenv UI_PROPERTIES_FILE_NAME

 

 

Configurationファイル形式でマウントしたファイルを確認する

ファイルがマウントされているか確認する

1ls -l /config

ファイルの中身を確認する

1cat /config/game.properties

ファイルの中身を確認する

1cat /config/game.properties

ぜひ参考にしてみてください!

Smallitのサービス