레이블이 skaffold인 게시물을 표시합니다. 모든 게시물 표시
레이블이 skaffold인 게시물을 표시합니다. 모든 게시물 표시

skaffold 로 kubernetes 개발환경 만들기

# kubernetes(k8s)에서 app 개발/디버깅하려면
# 소스 수정 빌드 -> 도커 이미지 생성 및 푸시 -> 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-test
deploy:
  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/