클라우드 시드

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

클라우드 시드는 GitLab Incubation EngineeringGoogle Cloud와 협력하여 이끄는 오픈 소스 프로그램입니다.

클라우드 시드는 헤로쿠와 같은 사용 편의성과 하이퍼 클라우드 유연성을 결합합니다. 이를 위해 OAuth 2를 사용하여 Terraform과 인프라스트럭처-애스-코드를 기반으로 하는 하이퍼 클라우드에서 서비스를 제공함으로써 Day 2 운영을 가능하게 합니다.

목적

우리는 GitLab에서 메이저 클라우드 제공업체로 웹 애플리케이션(또는 기타 워크로드)을 배포하는 것이 더 간단해야 한다고 믿습니다.

이 노력을 지원하기 위해, 클라우드 시드는 GitLab에서 적절한 구글 클라우드 서비스를 쉽고 직관적으로 사용할 수 있도록 합니다.

왜 구글 클라우드?

또는 왜 AWS나 Azure가 아닌가요?

클라우드 시드는 누구에의해 확장될 수 있는 오픈 소스 프로그램이며, 우리는 모든 주요 클라우드 제공업체와 함께하길 원합니다. 우리는 구글 클라우드와 협력하여 작업하기로 선택했는데, 이는 그들의 팀이 이 노력에서 접근 가능하고 협조적이며 협력적이기 때문입니다.

오픈 소스 프로젝트로, 누구나 기여할 수 있고 우리의 방향을 조절할 수 있습니다.

구글 클라우드 런으로 배포하기

GitLab 프로젝트에 웹 애플리케이션이 준비된 후, 클라우드 시드를 이용하여 GitLab에서 구글 클라우드로 애플리케이션을 배포하려면 다음 단계를 따르세요:

  1. 배포 자격 증명 설정
  2. (선택 사항) 기본 GCP 지역 구성
  3. 클라우드 런 배포 파이프라인 구성

배포 자격 증명 설정

클라우드 시드는 GitLab 프로젝트에서 구글 클라우드 플랫폼 (GCP) 서비스 계정을 생성하기 위한 인터페이스를 제공합니다. 서비스 계정 생성 작업 중에는 연결할 GCP 프로젝트를 선택해야 합니다. 이 프로세스는 서비스 계정, 키 및 배포 권한을 생성합니다.

서비스 계정을 생성하려면:

  1. Project :: Infrastructure :: Google Cloud 페이지로 이동하세요.
  2. 서비스 계정 생성을 선택하세요.
  3. 구글 OAuth 2 워크플로우를 따라 진행하고 GitLab을 인가하세요.
  4. GCP 프로젝트를 선택하세요.
  5. 선택한 GCP 프로젝트에 대한 Git 레퍼런스(브랜치 또는 태그와 같은)를 연결하세요.
  6. 서비스 계정 생성 양식을 제출하세요.

생성된 서비스 계정, 서비스 계정 키 및 연결된 GCP 프로젝트 ID는 GitLab에 프로젝트 CI 변수로 저장됩니다. 이러한 변수는 Project :: Settings :: CI 페이지에서 확인하고 관리할 수 있습니다.

생성된 서비스 계정에는 다음 역할이 있습니다:

  • roles/iam.serviceAccountUser
  • roles/artifactregistry.admin
  • roles/cloudbuild.builds.builder
  • roles/run.admin
  • roles/storage.admin
  • roles/cloudsql.client
  • roles/browser

보안을 강화하기 위해 CI 변수를 시크릿 매니저에 저장할 수 있습니다. 자세한 내용은 GitLab을 사용한 시크릿 관리를 참조하세요.

기본 GCP 지역 구성

배포를 위해 GCP 지역을 구성할 때, 제공되는 지역 디렉터리은 모든 GCP 지역의 하위 집합입니다.

지역을 구성하려면:

  1. Project :: Infrastructure :: Google Cloud 페이지로 이동하세요
  2. GCP 지역 구성을 선택하세요.
  3. 원하는 GCP 지역을 선택하세요.
  4. 선택한 GCP 지역에 대한 Git 레퍼런스(브랜치 또는 태그와 같은)를 연결하세요.
  5. 지정된 GCP 지역 양식을 제출하세요.

구성된 GCP 지역은 프로젝트 CI 변수로 GitLab에 저장됩니다. 이러한 변수는 Project :: Settings :: CI 페이지에서 확인하고 관리할 수 있습니다.

클라우드 런 배포 파이프라인 구성

파이프라인에서 구글 클라우드 런 배포 작업을 구성할 수 있습니다. 해당 파이프라인의 전형적인 사용 사례는 웹 애플리케이션의 지속적인 배포입니다.

프로젝트 파이프라인 자체는 빌드, 테스트 및 보안과 같은 여러 단계에 걸친 더 넓은 목적을 가질 수 있습니다. 따라서 클라우드 런 배포는 더 큰 파이프라인에 맞게 포장된 하나의 작업으로 제공됩니다.

클라우드 런 배포 파이프라인을 구성하려면:

  1. Project :: Infrastructure :: Google Cloud 페이지로 이동하세요.
  2. 배포 탭으로 이동하세요.
  3. Cloud Run에서 Merge Request을 통한 구성을 선택하세요.
  4. 변경 사항을 검토하고 Merge Request 생성을 제출하세요.

이렇게 하면 클라우드 런 배포 파이프라인(또는 기존 파이프라인에 주입)이 있는 새 브랜치가 생성되고, 해당 변경 사항과 배포 파이프라인 실행을 볼 수 있고 메인 브랜치로 Merge할 수 있는 관련 Merge Request이 생성됩니다.

클라우드 SQL 데이터베이스 프로비저닝

Project :: Infrastructure :: Google Cloud 페이지에서 관계형 데이터베이스 인스턴스를 프로비저닝할 수 있습니다. 클라우드 SQL은 데이터베이스 인스턴스를 프로비저닝하는 데 사용되는 기본적인 구글 클라우드 서비스입니다.

다음 데이터베이스와 버전이 지원됩니다:

  • PostgreSQL: 14, 13, 12, 11, 10 및 9.6
  • MySQL: 8.0, 5.7 및 5.6
  • SQL Server
    • 2019: Standard, Enterprise, Express 및 Web
    • 2017: Standard, Enterprise, Express 및 Web

구글 클라우드의 가격이 적용됩니다. Cloud SQL 요금 페이지를 참조하세요.

  1. 데이터베이스 인스턴스 생성
  2. 백그라운드 워커를 통한 데이터베이스 설정
  3. 데이터베이스에 연결
  4. 데이터베이스 인스턴스 관리

데이터베이스 인스턴스 생성

Project :: Infrastructure :: Google Cloud 페이지에서 데이터베이스 탭을 선택하세요. 여기에서 포스트그레스, MySQL 및 SQL Server 데이터베이스 인스턴스를 생성하는 세 개의 버튼을 찾을 수 있습니다.

데이터베이스 인스턴스 생성 양식에는 GCP 프로젝트, Git ref(브랜치 또는 태그) 및 데이터베이스 버전 및 머신 유형에 대한 필드가 있습니다. 제출하면 데이터베이스 인스턴스가 생성되고 데이터베이스 설정이 백그라운드 작업으로 대기열에 추가됩니다.

백그라운드 워커를 통한 데이터베이스 설정

데이터베이스 인스턴스의 성공적인 생성은 백그라운드 워커를 트리거하여 다음 작업을 수행합니다:

  • 데이터베이스 사용자 생성
  • 데이터베이스 스키마 생성
  • 프로젝트의 CI/CD 변수에 데이터베이스 세부 정보 저장

데이터베이스에 연결

데이터베이스 인스턴스 설정이 완료되면, 프로젝트 변수로 데이터베이스 연결 세부 정보를 사용할 수 있습니다. 이 정보는 프로젝트 :: 설정 :: CI 페이지를 통해 관리할 수 있으며, 해당 환경에서 실행되는 파이프라인에서 이용 가능합니다.

데이터베이스 인스턴스 관리

프로젝트 :: 인프라 :: Google Cloud :: 데이터베이스의 인스턴스 디렉터리은 Google Cloud 콘솔로 연결됩니다. 세부 정보를 보고 인스턴스를 관리하려면 인스턴스를 선택하세요.

Cloud Seed에 기여하기

Cloud Seed에 기여할 수 있는 다양한 방법이 있습니다:

  • Cloud Seed를 사용하고 피드백을 공유하세요.
  • Ruby on Rails 또는 Vue.js에 익숙한 경우, 개발자로서 GitLab에 기여하는 것을 고려해보세요.
    • Cloud Seed의 많은 부분은 GitLab 코드베이스의 내부 모듈입니다.
  • GitLab 파이프라인에 익숙한 경우, Cloud Seed 라이브러리 프로젝트에 기여하는 것을 고려해보세요.