클라우드 시드

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated
  • GitLab 15.4에서 google_cloud라는 플래그가 있는 피처 플래그으로 소개됨. 기본 상태에서 비활성화됨.
  • GitLab 15.5에서 Self-Managed와 GitLab.com에서 활성화됨.

클라우드 시드는 GitLab 인큐베이션 엔지니어링Google Cloud의 협력으로 이끌어지는 오픈 소스 프로그램입니다.

클라우드 시드는 헤로쿠와 같은 사용 편의성을 하이퍼 클라우드 유연성과 결합하여 제공합니다. 이를 위해 OAuth 2를 사용하여 Terraform의 기반 위에 하이퍼 클라우드에서 서비스를 프로비저닝하고 인프라스트럭처-애스-코드를 사용하여 2일 후 운영을 활성화합니다.

목적

우리는 GitLab에서 주요 클라우드 공급업체로의 웹 애플리케이션(및 다른 워크로드)을 배포하는 것이 쉽다고 믿습니다.

이를 지원하기 위해 클라우드 시드는 GitLab에서 적절한 Google Cloud 서비스를 직관적이고 쉽게 사용할 수 있게 합니다.

왜 구글 클라우드

또는 왜 AWS 또는 Azure가 아닐까?

클라우드 시드는 누구나 확장할 수 있는 오픈 소스 프로그램이며, 이 노력에 대해 협력적이고 지원적이며 협업적인 Google Cloud 팀과 일하기를 원합니다.

오픈 소스 프로젝트로 모두가 기여하고 우리의 방향을 형성할 수 있습니다.

Google Cloud Run으로 배포

GitLab 프로젝트에 웹 애플리케이션이 있다면, 다음 단계를 따라 Cloud Seed를 사용하여 GitLab에서 Google Cloud로 애플리케이션을 배포할 수 있습니다.

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

배포 자격 증명 설정

클라우드 시드는 GitLab 프로젝트에서 Google Cloud Platform (GCP) 서비스 계정을 생성하기 위한 인터페이스를 제공합니다. 연결된 GCP 프로젝트는 서비스 계정 생성 워크플로 중 선택되어야 합니다. 이 과정은 서비스 계정, 키, 및 배포 권한을 생성합니다.

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

  1. 프로젝트 :: 인프라스트럭처 :: 구글 클라우드 페이지로 이동합니다.
  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. 프로젝트 :: 인프라스트럭처 :: 구글 클라우드 페이지로 이동합니다.
  2. GCP 지역 구성을 선택합니다.
  3. 선호하는 GCP 지역을 선택합니다.
  4. 선택한 GCP 지역에 대한 Git 참조(브랜치 또는 태그와 같은)를 연결합니다.
  5. 지정된 형식으로 GCP 지역을 구성하려면 양식을 제출합니다.

설정된 GCP 지역은 프로젝트 CI 변수로 GitLab에 저장됩니다. 이는 프로젝트 :: 설정 :: CI 페이지에서 검토하고 관리할 수 있습니다.

Cloud Run 배포 파이프라인 구성

파이프라인에서 Google Cloud Run 배포 작업을 구성할 수 있습니다. 이러한 파이프라인의 전형적인 사용 사례는 웹 애플리케이션의 지속적 배포입니다.

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

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

  1. 프로젝트 :: 인프라스트럭처 :: 구글 클라우드 페이지에 이동합니다.
  2. 배포 탭에 이동합니다.
  3. Cloud Run에서 Merge Request을 통해 구성을 선택합니다.
  4. 수정 사항을 검토하고 Merge Request을 생성하여 제출합니다.

이렇게 하면 Cloud Run 배포 파이프라인이 있는 새 브랜치가 만들어지며(또는 기존 파이프라인에 삽입됨) 변경 사항과 배포 파이프라인 실행을 검토하고 기본 브랜치에 Merge할 수 있는 연관된 Merge Request이 생성됩니다.

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

관계형 데이터베이스 인스턴스는 프로젝트 :: 인프라스트럭처 :: 구글 클라우드 페이지에서 프로비저닝할 수 있습니다. 클라우드 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

Google Cloud의 요금이 적용됩니다. 클라우드 SQL 요금 페이지를 참조하십시오.

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

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

프로젝트 :: 인프라스트럭처 :: 구글 클라우드 페이지에서 데이터베이스 탭을 선택합니다. 여기에서 PostgreSQL, MySQL 및 SQL Server 데이터베이스 인스턴스를 생성하는 세 가지 버튼을 찾을 수 있습니다.

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

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

데이터베이스 인스턴스가 성공적으로 생성되면 백그라운드 워커가 다음 작업을 수행합니다:

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

데이터베이스에 연결

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

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

프로젝트 :: 인프라스트럭처 :: 구글 클라우드 :: 데이터베이스의 인스턴스 디렉터리은 Google Cloud Console로 연결됩니다. 인스턴스를 선택하여 세부 정보를 보고 인스턴스를 관리할 수 있습니다.

클라우드 시드에 기여하기

다음과 같은 여러 가지 방법으로 클라우드 시드에 기여할 수 있습니다:

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