# 소스 수정 빌드 -> 도커 이미지 생성 및 푸시 -> k8s pod 배포 -> app 접속 또는 pod 접속해서 확인
# 등의 과정을 거치게 되는데 이를 skaffold 로 자동화 할 수 있다.
# 다음 동영상을 보면 skaffold 대략적인 이해에 도움이 된다.
# skaffold 설치전
# kubectl 설치 후 k8s 클러스터에 접속할 수 있는 환경이어야 한다.
# skaffold 설치
# mac
brew install skaffold
# linux
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
chmod +x skaffold
sudo mv skaffold /usr/local/bin
# 초기화 - 배포설정파일 생성(기본 skaffold.yml)
# 프로젝트내에 node_modules/ 가 있으면
# too many open files 에러가 발생하니 잠시 node_modules/ 삭제해 놓자.
# k8s 관련 yaml 파일은 kubernetes-manifest/ 에 있다고 가정한다.
skaffold init
# skaffold.yaml 생성
apiVersion: skaffold/v1beta17
kind: Config
metadata:
name: ysoftman-test
build:
# 태그명시 방법: https://skaffold.dev/docs/pipeline-stages/taggers/
tagPolicy:
envTemplate:
template: "{{.IMAGE_NAME}}:dev"
artifacts:
- image: aaa/bbb/ysoftman-testdeploy:
kubectl:
manifests: # kubectl 관련 yaml 파일위치가 자동으로 입력된다.
- kubernetes-manifests/ysoftman-test-deployment.yaml
- kubernetes-manifests/ysoftman-test-service.yaml
# dev 모드로 실행
# 매 소스 수정 후 저장할 때마다 도커 이미지를 생성하고 k8에 배포되어 확인할 수 있다.
# dev 모드로 실행중 pod 의 stdout, stderr 상태가 출력된다.
# ctrl+c 로 빠져나가면 k8s 에서 앱은 사라진다.
skaffold dev
# 소스 수정에 따라 매번 빌드되는게 오래걸리면 직접 run 을 수행해도 된다.
# 수정된 소스로 도커 이미지를 생성해 k8s 앱으로 배포까지의 pipeline 을 실행한다.
# --tail 을 붙이면 log 를 테일링 할 수 있다.
skaffold run --tail
skaffold delete
# kubectl 로 보면 소스가 수정될때마다 k8s pod, service 등의 상태가 변하는것을 알 수 있다.
watch -n 1 kubectl get all
# 기타 옵션 설명은
skaffold --help
# 참고
https://skaffold.dev/docs/quickstart/