CI/CD

5BRack·2022년 10월 26일

백엔드 로드맵

목록 보기
24/28

CI/CD

  • CI (Continuous Integration) CD (Continuous Deployment) 의 약자이다.
  • 한글로 지속적인 통합, 지속적인 배포를 뜻한다.
  • 통합, 배포 자동화 도구 라고 생각하면 된다.
  • 기본적으로 CI/CD는 resource를 배포할 서버에 Delivery되는 부분과, Delivery된 resource가 배포되는 부분으로 나뉜다.
  • 대표적인 CI/CD 도구는 Jenkins, Github Action , AWS Codepipeline, GCP Cloudbuild 등이 존재한다.

동작 방식

  • 개발자가 원격저장소로 Resource와 cloudbuild.yaml 파일을 함께 commit
  • 이 때 원격저장소와 CI/CD 도구가 연결되어 있어야 한다.
  • Cloud Kubernetes에 존재하는 CI/CD 도구에서 업로드된 cloudbuild.yaml 파일을 찾아 실행

cloudbuild.yaml - 해당 파일 내에는 build, push, 이미지 변경 부분이 들어가 있어야 한다.

GCP에서 cloudBuild(CI/CD) 설정 방법

  1. CloudBuild에서 Github와 연결
    1-1. CloudBuild 설정에서 Kubernetes Engine 활성화
    1-2. 트리거 탭에서 원격저장소 연결 설정
    1-3. 원격저장소 인증
    1-4. 연결할 저장소 설정
    1-5. 트리거 만들기(이벤트 설정)

  2. cloudBuild.yaml 파일 생성 후 명령어 insert
    cloudBuild.yaml

    steps:
    #1 단계 => docker-compose -f docker-compose.prod.yaml build
    - name: docker/compose:1.29.0
      args:
        - -f
        - class/deploy-with-docker/backend/docker-compose.prod.yaml
        - build
      #2 단계 => docker-compose -f docker-compose.prod.yaml push
    - name: docker/compose:1.29.0
      args:
        - -f
        -  class/deploy-with-docker/backend/docker-compose.prod.yaml
        - push
      #3 단계 => kubectl set image deployment/컨테이너명 컨테이너명=이미지이름 및 버전
    - name: gcr.io/cloud-builders/kubectl
      args:
        - set
        - image
        - deployment/컨테이너명
        - 컨테이너명=이미지이름 및 버전
      env:
        - CLOUDSDK_COMPUTE_ZONE=resion명
        - CLOUDSDK_CONTAINER_CLUSTER=클러스터명
    
  3. 소스 코드 수정하고 git push시, 자동으로 CI/CD 동작

0개의 댓글