먼저 Gitlab에서 Kubernetes연동을 해줍니다.
Environment scope는 * 로 지정해줍니다.
다중 클러스터를 사용하시면 별도이름을 지정해 주어야 합니다.
그 다음 Gitlab-runner를 등록해야합니다.
Linux방식의 shell executor와 docker방식 2개를 등록했습니다.
docker방식만 사용하면 캐시가 되지 않아 도커빌드가 시간이 오래걸리게 됩니다.
docker만 사용하실분은 https://docs.gitlab.com/ee/ci/docker/using_docker_build.html 참고해주세요.
# .gitlab-ci.yml 파일 예제
stages:
- test
- build
- deploy
test:
image:
name: python3 #사용하는 언어에 맞는 이미지
script:
- pip install -r requirements.txt
- python manage.py test
tags:
- docker #사용할 runner 테그
build:
stage: build
script:
# private 저장소를 이용시 로그인. gitlab 변수에 설정해둡니다.
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- echo "Building the app"
- docker build --tag myimage:latest .
- docker image push -a $CI_REGISTRY/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME
tags:
- shell #사용할 runner 테그
# staging환경. master로 커밋시 작동
deploy_staging:
stage: deploy
image:
name: bitnami/kubectl:latest
entrypoint: [""]
only:
- master
script:
- echo "Deploy to staging server"
- kubectl apply -f devops/deploy-dev.yaml
environment:
name: staging
tags:
- docker #docker로만 쿠버네티스 연동 가능
# production 환경. 배포는 수동으로만 작동
deploy_prod:
stage: deploy
image:
name: bitnami/kubectl:latest
entrypoint: [""]
only:
- master
script:
- echo "Deploy to production server"
- kubectl apply -f devops/deploy-prod.yaml
environment:
name: production
tags:
- docker #docker로만 쿠버네티스 연동 가능
'IT > Kubernetes' 카테고리의 다른 글
EKS 에서 Pod에서 아웃바운드 문제가 있을경우 (0) | 2022.03.14 |
---|---|
WAS에서 Static 파일 전송하기 (0) | 2022.03.12 |
CrashLoopBackOff 로 Pod이 시작되지 않을 때 처리 (0) | 2022.03.11 |