ACTIVE INCIDENT
00:00 elapsed
LABLAB-K8S-04-CONFIGMAP-SECRETSEV-3
ConfigMap·Secret — K8s 환경변수·설정 관리
ELAPSED
00:00
PHASE
0 / 5
SLA
35분
Kubernetes
← 목록
INCIDENT RESPONSE
0 / 6 단계 완료
📚 PREREQUISITES
Labk8s-basics-pod-deploy
Theorykubernetes/pod-basics
Theorykubernetes/deployment
Theorykubernetes/configmap-secret
TRACK
KUBERNETES
SLA
35분
SEV
SEV-3
PHASES
4단계
ENV
local
INCOMING TICKET
코드 리뷰 피드백: "DB_URL이랑 API_KEY가 이미지에 하드코딩돼 있어요 — K8s ConfigMap/Secret으로 분리해주세요"
YOUR ROLE
주니어 백엔드/인프라 엔지니어
IMPACT IF UNRESOLVED
환경변수 하드코딩 상태로 배포하면 시크릿 정보가 이미지에 포함돼 보안 사고로 이어질 수 있음
🚨INCIDENT BRIEF
PR 리뷰를 받았습니다.
"이미지 빌드 로그 보니까 DB_URL=postgres://prod-db:5432/mydb가 Dockerfile에 하드코딩돼 있네요. API_KEY도 마찬가지고요. K8s에 올리기 전에 ConfigMap/Secret으로 분리해주세요."
이미지에 민감 정보가 포함되면 이미지 레지스트리에 접근할 수 있는 사람 누구나 볼 수 있습니다. 그리고 설정값이 이미지 안에 있으면 환경(dev/stage/prod)마다 이미지를 따로 빌드해야 합니다.
ConfigMap은 비민감 설정값, Secret은 암호화가 필요한 민감 정보를 저장합니다. 둘 다 Deployment에 환경변수로 주입해 이미지를 재빌드하지 않고도 설정을 바꿀 수 있게 합니다.
⏱ 35분📊 입문🔧 4단계#kubernetes#configmap#secret#environment-variables
MISSION
1
ConfigMap 생성 — 비민감 설정값 관리
kubectl create configmap으로 DB_URL, APP_ENV 설정값을 K8s ConfigMap으로 만든다
2
Secret 생성 — 민감 정보 관리
kubectl create secret으로 API_KEY를 K8s Secret으로 만들고 base64 인코딩 구조를 확인한다
3
Deployment에 환경변수 주입
Deployment에 ConfigMap과 Secret을 envFrom/env 필드로 주입해 Pod에서 환경변수로 사용할 수 있게 한다
4
Pod 내부에서 환경변수 확인
kubectl exec으로 Pod 내부에 접속해 DB_URL, APP_ENV, API_KEY가 실제로 환경변수로 설정됐는지 확인한다
📌 선수 지식
• [실습] k8s-basics-pod-deploy
• [이론] kubernetes/pod-basics
• [이론] kubernetes/deployment
• [이론] kubernetes/configmap-secret
ℹ️ 실습 환경
환경: local
필요 도구: kubectl, kubernetes cluster
검증 스크립트: /labs/lab-k8s-05-configmap-secret/scripts/verify.sh
🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →
>_ LAB TERMINAL↔ 너비 조절
NOTES