먼저 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로만 쿠버네티스 연동 가능

 

 

반응형
Posted by 화니.
,