CI/CD

홍예림·2023년 3월 7일
0

JavaScript & 웹 백엔드

목록 보기
17/19
post-custom-banner

CI/CD의 개념과 자동화에 대해 정리합니다.

🪢 CI/CD란?

  • Continuous Integration / Continuous Delivery(또는 Deployment)

  • 지속적인 통합 / 지속적인 제공(또는 배포)

  • 딜리버리는 개발자의 레포지토리에 자동으로 업로드 되는 과정까지를 의미하고, 디플로이먼트는 배포까지 자동으로 진행한다는 개념 상의 차이가 있다고 한다... 설명 자료에서는 대체로 같은 맥락에서 사용되는 것 같다

  • '통합'은 기존의 코드에 수정 및 개선된 코드를 병합함을 의미한다
    - 지속적으로 코드를 병합하는게 왜 안정적인 개발과 연결될까?

    • 서비스는 여러명의 개발자가 함께 개발한다. 따라서 각각의 개발자가 수정한 코드가 버전 차이가 나지 않도록 꾸준히 병합하면서 관리하는 것이 안정적인 개발과 연결된다.
  • Continuous Integration : 소스코드 작성 ~ 빌드 ~ 코드 테스트 ~ 기존 코드에 병합
    Continuous Deployment : 코드 테스트 ~ 개발환경에서 실행 ~ 실제 배포
    까지의 과정을 지속적으로 실행함을 의미한다.

  • 따라서, CI/CD 자동화를 통해 사용자에게 꾸준히 개선되는 서비스를 안정적으로 제공할 수 있다

🖲️ 쿠버네티스 환경에서 CI/CD 자동화

수동으로 배포하면...

1) VScode의 터미널에서 git 업로드 (git add ➤ git commit ➤ git push)
2) VScode의 터미널에서 docker 이미지를 GCP에 업로드
	(docker-compose -f docker-compose.prod.yaml build ➤ push)
3) GCP - Container Registry 에 저장된 도커이미지 업데이트 확인
4) GCP - 쿠버네티스 접속 - cloud shell 접속 - 이미지 업데이트
	(kubectl set image deployment/[실행중인 deployment 명] [컨테이너 이름]=[container registry에 등록된 image 주소])

자동화 세팅하기

1) cloudbuild.yaml 파일 생성
2) GCP의 CloudBuild : Github 트리거 생성(깃허브 브랜치로 호출을 트리거로 설정)
3) GCP의 CloudBuild - 설정 : Kubernetes Engine 사용 설정
4) cloudbuild.yaml 파일에서 배포할 docker-compose.prod.yaml 파일의 경로를 수정 후, 터미널에서 git 업로드
   (cloudbuild.yaml 파일과 docker-compose.prod.yaml 파일의 이미지 버전은 동일하게 설정해야함!)
profile
SYNC 3기 5반 2023.07 - 2023.12
post-custom-banner

0개의 댓글