CI/CD

여러 사람들이 깃허브에 본인의 코드를 올리고 테스트 코드를 돌려서 테스트의 이상이 없는지를 확인해 보고 merge하는 과정을 하는데 배포과정에서 이런 test/merge와 같은 역할을 하는 것을 CI라고 하고 이렇게 최종적으로 merge 된 코드를 release 하고 deployment , 배포하는 것을 CD 라고 한다. 이와 같은 CI/CD 과정을 실험해보기 위해서 Jenkins라는 도구를 사용하는데 이 외에도 깃허브에서 제공하는 Github Actions, GCP에서 제공하는 cloudbuild, AWS에서 제공하는 codebuilder 등도 있다. 각각의 클라우드 업체에서 제공하는 도구를 사용하면 해당 클라우드에서 배포하는 것이 용이할 수 있다. Jenkins같은 경우는 추가 기능들을 설치해서 확장시켜나갈 수 있기 때문에 많이 사용한다. 내 프로젝트는 GCP 에서 배포중이기 때문에 cloudbuild를 사용해보았다.

코드를 작성중인 vscode에서 cloudbuild.yaml 파일을 설정하고 도커 컨테이너를 push 하고 재배포 하면 내 깃허브와 GCP 가 서로 연결되고 이후로는 소스코들 수정하고 git add commit push 하면 자동으로 재배포가 진행되게된다. 계속 수동으로 재배포 과정을 안해도 되는 것이다. 그럼 cloudbuild.yaml 파일을 어떻게 만들것인지, GCP 와 Github는 또 어떻게 연동시킬 것인지에 대해서 알아보자!

 

cloudbuild

파일명은 cloudbuild.yaml 파일로 작성해주어야 하며 내부의 코드도 작성하는 규칙이 정해져있었다. 우선 아래와 같이 3단계로 나누어서 설정했다.

  1. docker-compose -f docker-compose.prod.yaml build (빌드)
  2. docker-compose -f docker-compose.prod.yaml push (푸쉬)
  3. kubectl set image deployment ~ (재배포)

각각의 코드를 작성할 때 주의할점은 띄어쓰기를 구분으로 한칸씩 띄어서 입력해야한다는 것이다. 또한 마지막 3단계같은 경우는 추가로 환경변수 설정도 해주어야 한다. 환경변수에 들어갈 내용은

CLOUDSDK_COMPUTE_ZONE 
CLOUDSDK_CONTAINER_CLUSTER

이다. 더 자세한 내용과 설정 방법은 GCP docks에 나와있다. 그럼 이제 GCP와 내 git을 연결해주는 설정을 해줘야한다. 우선 내 vscode에서 yaml 파일을 설정했다 가정하고 GCP 사이트에서 Cloud Build -> 트리거설정 -> 저장소 연결 을 한다. 

 이후에 트리거 설정할 때 주의할 점은 Cloud Build 구성 파일 위치를 실제 vscode에서 깃에 올린 파일에서 cloudbuild.yaml 파일이 위치한 곳까지 입력해주어야 한다. 모든 설정이 완료되면 이제 내 vscode에서 git push만 해도 자동으로 쿠버네티스에 올라간 서버가 재배포 되는 것을 확인할 수 있다.

'오늘의 공부 정리' 카테고리의 다른 글

39. gitflow, workflow  (0) 2022.08.25
38. Server performance Tuning  (0) 2022.08.25
36. Autoscale  (0) 2022.08.25
35. SSL, HTTPS  (0) 2022.08.25
34. VPC  (0) 2022.08.24
복사했습니다!