본문 바로가기
[개발] Infrastructure/Container

Skaffold

by Devsong26 2024. 8. 10.

Skaffold는 Kubernetes 환경에서 애플리케이션을 개발하고 배포하는 과정을 자동화하고 간소화해주는 오픈 소스 도구입니다. Google에서 개발한 이 도구는 Kubernetes 클러스터에서 애플리케이션을 반복적으로 빌드, 테스트, 배포하는 작업을 관리하기 쉽게 만들어줍니다. Skaffold는 로컬 개발 환경부터 클라우드 기반 CI/CD 파이프라인에 이르기까지 다양한 환경에서 사용할 수 있습니다.

Skaffold의 주요 특징

  1. 빌드, 푸시, 배포의 자동화:
    • Skaffold는 애플리케이션의 빌드, 푸시(이미지를 컨테이너 레지스트리에 업로드), 그리고 배포 작업을 자동으로 처리합니다. Skaffold는 Docker, JIB, Buildpacks, Bazel과 같은 빌드 도구를 지원하며, 사용자는 자신에게 맞는 빌드 시스템을 선택할 수 있습니다.
    • Kubernetes 클러스터에 애플리케이션을 배포할 때 Helm, Kustomize, kubectl과 같은 도구를 사용하여 원하는 방식으로 배포를 진행할 수 있습니다.
  2. 로컬 개발 워크플로우 지원:
    • Skaffold는 코드 변경 사항을 감지하고 자동으로 다시 빌드하고 배포합니다. 이를 통해 개발자는 로컬 환경에서 애플리케이션을 빠르게 반복적으로 테스트할 수 있습니다. Skaffold는 로컬 Kubernetes 클러스터(예: Minikube, Kind, Docker Desktop)뿐만 아니라 원격 클러스터에서도 동일하게 동작합니다.
  3. 멀티 컨텍스트 작업:
    • Skaffold는 여러 Kubernetes 컨텍스트를 지원하여, 로컬 클러스터에서 작업한 내용을 쉽게 원격 클러스터에 배포할 수 있습니다. 이는 로컬 개발 및 원격 배포 간의 전환을 쉽게 만들어 줍니다.
  4. 간단한 설정:
    • Skaffold는 skaffold.yaml이라는 설정 파일을 사용하여 프로젝트의 빌드 및 배포 파이프라인을 정의합니다. 이 파일에서 빌드 도구, 컨테이너 이미지 레지스트리, Kubernetes 리소스 정의, 배포 방법 등을 지정할 수 있습니다.
    • Skaffold는 설정 파일을 통해 다양한 환경에서 동일한 워크플로우를 유지할 수 있도록 도와줍니다.
  5. CI/CD 파이프라인 통합:
    • Skaffold는 Jenkins, GitLab CI, GitHub Actions와 같은 CI/CD 파이프라인에 쉽게 통합될 수 있습니다. 이를 통해 코드가 리포지토리에 푸시될 때마다 자동으로 빌드, 테스트, 배포되는 파이프라인을 구성할 수 있습니다.
  6. 테스트 기능:
    • Skaffold는 배포 후 애플리케이션에 대한 테스트를 자동으로 실행할 수 있습니다. 통합 테스트나 엔드 투 엔드 테스트를 자동화하여 배포된 애플리케이션이 올바르게 동작하는지 확인할 수 있습니다.

Skaffold 사용 예시

  • 설치:
    • Skaffold는 간단한 설치 과정으로 사용할 수 있습니다. 예를 들어 Homebrew를 통해 설치할 수 있습니다. 
brew install skaffold
  • 초기화:
    • 새로운 프로젝트에서 Skaffold를 초기화하려면, 다음 명령어를 사용할 수 있습니다. 이 명령어는 프로젝트의 구조를 분석하여 skaffold.yaml 파일을 생성하고, 자동으로 빌드와 배포 설정을 구성합니다.
skaffold init

 

 

  • 자동 배포:
    • skaffold dev 명령어를 사용하면 로컬에서 코드를 변경할 때마다 Skaffold가 자동으로 빌드, 푸시, 배포를 수행합니다.
skaffold dev

 

  • 배포:
    • 특정 환경에 배포하려면 skaffold run 명령어를 사용할 수 있습니다. 예를 들어, 원격 클러스터에 배포할 때 사용할 수 있습니다.
skaffold run --default-repo=gcr.io/my-project

 

결론

Skaffold는 Kubernetes에서 애플리케이션 개발, 빌드, 테스트, 배포의 전체 과정을 자동화하는 강력한 도구입니다. 로컬 개발 환경부터 프로덕션 환경에 이르기까지 일관된 워크플로우를 제공하며, 개발자들이 Kubernetes 애플리케이션을 보다 효율적으로 관리하고 배포할 수 있게 도와줍니다. Skaffold는 설정이 간단하고 다양한 빌드 및 배포 도구와 통합될 수 있어 Kubernetes 기반 개발 환경에서 매우 유용합니다.

'[개발] Infrastructure > Container' 카테고리의 다른 글

JIB  (0) 2024.08.10
Docker 이미지 빌드하기  (1) 2023.11.22
Docker 로드밸런서 구성하기  (0) 2023.11.22
도커 기본  (0) 2023.11.12