JD의 블로그

CI/CD를 위한 Google Cloud Run과 Cloud Build 본문

클라우드/GCP

CI/CD를 위한 Google Cloud Run과 Cloud Build

GDong 2020. 1. 12. 17:34

DevOps를 들어보지 못한 사람이 없을 정도로 DevOps라는 개발 문화가 확산되고 있으며, 거기에 따른 개발 플랫폼의 변화도 인상적입니다. 

 

Google Cloud Run은 도커 이미지만 있다면 손 쉽게 서버리스 환경에서 서버 애플리케이션을 실행할 수 있게 해줍니다. 또한 Google Cloud Run은 Knative 기반으로 구글 클라우드에 종속되지 않고 높은 이식성을 가지고 있다는 장점도 있습니다. 또한 Cloud Run은 컨테이너를 사용하지만 Cloud Functions처럼 요청이 있을 때만 실행되고, 요청을 처리한 시간만큼만 과금됩니다. 

 

그리고 Google Cloud Run은 Cloud Build와 함께 사용함으로써 서비스를 자동 배포할 수 있어 간단하게 CI/CD 환경을 구축할 수 있습니다. Cloud Build를 사용하면 Container Registry에 빌드된 컨테이너 이미지를 Cloud Run에 배포할 수 있습니다. 즉 기존의 이미지를 배포하거나, 이미지를 빌드하고 배포하거나, 모든 배포 과정을 자동화할 수 있습니다. 

 

Google Cloud Build는 클라우드 기반의 관리형 CI/CD 플랫폼입니다. 관리형이기 때문에 개발 조직은 애플리케이션 빌드와 테스트에만 집중할 수 있습니다. 

 

Google Cloud Build를 통해 얻을 수 있는 장점은 크게 3가지로 나눌 수 있습니다.

 

  1. 확장성 : 애플리케이션 규모가 커지면 CI/CD 플랫폼도 규모에 맞추어 확장을 해야하는데, Clud Build는 클라우드 환경속에서 규모에 따라 유연한 확장성을 가질 수 있습니다. 
  2. 유연성 : 개발 할 때마다 환경과 조건이 다를 수 있으며 이러한 조건에는 언어, 프레임워크, 도구 등 많은 변수가 있습니다.  Google Cloud Build는 도커 컨테이너에 담아 배포하기 때문에 이러한 종속성에서 벗어나 유연하게 대처할 수 있게 해줍니다. 
  3. 보안성 : Google Cloud Build는 개발 사이클 전반에서 탄탄한 보안 체계를 갖추고 있으며, 빌드 생성과 조회에 대한 권한 관리도 IAM을 통해 설정할 수 있습니다. 이런 특징으로 개발 과정에 생길 수 있는 정보 유출 위험도 직접 CI/CD 플랫폼을 운영할때보다 훨씬 낮습니다. 

Cloud Build로 Cloud Run에 배포하기

1. IAM 설정

다음의 경우에 IAM 권한 설정이 필요합니다.

  • 컨테이너 이미지가 배포할 이미지와 동일한 GCP 프로젝트에 저장되어있는 경우
  • 이미지가 Container Registry에 Public 상태로 저장되어 있는 경우

두 가지의 경우에 Cloud Build 서비스 계정에 Cloud Run Admin 역할을 부여합니다. 또한 Cloud Run 런타임 서비스 계정 안에 있는 Cloud Build 서비스 계정에 IAM Service Account User 역할을 부여합니다.

 

2. 사전 빌드된 컨테이너 이미지 배포

Container Registry에 사전 빌드된 이미지가 저장되어 있으며, 이를 배포하기 위해서는 yaml 또는 json 파일로 된 Cloud Build 구성 파일을 만듭니다. 

 

구성 파일 내에 gcloud beta run deploy 명령을 추가하여 Cloud Run에 배포합니다. 

빌드를 시작하기 위해 gcloud builds submit 명령어를 사용합니다. 

 

3. 컨테이너 빌드 후 배포

Container Registry에 기본 제공되는 이미지가 저장되어 있지 않는 경우에 Cloud Build를 사용하여 컨테이너를 빌드하고, Container Registry에 이미지를 저장한 다음 이 이미지를 통해 Cloud Run에 배포해야 합니다. 

 

4. 지속적 배포

Cloud Build 구성 파일을 만든 후에 GCP Console의 Build Trigger 페이지에서 트리거를 추가함으로써 특정 브랜치에 대한 커밋이나 특정 태그가 포함된 커밋에서 빌드를 시작하는 트리거를 설정할 수 있습니다. 그렇게 하면 저장소에 새 코드를 푸시할 때마다 Cloud Run 서비스에 빌드 및 배포를 자동으로 트리거합니다. 

 

 

 

참고:

구글, 도커 컨테이너 기반 서버리스 서비스인 클라우드 런 발표 

Google Cloud Run 겉핥기

지속적 통합(CI)도 GCP가 좋다! 구글 CLOUD BUILD

Cloud Run에 배포하기