【Kubernetes】複数のConfigMapを同じディレクトリにマウントする

スポンサーリンク

はじめに

projectedボリュームを使って、複数のConfigMapを同じディレクトリにマウントする方法を紹介します。

projectedボリューム

projectedボリュームは、複数のボリュームソースを同じディレクトリに配置することができる機能です。

対応しているボリュームソースは下記の通りです。

  • secret
  • downwardAPI
  • configMap
  • serviceAccountToken

下記のようにprojectedボリュームを使って、複数のConfigMapを1つのボリュームとして定義することで、同じディレクトリにマウントできるようになります。

  volumes:
  - name: test-volume
    projected: # projectedボリューム
      sources: # CofigMapを列挙
      - configMap:
          name: config1
      - configMap:
          name: config2
      - configMap:
          name: config3

複数のConfigMapを同じディレクトリにマウントしてみる

実際に、試してみます。

ConfigMapの作成

まずはConfigMapを3つ作成します。(config1.yml, config2.yml, config3.yml)それぞれ、テキストファイルを持つConfigMapになっています。

apiVersion: v1
kind: ConfigMap
metadata:
  name: config1
data:
  config1.txt: |-
    hoge
apiVersion: v1
kind: ConfigMap
metadata:
  name: config2
data:
  config2.txt: |-
    foo
apiVersion: v1
kind: ConfigMap
metadata:
  name: config3
data:
  config3.txt: |-
    bar
kubectl apply -f config1.yml config2.yml config3.yml

Podの作成

次に、projectedボリュームを使って、複数のConfigMapを同じディレクトリにマウントするPod(pod.yml)を作成します。

apiVersion: v1
kind: Pod
metadata:
  name: projected-volume-pod
spec:
  containers:
  - name: projected-volume-container
    image: busybox
    args:
    - sleep
    - "999"
    volumeMounts:
    - name: all-in-one
      mountPath: "/projected-volume"
      readOnly: true
  volumes:
  - name: all-in-one
    projected: # projectedボリューム
      sources: # CofigMapを列挙
      - configMap:
          name: config1
      - configMap:
          name: config2
      - configMap:
          name: config3
kubectl apply -f pod.yml

ボリュームの確認

コンテナにアクセスし、マウントしたディレクトリを確認すると、それぞれのConfigMapで定義していたテキストファイルが配置されていることが確認できます。

❯ kubectl exec -it projected-volume-pod -- /bin/sh

/ # ls /projected-volume/
config1.txt  config2.txt  config3.txt

参考

タイトルとURLをコピーしました