k8s/archive_1

11.ConfigMap

YOOANT 2026. 3. 18. 10:33

✅ 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

日本語