Skaffold (Kubernetes 용 CD Tool).
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 환경에서 개발 및 테스트를 진행해보기 아주 편한것 같다.
*참고
쿠버네티스용 Continuous Deployment 툴인 Skaffold
쿠버네티스용 Continuous Deployment 툴인 Skaffold 조대협 (http://bcho.tistory.com) What is skaffold? 쿠버네티스 기반에서 개발을 하고 테스트를 하려면 일반적으로 다음과 같은 절차를 거쳐야 한다. 소스 코..
bcho.tistory.com
https://www.youtube.com/watch?v=tTNrzEjROCo