쿠버네티스, 꼭 써야 할까요?
새벽 3시, 서비스가 죽었습니다. 누가 깨어 있나요?
쿠버네티스 실전 가이드 · AI JAVAPARK
컨테이너는 띄웠다. 그런데…
- 하나 죽으면 — 누가 다시 띄우죠?
- 트래픽이 2배 — 누가 늘리죠?
- 배포 중 장애 — 누가 되돌리죠?
컨테이너 10개까지는 손으로. 그다음은 지옥입니다.
쿠버네티스는 한마디로
원하는 상태를 적으면, 나머지는 알아서 맞춰주는 기술.
당신은 "무엇을" 선언하고, 쿠버네티스가 "어떻게" 를 책임집니다.
두뇌가 결정하고, 일꾼이 실행한다

결국 5개만 알면 시작한다
- Pod — 컨테이너가 사는 최소 단위
- Deployment — 몇 개를, 어떻게 굴릴지
- Service — 흩어진 Pod의 고정 주소
- ConfigMap · Secret — 설정·비밀 주입
- Ingress — 바깥세상으로 난 문
배포? apply 한 줄이면 끝
kubectl apply -f deploy.yaml원하는 상태를 파일에 적고, 한 번 던진다.
조회 · 배포 · 롤아웃 · 디버깅 · 컨텍스트 — 손에 익을 5갈래.
Pod가 죽었다 — 30초 만에 원인 찾기
kubectl describe pod <name> # ① 무슨 일이?
kubectl logs -f <name> # ② 왜?
kubectl exec -it <name> -- sh # ③ 직접 확인
describe → logs → exec. 이 순서가 90%를 잡는다.
더 빠르게 보고 싶다면 — k9s
명령을 일일이 치는 대신, 터미널 대시보드로 클러스터를 돌아다닌다.
- 정확한 조작·자동화 → kubectl
- 실시간 탐색·장애 대응 → k9s
"환경마다 YAML 복붙"을 멈춰라
dev · staging · prod… 같은 YAML을 세 번 고치고 있다면, 이미 틀렸습니다.
해법은 두 갈래 — 템플릿이냐, 패치냐.
템플릿이냐, 패치냐
- Helm — 템플릿 + values로 패키지처럼 설치
helm install web ./chart -f values-prod.yaml - Kustomize — 순수 YAML에 오버레이로 덧대기 (kubectl 내장)
kubectl apply -k overlays/prod
재사용·배포는 Helm, 단순·투명은 Kustomize.
클러스터를 손으로 만지지 마라
사람이 직접 kubectl apply? — 누가, 언제, 무엇을 바꿨는지 아무도 모릅니다.
해법: Git에 커밋하라. 나머지는 ArgoCD가 맞춘다.
GitOps — Git이 곧 클러스터

바깥에 안전하게 — Ingress + 자동 HTTPS

cert-manager 한 번 설정 = 인증서 갱신을 영원히 잊어도 됨.
Ingress Controller, 무엇으로?
- nginx-ingress — 검증된 안정성, 어노테이션 중심
- Traefik — 대시보드·동적 라우팅, CRD 기반
교체도 두렵지 않다 — 병렬 운영으로 무중단 전환.
결국, 이 한 바퀴다

가져가는 한 장 — 치트시트
kubectl get pods -o wide # 본다
kubectl apply -f app.yaml # 배포한다
kubectl rollout undo deploy/web # 되돌린다
kubectl describe / logs / exec # 디버깅 3종
kubectl apply -k overlays/prod # Kustomize
helm install web ./chart -f ... # Helm도구 지도 — kubectl·k9s(운영) · Helm·Kustomize(구성) · ArgoCD(배포) · Ingress·cert-manager(노출)
한 문장만 가져가세요
쿠버네티스는 "원하는 상태를 적고, 나머지는 맡기는" 기술이다.
더 깊이 — 시리즈로
각 주제는 명령어까지 「쿠버네티스 실전 가이드」 시리즈에서 이어집니다.
이해 · kubectl · k9s · Helm · Kustomize · ArgoCD · Ingress/cert-manager · Traefik
blog.javapark.kr
감사합니다 — 자바파커