【Kubernetes】ConfigMapでファイルをPodにマウントする

2022.05.30
2024.03.24
Kubernetes
ConfigMapPod

本ページはAmazonアフィリエイトのリンクを含みます。

はじめに

ConfigMapを使ってPodにファイルをマウントする方法を紹介します。

ConfigMapを使ってファイルをマウントする

今回やりたいことは、ファイルからConfigMapを作り、そのConfigMapを使って、Podにファイルをマウントするということをやっていきます。

ざっくりとした手順は、

  1. ファイルを表すConfigMapを作成
  2. 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>

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee