티스토리 뷰
✅ 아래 글의 내용 및 이미지는 인프런 "쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2" 강의를 듣고 정리한 글입니다.
Configmap, Secret 기본 개념
Kubernetes에서 ConfigMap과 Secret은 애플리케이션의 설정값을 Pod와 분리하여 관리하는 리소스입니다.
하지만 두 개의 목적과 보안 수준이 다르므로, 상황에 따라 적절히 선택해야 합니다.
ConfigMap이란?
일반적인 설정값을 저장하는 리소스
ConfigMap은 환경 변수, 설정 파일 등을 Pod에 전달하는 데 사용됩니다.
ConfigMap 예제
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_ENV: "production"
LOG_LEVEL: "info"
ConfigMap을 Pod의 환경 변수로 사용
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: APP_ENV
✅ APP_ENV 설정값이 환경 변수로 Pod 내부에 주입됨
Secret이란?
📌 비밀번호, API 키 등 민감한 데이터를 저장하는 리소스
Secret은 보안이 중요한 데이터를 Base64로 인코딩하여 저장합니다.
Secret 예제
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
DB_PASSWORD: "cGFzc3dvcmQ=" # "password"를 Base64 인코딩한 값
Secret을 Pod의 볼륨으로 마운트
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
volumes:
- name: secret-volume
secret:
secretName: my-secret
containers:
- name: my-container
image: nginx
volumeMounts:
- name: secret-volume
mountPath: "/etc/secret"
readOnly: true
✅ Secret 데이터가 /etc/secret/ 디렉토리에 파일 형태로 저장됨
3️⃣ ConfigMap vs Secret 차이점 정리
비교 항목 ConfigMap Secret
목적 | 일반적인 설정값 저장 | 민감한 정보 저장 |
데이터 저장 방식 | 평문 (key-value) | Base64 인코딩 |
보안성 | 낮음 (모든 사용자가 조회 가능) | 높음 (RBAC 적용 가능) |
Pod 내 적용 방식 | 환경 변수, 볼륨 마운트 가능 | 환경 변수, 볼륨 마운트 가능 |
사용 예시 | 서비스 URL, 로그 레벨 설정 | DB 비밀번호, API 키 |
4️⃣ ConfigMap과 Secret을 함께 사용하는 경우
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: APP_ENV
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: DB_PASSWORD
volumeMounts:
- name: secret-volume
mountPath: "/etc/secret"
readOnly: true
volumes:
- name: secret-volume
secret:
secretName: my-secret
✅ ConfigMap 값은 환경 변수로 주입
✅ Secret 값은 환경 변수 + 볼륨 파일로 저장 가능
🎯 결론
- ConfigMap은 환경 변수, 설정값을 저장할 때 사용
- Secret은 비밀번호, API 키와 같은 민감한 정보를 저장할 때 사용
- Secret은 보안성을 위해 Base64 인코딩되며 RBAC을 적용 가능
- 둘 다 환경 변수나 볼륨 마운트 방식으로 Pod 내부에 주입 가능
비밀번호, API 키는 반드시 Secret을 사용하고, 일반 설정값은 ConfigMap을 사용
1. 기본 개념
- ConfigMap
- 민감하지 않은 데이터를 저장 (예: spring.profiles.active=dev).
- Pod에 환경 변수나 볼륨으로 주입되어 설정을 관리.
- Secret
- 민감한 데이터를 Base64로 인코딩해 저장 (예: DB 비밀번호).
- Pod에 환경 변수나 볼륨으로 주입되며 보안 유지.
- Pod
- ConfigMap과 Secret의 데이터를 사용해 애플리케이션 실행.
- 예: 환경 변수로 설정값, 볼륨으로 파일 활용.
2. 동작 확인
- ConfigMap 활용
- 환경 변수로 주입 → 애플리케이션 프로파일 설정 (예: dev).
- Secret 활용
- 볼륨으로 마운트 → 민감한 정보 제공 (예: db-info.yaml).
- 결과 검증
- Pod에서 주입된 데이터를 애플리케이션이 정상적으로 사용하며 설정 적용 확인.
실습
https://cafe.naver.com/kubeops/43
Application 기능으로 이해하기 - Configmap, Secret
1. 기본 개념 2. 동작 확인 (1) 입력값 확인 (Secret, Configmap) ▶ kubectl (2) 컨테이너 내부 확인 ▶ dashboard ▶ kubectl (...
cafe.naver.com
출처
쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런
일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의 ✅ 시작은 초급자지만
www.inflearn.com
- Total
- Today
- Yesterday
- localtime
- rocky
- k8s
- jQuery
- Bash tab
- Spring
- Linux
- oracle
- intellij
- 오라클
- maven
- mybatis
- 베리 심플
- docker
- springboot
- window
- Java
- 북리뷰
- mybatis config
- Spring Security
- elasticsearch
- JavaScript
- LocalDateTime
- LocalDate
- input
- claude
- Mac
- svn
- config-location
- Kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |