JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

컨피그맵(ConfigMap)을 활용해 환경변수 분리하기

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
쿠버네티스
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 쿠버네티스 입문/실전
slug
use-configmap-to-separate-env
type
post
updatedAt
Dec 6, 2025 04:46 AM

✅ 컨피그맵(ConfigMap)이란?

Spring Boot에서는 설정값을 application.yml으로 분리해서 관리한다. Nest.js에서도 설정값을 .env으로 분리해서 관리한다. 별도의 파일로 분리를 해서 관리함으로써 유지보수가 편리해지고 개발, 테스트, 프로덕션과 같은 환경 분리가 편해진다.
쿠버네티스에서는 파드(Pod), 디플로이먼트(Deployment), 서비스(Service)가 각각의 역할을 가지고 있는 것처럼 환경 변수를 관리하는 역할을 가진 오브젝트가 따로 존재한다. 그게 바로 컨피그맵(ConfigMap)이다.
 
 

✅ 디플로이먼트(Deployment)에 환경 변수의 정보를 같이 작성했을 때의 단점

spring-deployment.yaml
apiVersion: apps/v1 kind: Deployment # Deployment 기본 정보 metadata: name: spring-deployment # Deployment 이름 # Deployment 세부 정보 spec: replicas: 3 # 생성할 파드의 복제본 개수 selector: matchLabels: app: backend-app # 아래에서 정의한 Pod 중 'app: backend-app'이라는 값을 가진 파드를 선택 # 배포할 Pod 정의 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: jaeseong # Value 값 - name: MY_PASSWORD value: pwd1234
위 매니페스트 파일을 보면 디플로이먼트(Deployment)에 대한 내용과 환경 변수에 관련된 내용을 같이 작성했다. 이렇게 환경 변수를 디플로이먼트(Deployment) 내부에 작성하면 다른 환경(개발, 테스트, 프로덕션 등)에서 서버를 실행할 때 유연하게 설정 값을 변경하기 어려워진다.
 
 

✅ 컨피그맵(ConfigMap)을 활용해 환경변수 분리하기

  1. ConfigMap 매니페스트 파일 생성하기
    1. spring-config.yaml
      apiVersion: v1 kind: ConfigMap # ConfigMap 기본 정보 metadata: name: spring-config # ConfigMap 이름 # Key, Value 형식으로 설정값 저장 data: my-account: jscode my-password: password123
      • 참고) 컨피그맵이 잘 적용됐는 지 확인하기 위해 my-account, my-password 값 변경
       
  1. Deployment 매니페스트 파일 수정하기
    1. apiVersion: apps/v1 kind: Deployment # Deployment 기본 정보 metadata: name: spring-deployment # Deployment 이름 # Deployment 세부 정보 spec: replicas: 5 # 생성할 파드의 복제본 개수 selector: matchLabels: app: backend-app # 아래에서 정의한 Pod 중 'app: backend-app'이라는 값을 가진 파드를 선택 # 배포할 Pod 정의 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
       
  1. 매니페스트 파일 반영하기
    1. $ kubectl apply -f spring-config.yaml $ kubectl apply -f spring-deployment.yaml # kubectl rollout restart deployment [디플로이먼트명] $ kubectl rollout restart deployment spring-deployment # Deployment 재시작
 
  1. 잘 반영됐는 지 확인하기
    1. notion image
 
author
category
쿠버네티스
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 쿠버네티스 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 04:46 AM
📎
이 글은 비전공자도 이해할 수 있는 쿠버네티스 입문/실전 강의의 수업 자료 중 일부입니다.