Skaffold
쿠버네티스 개발 → 디버깅 → 배포를 한 줄로 끝내기
Skaffold는 쿠버네티스 네이티브 애플리케이션을 위한 로컬-to-클러스터 개발 파이프라인을 자동화하는 CLI입니다.
dev → build → push → deploy → log/port-forward → (loop)
위 모든 단계를 단일 명령으로 처리해 개발-속도와 안정성을 동시에 챙길 수 있습니다.
왜 Skaffold인가? (Kustomize·Helm과의 관계)
- 빌드 & 배포 자동화 : 코드 변경 감지 → 이미지 빌드/푸시 → 신규 매니페스트 배포까지 한 번에 진행 [참고]
- 다중 배포 도구 호환 : kubectl · Kustomize · Helm · Kpt 모두 지원 → 동일 워크플로우 안에서 혼용 가능
- Profiles / Modules : dev·staging·prod 환경 또는 마이크로서비스별로 독립 파이프라인 정의 가능
- IDE 통합 : JetBrains IDE(Cloud Code), VS Code, Cloud Shell 등에서 “Run / Debug on Kubernetes” 버튼으로 사용 가능 [참고]
참고로 Kustomize는`리소스 템플릿 변형`에 집중된 도구이므로, Skaffold + Kustomize 조합이 가장 많이 쓰입니다.
0. 설치(Installation)
OS패키지/방법명령
| macOS | Homebrew | brew install skaffold |
| Linux | Stand-alone binary | curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && sudo install skaffold /usr/local/bin/ |
| Windows | Chocolatey | choco install skaffold |
| 공통 확인 | 버전 체크 | skaffold version → v2.x.y 출력되면 OK |
공식 설치 가이드는 항상 최신 바이너리 URL을 제공합니다.
Tip – VS Code·IntelliJ의 Cloud Code 플러그인은 자체 번들 Skaffold를 자동 관리하지만, CLI 학습을 위해 시스템 레벨 설치를 추천합니다.
1. Quick Start 5-Step
1) 샘플 앱 클론
git clone https://github.com/GoogleContainerTools/skaffold.git
cd skaffold/examples/getting-started
2) skaffold init 실행 → skaffold.yaml 자동 생성 (Dockerfile·K8s YAML 감지)
3) 로컬 클러스터 준비
- Minikube 또는 Docker Desktop Kubernetes
- kubectl get nodes 로 정상 여부 확인
4) 개발 루프 시작
skaffold dev --port-forward
- 코드 저장 → 이미지 빌드/푸시 → 쿠버네티스 재배포 → 로그·포트포워딩 자동
- 중단은 Ctrl+C
5) 한 번만 배포하려면 skaffold run (CI/CD에서 주로 사용)
2. 주요 명령 비교
명령주요 용도특징
| skaffold dev | 지속적 개발 루프 | 파일 Watch, Sync, 로그, 포트포워딩 |
| skaffold debug | 원격 디버깅 | 디버거 주입·자동 attach |
| skaffold run | 일회성 빌드/배포 | Watch 없음, CI용 |
3. File Sync ⚡ 초고속 핫리로드
build:
artifacts:
- image: demo-app
context: .
sync:
manual:
- src: "**/*.py"
dest: /app
코드만 컨테이너에 복사 → 수 초 내 갱신(Flask, Node 등 핫리로드 프레임워크와 궁합 굿)
4. IntelliJ + Cloud Code 연동
- Cloud Code 플러그인 → Tools > Cloud Code > Kubernetes > Add Kubernetes Support
- skaffold.yaml·Run/Debug 구성 자동 생성
- 상단 ▶ Develop on Kubernetes = skaffold dev
- 🐞 Debug on Kubernetes = skaffold debug (브레이크포인트 실시간 attach)
- Kubernetes Explorer 탭에서 Pod 상태·로그·터미널까지 확인 가능
5. Multi-Module + Helm 예제
# skaffold.yaml (요약)
build:
artifacts:
- image: frontend
context: services/frontend
- image: backend
context: services/backend
deploy:
deployers:
- helm:
releases:
- name: postgres
chartPath: charts/postgres
- kustomize:
paths: [k8s/overlays/dev]
skaffold dev 한 줄로 프런트/백엔드 핫리로드 + PostgreSQL Helm 차트 동시 관리!
6. Argo Rollouts × Port-Forward 이슈(#9656)
Argo Rollout이 생성한 ReplicaSet Pod 이름은 해시가 붙어 바뀌므로 `skaffold dev --port-forward` 가 원하는 Pod를 찾지 못해 오류가 날 수 있습니다.
Workaround : Service 타입으로 포워딩하거나 kubectl port-forward 를 수동 실행.
[참고]
7. 베스트 프랙티스 요약
- 속도↑ : File Sync + 핫리로드, Dockerfile 레이어 최적화
- 디버깅 : skaffold debug 시 자동 빌드/Sync OFF → 코드 수정 후 IDE에서 HotSwap
- 멀티서비스 : Skaffold Modules 활용 → 필요한 서비스만 선택 개발
- CI/CD : skaffold run 을 GitHub Actions · GitLab CI와 연동
✨ 로컬-개발 → 디버깅 → 배포 → CI/CD 파이프라인까지, 한 번 배워 두면 모든 워크플로우를 표준화할 수 있어요!
참고 링크
- 설치 가이드 – https://skaffold.dev/docs/install/
- Quick Start – https://skaffold.dev/docs/quickstart/
- Cloud Code(IntelliJ) – https://cloud.google.com/code/docs/intellij
'DevOps > Docker & K8S' 카테고리의 다른 글
| 쿠버네티스 환경의 효율적인 개발 도구 Telepresence (0) | 2025.07.12 |
|---|---|
| Kubernetes Ephemeral 컨테이너 완전 정복 🚀 (2) | 2025.07.10 |
| Ingress configuration-snippet vs server-snippet (0) | 2021.04.19 |
| Kubernetes Operator (0) | 2020.12.07 |
| ReplicaSet vs Replication Controller (레플리카세트 vs 레플리케이션 컨트롤러) (0) | 2020.06.18 |