Cloud Seed

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리, GitLab Dedicated

Cloud Seed는 Google Cloud와 협력하여 GitLab 인큐베이션 엔지니어링이 주도하는 오픈 소스 프로그램입니다.

Cloud Seed는 테라폼 및 인프라스트럭처-애스코드 기반의 하이퍼클라우드에서 OAuth 2를 사용하여 서비스를 프로비저닝하여 Heroku와 같은 쉬운 사용성과 하이퍼클라우드 유연성을 결합합니다.

목적

우리는 GitLab에서 주요 클라우드 공급 업체로의 웹 응용 프로그램(및 기타 워크로드) 배포가 쉬워야 한다고 믿습니다.

이를 지원하기 위해 Cloud Seed는 GitLab에서 Google Cloud 서비스를 간편하고 직관적으로 사용할 수 있도록 합니다.

왜 Google Cloud?

또는 AWS 또는 Azure가 아닌 이유

Cloud Seed는 누구나 확장할 수 있는 오픈 소스 프로그램이며 모든 주요 클라우드 공급 업체와 함께 작업하고 싶습니다. 우리는 Google Cloud와 함께 작업하기로 선택했습니다. 왜냐하면 그들의 팀이 이 노력에 대해 접근 가능하고 지원적이며 협업적이기 때문입니다.

오픈 소스 프로젝트이므로 누구나 기여할 수 있고 우리의 방향을 형성할 수 있습니다.

Google Cloud Run으로 배포

GitLab 프로젝트에서 웹 응용 프로그램을 보유한 후, Cloud Seed를 사용하여 GitLab에서 Google Cloud로 앱을 배포하려면 다음 단계를 따르세요:

  1. 배포 자격 증명 설정
  2. (선택 사항) 선호하는 GCP 리전 구성
  3. Cloud Run 배포 파이프라인 구성

배포 자격 증명 설정

Cloud Seed는 GitLab 프로젝트에서 Google Cloud Platform (GCP) 서비스 계정을 생성하기 위한 인터페이스를 제공합니다. 관련 GCP 프로젝트 선택은 서비스 계정 생성 워크플로 중에 이루어집니다. 이 과정에서 서비스 계정, 키 및 배포 권한이 생성됩니다.

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

  1. 프로젝트 :: 인프라스트럭처 :: Google Cloud 페이지로 이동합니다.
  2. 서비스 계정 생성을 선택합니다.
  3. Google OAuth 2 워크플로를 따르고 GitLab을 승인합니다.
  4. GCP 프로젝트를 선택합니다.
  5. 선택한 GCP 프로젝트에 대해 Git 레퍼런스(브랜치 또는 태그와 같은)를 연결합니다.
  6. 양식을 제출하여 서비스 계정을 생성합니다.

생성된 서비스 계정, 서비스 계정 키 및 관련 GCP 프로젝트 ID는 GitLab에 프로젝트 CI 변수로 저장됩니다. 이를 프로젝트 :: 설정 :: 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. 프로젝트 :: 인프라스트럭처 :: Google Cloud 페이지로 이동합니다.
  2. GCP 리전 구성을 선택합니다.
  3. 선호하는 GCP 리전을 선택합니다.
  4. 선택한 GCP 리전에 대해 Git 레퍼런스(브랜치 또는 태그와 같은)를 연결합니다.
  5. 양식을 제출하여 GCP 리전을 구성합니다.

구성된 GCP 리전은 GitLab에 프로젝트 CI 변수로 저장됩니다. 이를 프로젝트 :: 설정 :: CI 페이지에서 확인하고 관리할 수 있습니다.

Cloud Run 배포 파이프라인 구성

파이프라인에서 Google Cloud Run 배포 작업을 구성할 수 있습니다. 이러한 파이프라인을 위한 전형적인 사용 사례는 웹 응용 프로그램의 지속적인 배포입니다.

프로젝트 파이프라인 자체는 더 넓은 목적(빌드, 테스트, 보안 등)을 가질 수 있습니다. 따라서 Cloud Run 배포 제공은 훨씬 더 큰 파이프라인에 맞는 한 작업으로 패키지로 제공됩니다.

Cloud Run 배포 파이프라인을 구성하려면:

  1. 프로젝트 :: 인프라스트럭처 :: Google Cloud 페이지로 이동합니다.
  2. Deployments 탭으로 이동합니다.
  3. Cloud Run에서 병합 요청을 통해 구성을 선택합니다.
  4. 변경 사항을 검토하고 병합 요청을 생성하려면 제출합니다.

이렇게 하면 Cloud Run 배포 파이프라인이 있는 새 브랜치가 생성되고(또는 기존 파이프라인에 삽입됨) 변경 사항과 배포 파이프라인 실행을 검토하고 병합할 수 있는 추가 병합 요청이 만들어집니다.

Google Cloud SQL 데이터베이스 프로비저닝

관계형 데이터베이스 인스턴스는 프로젝트 :: 인프라스트럭처 :: Google Cloud 페이지에서 프로비저닝할 수 있습니다. Cloud SQL은 데이터베이스 인스턴스를 프로비저닝하는 데 사용되는 Google Cloud의 기본 서비스입니다.

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

  • 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

Google Cloud의 가격이 적용됩니다. Cloud SQL 가격 페이지를 참조하십시오.

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

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

프로젝트 :: 인프라스트럭처 :: Google Cloud 페이지에서 데이터베이스 탭을 선택합니다. 여기에서 Postgres, MySQL 및 SQL Server 데이터베이스 인스턴스를 생성할 수 있는 세 가지 버튼이 있습니다.

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

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

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

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

데이터베이스에 연결

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

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

프로젝트 :: 인프라 :: Google 클라우드 :: 데이터베이스의 인스턴스 목록은 Google 클라우드 콘솔로 이어지며, 세부 정보를 보거나 인스턴스를 관리할 수 있습니다.

Cloud Seed에 기여하기

Cloud Seed에 기여할 수 있는 몇 가지 방법이 있습니다:

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