DevOps./CI CD Tool.

Skaffold (Kubernetes 용 CD Tool).

DerekCha 2019. 11. 18. 18:30

Kubernetes 용 CD (Continuous Deployment) Tool 인 Skaffold 가 GA 되었다는 News 를 보고 간단히 사용해보았다.

 

What is Skaffold? 

 

  • Local Kubernetes development, made simple
  • Watches local filesystem for code changes
  • Automatically build, push, and deploy to Kubernetes cluster

Installing Skaffold

skaffold 설치방법은 메뉴얼(https://skaffold.dev/docs/install/) 을 통해 확인 가능하며, mac 을 사용하고 있기때문에 다음과 같이 설치를 진행하였다.

curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-darwin-amd64
chmod +x skaffold
sudo mv skaffold /usr/local/bin

Example Code Download

예제코드를 다운받아 테스트 해보았다. 예제코드는 다음과 같이 다운받을수 있다.

git clone https://github.com/GoogleContainerTools/skaffold

예제코드는 example 디렉토리에 있고, example 디렉토리 내의 getting-started 디렉토리를 이용하여 테스트 해보았다.

getting-started 디렉토리 내에는 다음과 같은 파일들이 있다.

  • Dockerfile -> 도커 이미지 생성을위한 명세 파일
FROM golang:1.12.9-alpine3.10 as builder
COPY main.go .
RUN go build -o /app main.go

FROM alpine:3.10
CMD ["./app"]
COPY --from=builder /app .
  • k8s-pod.yaml -> 쿠버네티스 배포용 yaml
apiVersion: v1
kind: Pod
metadata:
  name: getting-started
spec:
  containers:
  - name: getting-started
    image: lukecha/skaffold-example
  • skaffold.yaml -> skafflod flow 정의를 위한 yaml
apiVersion: skaffold/v1
kind: Config
build:
  artifacts:
  - image: lukecha/skaffold-example
deploy:
  kubectl:
    manifests:
      - k8s-*
  • main.go -> go 소스파일

테스트 진행을 위해선 k8s-pod.yaml, skaffold.yaml 파일내에 이미지 registry 경로는 자신이 사용하는것으로 변경해야한다. default 로 구글 클라우드의 registry 경로가 지정되어 있다.

skaffold dev 실행

skaffold dev

위 테스트 디렉토리 경로에서 위 명령어를 실행하면 디렉토리 내의 파일들을 기반으로 도커이미지를 생성하고, 쿠버네티스로 배포하여 주는것을 확인할수 있다.

* 해당 단계전 반드시 로컬은 쿠버네티스 클러스터와 연결이 되어있는 상태여야한다.

main.go 가 변경되면 자동으로 이를 반영하여 이미지를 다시 생성하고 쿠버네티스로 배포한다.

 

skaffold 중지

skaffold 를 중지하게 되면 생성된 쿠버네티스 리소스를 자동으로 정리해준다.


^CCleaning up...
 - pod "getting-started" deleted

 

느낀점

사용법에 대해 좀 더 알아봐야겠지만, dev 모드만으로도 kubernetes 환경에서 개발 및 테스트를 진행해보기 아주 편한것 같다.

 

*참고

https://bcho.tistory.com/1342

 

쿠버네티스용 Continuous Deployment 툴인 Skaffold

쿠버네티스용 Continuous Deployment 툴인 Skaffold 조대협 (http://bcho.tistory.com) What is skaffold? 쿠버네티스 기반에서 개발을 하고 테스트를 하려면 일반적으로 다음과 같은 절차를 거쳐야 한다. 소스 코..

bcho.tistory.com

https://www.youtube.com/watch?v=tTNrzEjROCo