Java/Spring 개발자를 위한 Kubernetes 환경 설정 관리 방법
Spring Boot 애플리케이션을 Kubernetes 환경에서 운영할 때 중요한 문제 중 하나는 환경 설정(configuration) 관리입니다.
로컬 환경에서는 보통 다음과 같은 방식으로 설정을 관리합니다.
application-dev.yml
application-prod.yml
하지만 Kubernetes에서는 애플리케이션을 컨테이너 형태로 배포하기 때문에 환경 설정을 외부에서 관리하는 방식을 사용합니다.
대표적인 방법이 ConfigMap과 Secret입니다.
1. Kubernetes에서 설정 관리가 필요한 이유
컨테이너 기반 환경에서는 다음과 같은 문제를 해결해야 합니다.
예
DB 계정
API 키
외부 서비스 URL
이 정보를 애플리케이션 코드에 직접 넣으면 다음과 같은 문제가 발생합니다.
- 환경별 설정 관리 어려움
- 보안 문제
- 배포 시 설정 변경 어려움
Kubernetes에서는 이를 해결하기 위해 ConfigMap과 Secret을 제공합니다.
2. ConfigMap이란 무엇인가
ConfigMap은 애플리케이션 설정 정보를 저장하는 Kubernetes 리소스입니다.
보통 다음과 같은 데이터를 저장합니다.
- 환경 변수
- 설정 값
- 애플리케이션 구성 정보
예
kind: ConfigMap
metadata:
name: spring-config
data:
SPRING_PROFILES_ACTIVE: prod
SERVER_PORT: "8080"
DB_HOST: database-service
이 ConfigMap은 Kubernetes Pod에서 사용할 수 있습니다.
3. Spring Boot에서 ConfigMap 사용
ConfigMap을 Spring Boot 애플리케이션에서 사용하는 가장 일반적인 방법은 **환경 변수(Environment Variable)**입니다.
Deployment 예시
kind: Deployment
metadata:
name: spring-app
spec:
replicas: 2
selector:
matchLabels:
app: spring-app
template:
metadata:
labels:
app: spring-app
spec:
containers:
- name: spring-app
image: myrepo/spring-app:latest
envFrom:
- configMapRef:
name: spring-config
이렇게 하면 ConfigMap에 정의된 값이 컨테이너 환경 변수로 전달됩니다.
Spring Boot에서는 다음과 같이 사용할 수 있습니다.
4. Secret이란 무엇인가
Secret은 민감한 정보를 저장하는 Kubernetes 리소스입니다.
대표적인 예
- DB 비밀번호
- API 토큰
- 인증 키
예시
kind: Secret
metadata:
name: spring-secret
type: Opaque
data:
DB_USERNAME: YWRtaW4=
DB_PASSWORD: cGFzc3dvcmQ=
여기서 값은 Base64 인코딩되어 저장됩니다.
5. Spring Boot에서 Secret 사용
Secret도 ConfigMap과 동일하게 환경 변수로 사용할 수 있습니다.
Deployment 예
- secretRef:
name: spring-secret
Spring Boot 설정
spring.datasource.password=${DB_PASSWORD}
이렇게 하면 Secret 값이 애플리케이션에 전달됩니다.
6. ConfigMap vs Secret 차이
두 리소스의 차이는 다음과 같습니다.
| 목적 | 일반 설정 값 | 민감 정보 |
| 보안 | 일반 텍스트 | Base64 인코딩 |
| 사용 예 | 환경 변수 | 비밀번호 |
즉
Secret → 보안 정보
로 생각하면 이해하기 쉽습니다.
7. 설정을 파일로 사용하는 방법
ConfigMap은 환경 변수뿐 아니라 파일 형태로도 사용할 수 있습니다.
예
- name: config-volume
mountPath: /config
volumes:
- name: config-volume
configMap:
name: spring-config
이렇게 하면 Pod 내부에서 다음과 같이 파일로 사용할 수 있습니다.
Spring Boot에서는 이 파일을 직접 읽을 수 있습니다.
8. Spring Boot + Kubernetes 설정 구조
Spring Boot 애플리케이션의 설정 구조는 다음과 같이 구성할 수 있습니다.
↓
Environment Variables
↓
ConfigMap
↓
Secret
즉 애플리케이션 설정은 Kubernetes 외부에서 관리됩니다.
9. 실제 운영 환경 구성
실제 운영 환경에서는 다음과 같은 구조를 많이 사용합니다.
↓
애플리케이션 설정
Secret
↓
비밀번호 / API Key
Spring Boot 애플리케이션
↓
ConfigMap
↓
Secret
이 구조를 사용하면 환경 설정을 애플리케이션과 분리하여 관리할 수 있습니다.
결론
Kubernetes 환경에서 Spring Boot 애플리케이션을 운영할 때는 환경 설정 관리가 매우 중요합니다.
ConfigMap과 Secret을 사용하면 다음과 같은 장점이 있습니다.
- 환경별 설정 관리 가능
- 보안 정보 보호
- 애플리케이션 재빌드 없이 설정 변경
이 방식은 Kubernetes 기반 애플리케이션 운영에서 표준적인 설정 관리 방법입니다.
Spring Boot 개발자가 ConfigMap과 Secret을 이해하면 클라우드 네이티브 환경에서 애플리케이션 운영 능력을 크게 향상시킬 수 있습니다.
'Spring & Backend' 카테고리의 다른 글
| Spring Boot 애플리케이션을 Kubernetes에서 운영할 때 생기는 문제 (0) | 2026.03.05 |
|---|---|
| Kubernetes에서 Spring Boot 트래픽 관리 (Ingress) (0) | 2026.03.05 |
| Spring Boot + Docker + Kubernetes 배포 구조 (0) | 2026.03.05 |
| 레거시 Java(Spring4, Java8) 시스템은 Kubernetes에서 잘 동작할까? (0) | 2026.03.05 |
| IntelliJ에서 Claude Code vs GitHub Copilot 비교: Java Spring 개발자의 AI 코딩 워크플로 분석 (0) | 2026.03.05 |
