【Kubernetes】ConfigMapでファイルをPodにマウントする
2022.05.30
2024.03.24
Kubernetes
ConfigMapPod
はじめに
ConfigMapを使ってPodにファイルをマウントする方法を紹介します。
ConfigMapを使ってファイルをマウントする
今回やりたいことは、ファイルからConfigMapを作り、そのConfigMapを使って、Podにファイルをマウントするということをやっていきます。
ざっくりとした手順は、
- ファイルを表すConfigMapを作成
- ConfigMapから作成したボリュームをマウントしたPodを作成
と、なります。
ConfigMapを作成する
まずは、ファイルを表すConfigMapを作成します。
今回は、HTMLファイルとなるConfigMapを作成します。マニフェスト(configmap.yml
)は下記の通りです。
1apiVersion: v1
2kind: ConfigMap
3metadata:
4 name: index-html
5data:
6 index.html: |-
7 <!DOCTYPE html>
8 <html lang="ja">
9 <head>
10 <meta charset="UTF-8">
11 </head>
12 <body style="background-color: green">
13 <h2>
14 Hello World !
15 </h2>
16 </body>
17 </html>
ConfigMapを作成します。
1kubectl apply -f configmap.yml
キーがファイル名、値がファイルの内容となっているConfigMapが作成されました。
1❯ kubectl describe configmap index-html
2Name: index-html
3Namespace: default
4Labels: <none>
5Annotations: <none>
6
7Data
8====
9index.html:
10----
11<!DOCTYPE html>
12<html lang="ja">
13<head>
14 <meta charset="UTF-8">
15</head>
16<body style="background-color: green">
17 <h2>
18 Hello World !
19 </h2>
20</body>
21</html>
22
23BinaryData
24====
25
26Events: <none>
Deploymentからマウントする
次に、ConfigMapをマウントするPodを作成します。
ConfigMapからボリュームを作成し、そのボリュームをマウントします。
今回作成するDeployment(deployment.yml
)は下記の通りです。
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: nginx
5spec:
6 replicas: 1
7 selector:
8 matchLabels:
9 app: nginx
10 template:
11 metadata:
12 labels:
13 app: nginx
14 spec:
15 containers:
16 - name: web
17 image: nginx
18 ports:
19 - containerPort: 80
20 volumeMounts:
21 - name: html-volume # ConfigMapから作成したボリューム
22 mountPath: /usr/share/nginx/html # ConfigMapのファイルをマウントするパス
23 volumes:
24 - name: html-volume # ConfigMapからボリュームを作成
25 configMap: # 作成したConfigMapを指定
26 name: index-html # ConfigMap名
Deploymentを作成します。
1kubectl apply -f deployment.yml
動作確認
実際にファイルがあるか確認してみます。
はじめに、Podのコンテナのシェルを取得します。
1kubectl exec -it nginx-59d88d6b59-v6sgp -- bash
マウントしたパスにConfigMapのファイルが配置されていることが確認できます。
1root@nginx-59d88d6b59-v6sgp:/usr/share/nginx/html# pwd
2/usr/share/nginx/html
3
4root@nginx-59d88d6b59-v6sgp:/usr/share/nginx/html# ls
5index.html
6
7root@nginx-59d88d6b59-v6sgp:/usr/share/nginx/html# cat index.html
8<!DOCTYPE html>
9<html lang="ja">
10<head>
11 <meta charset="UTF-8">
12</head>
13<body style="background-color: green">
14 <h2>
15 Hello World !
16 </h2>
17</body>
参考
Share