✅ ConfigMapとは?
k8sにおいて、Pod、Deployment、Service がそれぞれの役割を持っているように、環境変数を管理する役割を持つオブジェクトが別途存在する。それが ConfigMapである。
✅ Deployment に環境変数の情報を直接記述した場合のデメリット
spring-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-deployment
spec:
replicas: 3
selector:
matchLabels:
app: backend-app
template:
metadata:
labels:
app: backend-app
spec:
containers:
- name: spring-container
image: spring-server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env: # 環境変数の登録
- name: MY_ACCOUNT # Key 値
value: suhwan # Value 値
- name: MY_PASSWORD
value: pwd1234
上記のマニフェストファイルを見ると、Deployment に関する内容と環境変数に関する内容が混在している。このように環境変数を Deployment の内部に直接記述すると、異なる環境(開発、テスト、本番など)でサーバーを実行する際、柔軟に設定値を変更することが難しくなる。
✅ConfigMapを活用して環境変数を分離する
ConfigMap Manifestファイルの作成
spring-config.yaml
apiVersion: v1
kind: ConfigMap
# ConfigMap の基本情報
metadata:
name: spring-config # ConfigMap の名前
# Key-Value 形式で設定値を保存
data:
my-account: suhwan
my-password: password123
Deployment Manifestファイルの修正
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-deployment
spec:
replicas: 5
selector:
matchLabels:
app: backend-app
template:
metadata:
labels:
app: backend-app
spec:
containers:
- name: spring-container
image: spring-server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: MY_ACCOUNT
valueFrom:
configMapKeyRef:
name: spring-config # 参照する ConfigMap の名前
key: my-account # ConfigMap で設定した Key 値
- name: MY_PASSWORD
valueFrom:
configMapKeyRef:
name: spring-config
key: my-password
Manifestファイルの反映
$ kubectl apply -f spring-config.yaml
$ kubectl apply -f spring-deployment.yaml
# kubectl rollout restart deployment [デプロイメント名]
$ kubectl rollout restart deployment spring-deployment # Deployment の再起動
正常に反映されたか確認

'k8s > archive_1' 카테고리의 다른 글
| 13.Volumeとは? (0) | 2026.03.18 |
|---|---|
| 12.Secret (0) | 2026.03.18 |
| 10.環境変数登録 (0) | 2026.03.18 |
| 9.Service - Spring Bootと通信 (0) | 2026.03.17 |
| 8.serviceとは? (0) | 2026.03.17 |