はじめに
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