k8s/archive_1

17.Volume - ConfigMap、Secret

YOOANT 2026. 3. 18. 19:28

1.ConfigMapのManifestファイルの作成

spring-config.yaml

apiVersion: v1
kind: ConfigMap

# ConfigMapの基本情報
metadata:
  name: spring-config # ConfigMap名

# Key、Value形式で設定値を保存
data:
  db-host: mysql-service
  db-port: "3306"
  db-name: kube-practice

 

spring-deployment.yamlの修正

apiVersion: apps/v1
kind: Deployment

# Deploymentの基本情報
metadata:
  name: spring-deployment # Deployment名

# Deploymentの詳細情報
spec:
  replicas: 3 # 作成するPodのレプリカ数
  selector:
    matchLabels:
      app: backend-app # 以下で定義したPodのうち、「app: backend-app」という値を持つPodを選択

  # デプロイするPodの定義
  template:
    metadata:
      labels: # ラベル(=カテゴリ)
        app: backend-app
    spec:
      containers:
        - name: spring-container # コンテナ名
          image: spring-server # コンテナ作成時に使用するイメージ
          imagePullPolicy: IfNotPresent # ローカルから先にイメージを取得する。存在しない場合はレジストリから取得する。
          ports:
            - containerPort: 8080  # コンテナで使用するポートを明示的に指定
          env:
            **- name: DB_HOST
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-host
            - name: DB_PORT
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-port
            - name: DB_NAME
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-name**
            - name: DB_USERNAME
              value: root
            - name: DB_PASSWORD
              value: password123

SecretのManifestファイルの作成

spring-secret.yaml

apiVersion: v1
kind: Secret

# Secretの基本情報
metadata:
  name: spring-secret # Secret名

# Key、Value形式で値を保存
stringData:
  db-username: root
  db-password: password123

 

spring-deployment.yamlの修正

apiVersion: apps/v1
kind: Deployment

# Deploymentの基本情報
metadata:
  name: spring-deployment # Deployment名

# Deploymentの詳細情報
spec:
  replicas: 3 # 作成するPodのレプリカ数
  selector:
    matchLabels:
      app: backend-app # 以下で定義したPodのうち、「app: backend-app」という値を持つPodを選択

  # デプロイするPodの定義
  template:
    metadata:
      labels: # ラベル(=カテゴリ)
        app: backend-app
    spec:
      containers:
        - name: spring-container # コンテナ名
          image: spring-server # コンテナ作成時に使用するイメージ
          imagePullPolicy: IfNotPresent # ローカルから先にイメージを取得する。存在しない場合はレジストリから取得する。
          ports:
            - containerPort: 8080  # コンテナで使用するポートを明示的に指定
          env:
            - name: DB_HOST
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-host
            - name: DB_PORT
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-port
            - name: DB_NAME
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-name
            **- name: DB_USERNAME
              valueFrom:
                secretKeyRef:
                  name: spring-secret
                  key: db-username
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: spring-secret
                  key: db-password**

Manifestファイルの反映

$ kubectl apply -f spring-secret.yaml
$ kubectl apply -f spring-config.yaml
$ kubectl apply -f spring-deployment.yaml
$ kubectl rollout restart deployment spring-deployment

 

動作確認

日本語