새로 시작하는 프로젝트의 워크로드를 설계하면서 AWS의 App Runner 보다 GCP의 Cloud Run이 더 효율적이라는 것을 알게되어 '로컬 Gitlab CI Pipeline - Image Registry - Web Service - HTTPS' 로 이어지는 무중단 배포 파이프라인을 GCP에서 구축해 보고자 이 가이드를 작성함.
AWS를 떠나 GCP(Google Cloud Platform)로의 여정을 시작하며 가장 먼저 마주한 것은 '구조의 차이'였습니다. 이번 포스팅에서는 GCP의 핵심 리소스 구조를 파악하고, 외부 서비스인 GitLab이 우리 인프라에 접근할 수 있도록 '통행증'을 만드는 과정을 정리합니다.
GCP의 가장 큰 특징은 프로젝트(Project) 단위의 관리입니다. 모든 리소스는 반드시 특정 프로젝트에 소속되어야 합니다.
cyan-inn-webpage): 프로젝트 이름과 별개로 부여되는 고유한 식별자입니다. 나중에 이미지 주소나 CLI 명령어에서 '주소' 역할을 하게 됩니다.AWS의 IAM User가 있다면, GCP에는 서비스 계정이 있습니다. 이는 사람이 아닌 '서비스(코드, CI/CD 도구)'가 사용하는 전용 계정입니다.
사람은 아이디와 비밀번호, 2단계 인증으로 로그인하지만, GitLab Runner 같은 자동화 도구는 그럴 수 없습니다. 따라서 우리는 서비스 계정이라는 '가상의 일꾼'을 만들고, 그 일꾼에게 딱 필요한 열쇠(Role)만 쥐여주어 일을 시키게 됩니다.
+ 서비스 계정 만들기를 클릭합니다.서비스 계정이 생성되었다면, 이제 이 계정을 외부에서 증명할 수 있는 '실물 열쇠'가 필요합니다. GCP는 이를 JSON 키 파일 형태로 제공합니다.
Settings > CI/CD > Variables에 File 타입으로 등록하여 파이프라인 실행 시에만 임시로 불러오도록 설정합니다.컨테이너 이미지가 거주할 '집'을 지을 차례입니다. 기존 GCR(Google Container Registry)을 대체하는 Artifact Registry를 사용합니다.
website우리가 만든 저장소는 다음과 같은 계층을 가집니다.
[저장소: website] > [패키지: 이미지 이름] > [버전: 태그/다이제스트]
하나의 website 저장소 안에 홈페이지, 관리자 페이지 등 여러 개의 컨테이너 패키지를 담아 관리할 수 있는 구조입니다.
GCP의 인증 체계는 처음엔 복잡해 보이지만, '프로젝트 기반의 격리'와 '서비스 계정을 통한 명확한 권한 위임'이라는 강력한 장점을 가지고 있습니다. 이제 '이미지가 들어갈 창고'와 '창고에 접근할 열쇠'가 준비되었습니다.
다음 장에서는 실제로 이 열쇠를 들고 이미지를 빌드하여 배포하는 실전 CI/CD 파이프라인 구축에 대해 알아보겠습니다.
다음 단계가 궁금하신가요? 이어지는 제2장에서는 gitlab-ci.yml의 실제 코드 구현과 Cloud Run을 통한 무중단 배포 실습 내용을 다룰 예정입니다. 궁금한 점은 댓글로 남겨주세요! 😊