Skaffold를 이용한 쿠버네티스 개발부터 디버깅·배포까지

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 versionv2.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 연동

  1. Cloud Code 플러그인Tools > Cloud Code > Kubernetes > Add Kubernetes Support
    • skaffold.yaml·Run/Debug 구성 자동 생성 
  2. 상단 ▶ Develop on Kubernetes = skaffold dev
  3. 🐞 Debug on Kubernetes = skaffold debug (브레이크포인트 실시간 attach) 
  4. 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 파이프라인까지, 한 번 배워 두면 모든 워크플로우를 표준화할 수 있어요!

참고 링크