Kubernetes ConfigMap을 활용한 환경 변수 분리

artp·2025년 1월 13일

kubernetes

목록 보기
14/18
post-thumbnail

컨피그맵(ConfigMap)이란?

Kubernetes에서 ConfigMap은 환경 변수와 설정값을 외부에서 관리할 수 있는 객체로, 유지보수성과 환경별 설정 관리 효율성을 높여줍니다. Deployment에 환경 변수를 직접 작성하는 대신 ConfigMap으로 분리하면 코드와 설정이 분리되어 관리가 편리해집니다.

컨피그맵을 사용해야 하는 이유

1. 유지보수 용이성

설정값을 변경할 때 애플리케이션의 매니페스트 파일을 수정할 필요 없이 ConfigMap만 업데이트하면 됩니다.

2. 환경 분리

개발, 테스트, 프로덕션 등 각 환경에 맞는 설정값을 쉽게 변경할 수 있습니다.

3. 재사용성

여러 리소스에서 동일한 설정값을 공유할 수 있습니다.

컨피그맵 생성 및 적용

1. ConfigMap 매니패스트 파일 생성

spring-config.yaml 파일을 생성합니다. Key-Value 형식으로 설정값을 저장합니다.

apiVersion: v1
Kind: ConfigMap

# ConfigMap 기본 정보
metadata:
  name: spring-config # ConfigMap 이름
  
# Key-Value 형식으로 설정값 저장
data: 
  my-account: artp123 # Key-Value 형식의 데이터
  my-password: pwd123
  • my-accountmy-password는 스프링 부트 애플리케이션에서 환경 변수로 사용됩니다.

2. Deployment 매니페스트 파일 수정

spring-deployment.yaml 파일에서 환경 변수 설정 부분을 ConfigMap과 연결하도록 수정합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-deployment
spec:
  replicas: 5 # 생성할 Pod의 복제본 개수
  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: # ConfigMap을 참조하는 환경 변수 설정
            - name: MY_ACCOUNT
              valueFrom:
                configMapKeyRef:
                  name: spring-config # 참조할 ConfigMap 이름
                  key: my-account # ConfigMap에서 가져올 Key
            - name: MY_PASSWORD
              valueFrom:
                configMapKeyRef:
                  name: spring-config # 참조할 ConfigMap 이름
                  key: my-password # ConfigMap에서 가져올 Key
  • valueFrom.configMapKeyRef: ConfigMap의 특정 Key 값을 환경 변수로 가져옵니다.
  • ConfigMap 이름(spring-config)과 Key 값(my-account, my-password)을 명시합니다.

3. 매니페스트 파일 적용

ConfigMap과 Deployment 매니페스트 파일을 쿠버네티스 클러스터에 적용합니다.

# ConfigMap 생성
kubectl apply -f spring-config.yaml

# Deployment 생성 또는 업데이트
kubectl apply -f spring-deploymen.yaml

# 변경 사항 저장을 위해 Deployment 재시작
# kubectl rollout restart deployment [디플로이먼트명]
$ kubectl rollout restart deployment spring-deployment # 디플로이먼트 재시작

4. 적용 결과 확인

profile
donggyun_ee

0개의 댓글