MSA 13일차 : 쿠버네티스 - ConfigMap

parang·2025년 6월 13일

LG CNS AM Inspire Camp 2기

목록 보기
46/50
post-thumbnail

✅ ConfigMap이란?

  • ConfigMap은 설정값을 관리하는 Kubernetes 리소스.

  • 환경변수, 설정파일, 명령줄 인자처럼 애플리케이션의 설정 데이터를 외부에서 분리해서 관리.

  • 값을 가져오려고 사용.

✅ ConfigMap 타입

환경변수

ConfigMap

	name : config
data: 
	password: 123

Depolyment

env:
	configMapKeyRef:
    	name: config
        key: password
...
	

볼륨 마운트

볼륨 이름을 먼저 정의!

volumes:
	- name: volum-config
    configMap:
    name: config (사용할 컨피그)
    items:
    	- key: 컨피그 키
        path: 컨테이너 내 경로
    	

볼륨 마운트 방식 실습

config yaml

쿠버네티스에 추가할 컨피그 리소스.

apiVersion: v1
kind: ConfigMap
metadata:
  name: backend-user-config
data:
  application-dev.yml: |
    server:
      port: 8080

    spring:
      datasource:
        url: jdbc:mysql://k8s-external-user-mysql-service:3306/user?serverTimezone=UTC&useSSL=true&autoReconnect=true&useUnicode=true&characterEncoding=utf-8
        username: user
        password: 1234
        driver-class-name: com.mysql.cj.jdbc.Driver
        hikari:
          connection-test-query: SELECT 1  # HikariCP 유효성 검사 추가
          validation-timeout: 5000

      jpa:
        hibernate:
          ddl-auto: create  # 오직 테스트 환경에서만
        generate-ddl: true   # 오직 테스트 환경에서만 (spring.jpa.generate-ddl)
        show-sql: true
        open-in-view: false

      kafka:
        bootstrap-servers: k8s-external-kafka-service:9092

dev.yml 수정

기존 비지니스 로직 쪽 dev.yml을 yaml 쪽으로 옮겼기 때문에 겹치는 부분을 수정해 주어야 한다.

spring:
	config:
    	import: file:/etc/config/application-dev.yml
	

바뀐 코드 커밋 푸쉬.

Deployment 수정

      volumes:
        - name: backend-user-config-volume
          configMap:
            name: backend-user-config
            items:
              - key: application-dev.yml
                path: application-dev.yml
                
    -> volume은 container와 같은 뎁스!
    
 ---
 
         volumeMounts:
          - mountPath: /etc/config
            name: backend-user-config-volume(볼륨이름)
            
    -> 볼륨 마운트는 컨테이너 안에서!
            
            

✅ Secret

  • 민감한 정보(비밀번호, API 키, 인증서등)를 안전 저장, 관리하기 위한 오브젝트

  • ConfigMap과 유사

  • 자동으로 평문 -> Base64로 변환

타입 : 환경변수, 볼륨 마운트

차이 :
configMap : name
Secret : secretName

apiVersion: v1
kind: Secret
metadata:
  name: backend-user-secret
stringData:
  application-secret.yml: |
    spring:
      datasource:
        username: 아이디
        password: 비밀번호
---
secret:
   secretName: backend-user-secret
   items:
    - key: application-secret.yml
      path: application-secret.yml

변경 감지, 재시작

Reloader

자동으로 롤링 업데이트 하는 오픈 소스 컨트롤러

설치

kubectl apply -f https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml

Deployment 추가

annotations: 
reloader.stakater.com/auto: "true"
profile
파랑입니다.

0개의 댓글