[GCP입문] 1. 리소스 구조 이해와 인증 체계 구축

simon_entj·2026년 3월 17일

새로 시작하는 프로젝트의 워크로드를 설계하면서 AWS의 App Runner 보다 GCP의 Cloud Run이 더 효율적이라는 것을 알게되어 '로컬 Gitlab CI Pipeline - Image Registry - Web Service - HTTPS' 로 이어지는 무중단 배포 파이프라인을 GCP에서 구축해 보고자 이 가이드를 작성함.


[GCP] 1. 리소스 구조 이해와 인증 체계 구축 (Web Dashboard 기반)

AWS를 떠나 GCP(Google Cloud Platform)로의 여정을 시작하며 가장 먼저 마주한 것은 '구조의 차이'였습니다. 이번 포스팅에서는 GCP의 핵심 리소스 구조를 파악하고, 외부 서비스인 GitLab이 우리 인프라에 접근할 수 있도록 '통행증'을 만드는 과정을 정리합니다.


1.1 GCP 프로젝트와 리소스 계층 구조

GCP의 가장 큰 특징은 프로젝트(Project) 단위의 관리입니다. 모든 리소스는 반드시 특정 프로젝트에 소속되어야 합니다.

  • 프로젝트 ID (cyan-inn-webpage): 프로젝트 이름과 별개로 부여되는 고유한 식별자입니다. 나중에 이미지 주소나 CLI 명령어에서 '주소' 역할을 하게 됩니다.
  • 리전(Region) 전략: 우리는 한국 사용자에게 최적의 속도를 제공하기 위해 asia-northeast3(서울) 리전을 베이스로 사용합니다. 저장소와 서버의 리전을 일치시키는 것이 네트워크 지연과 비용 측면에서 유리합니다.

1.2 서비스 계정(Service Account)과 IAM

AWS의 IAM User가 있다면, GCP에는 서비스 계정이 있습니다. 이는 사람이 아닌 '서비스(코드, CI/CD 도구)'가 사용하는 전용 계정입니다.

동작 원리: 왜 서비스 계정인가?

사람은 아이디와 비밀번호, 2단계 인증으로 로그인하지만, GitLab Runner 같은 자동화 도구는 그럴 수 없습니다. 따라서 우리는 서비스 계정이라는 '가상의 일꾼'을 만들고, 그 일꾼에게 딱 필요한 열쇠(Role)만 쥐여주어 일을 시키게 됩니다.

웹 대시보드 실습: 서비스 계정 생성 및 권한 부여

  1. 메뉴 이동: [IAM 및 관리자] > [서비스 계정]에서 + 서비스 계정 만들기를 클릭합니다.
  2. 역할(Role) 할당: [IAM] 메뉴에서 해당 계정 옆의 연필 아이콘을 눌러 아래 3가지 핵심 권한을 부여합니다.
    • Artifact Registry 쓰기: 이미지를 업로드(Push)하기 위한 권한
    • Cloud Run 관리자: 서버리스 서버를 배포하고 관리하기 위한 권한
    • 서비스 계정 사용자: 배포 시 해당 계정의 신분으로 프로세스를 실행하기 위한 필수 권한

1.3 JSON 키 발급과 보안 관리

서비스 계정이 생성되었다면, 이제 이 계정을 외부에서 증명할 수 있는 '실물 열쇠'가 필요합니다. GCP는 이를 JSON 키 파일 형태로 제공합니다.

  • 키 생성: [서비스 계정] > [키 관리] > [새 키 만들기]에서 JSON 형식을 선택해 다운로드합니다.
  • GitLab 등록: 이 파일의 내용은 매우 민감하므로 절대 코드에 포함해서는 안 됩니다. GitLab의 Settings > CI/CD > VariablesFile 타입으로 등록하여 파이프라인 실행 시에만 임시로 불러오도록 설정합니다.

1.4 Artifact Registry 저장소 생성

컨테이너 이미지가 거주할 '집'을 지을 차례입니다. 기존 GCR(Google Container Registry)을 대체하는 Artifact Registry를 사용합니다.

  1. API 활성화: Artifact Registry 메뉴 접속 시 나타나는 '사용' 버튼을 클릭하여 API를 활성화합니다.
  2. 저장소(Repository) 만들기:
    • 이름: website
    • 형식: Docker
    • 모드: 표준(Standard)
    • 위치: asia-northeast3 (서울)

계층 구조 이해

우리가 만든 저장소는 다음과 같은 계층을 가집니다.

[저장소: website] > [패키지: 이미지 이름] > [버전: 태그/다이제스트]

하나의 website 저장소 안에 홈페이지, 관리자 페이지 등 여러 개의 컨테이너 패키지를 담아 관리할 수 있는 구조입니다.


💡 1장을 마치며

GCP의 인증 체계는 처음엔 복잡해 보이지만, '프로젝트 기반의 격리''서비스 계정을 통한 명확한 권한 위임'이라는 강력한 장점을 가지고 있습니다. 이제 '이미지가 들어갈 창고'와 '창고에 접근할 열쇠'가 준비되었습니다.

다음 장에서는 실제로 이 열쇠를 들고 이미지를 빌드하여 배포하는 실전 CI/CD 파이프라인 구축에 대해 알아보겠습니다.


다음 단계가 궁금하신가요? 이어지는 제2장에서는 gitlab-ci.yml의 실제 코드 구현과 Cloud Run을 통한 무중단 배포 실습 내용을 다룰 예정입니다. 궁금한 점은 댓글로 남겨주세요! 😊

profile
cyan-inn.im

0개의 댓글