클라우드 씨드
-
Introduced in GitLab 15.4 with a flag named
google_cloud
. Disabled by default. - Enabled on self-managed and GitLab.com in GitLab 15.5.
클라우드 씨드는 Google Cloud와 협력하여 GitLab Incubation Engineering이 주도하는 오픈 소스 프로그램입니다.
클라우드 씨드는 Heroku와 같은 사용 용이성을 하이퍼 클라우드의 유연성과 결합합니다. 이를 위해 OAuth 2를 사용하여 Terraform과 인프라-코드 기반의 하이퍼 클라우드에서 서비스를 프로비저닝하여 2일 차 운영을 가능하게 합니다.
목적
우리는 주요 클라우드 제공업체에서 GitLab로 웹 애플리케이션(및 기타 작업 부하)를 배포하는 것이 사소한 일이 되어야 한다고 믿습니다.
이 노력을 지원하기 위해 클라우드 씨드는 GitLab에서 적절한 Google Cloud 서비스를 소비하는 것을 간단하고 직관적으로 만듭니다.
구글 클라우드 왜 선택했는가
또는 AWS 또는 Azure가 아닌 이유는 무엇인가?
클라우드 씨드는 누구나 확장할 수 있는 오픈 소스 프로그램이며, 우리는 모든 주요 클라우드 제공업체와 협력하고 싶습니다. 우리는 Google Cloud와 함께 작업하기로 선택했으며, 이는 그들의 팀이 접근 가능하고, 지원적이며, 협력적이기 때문입니다.
오픈 소스 프로젝트로서 모든 사람은 기여할 수 있습니다 및 우리의 방향을 형성할 수 있습니다.
Google Cloud Run에 배포
웹 애플리케이션이 GitLab 프로젝트에 있는 경우, Cloud Seed를 사용하여 GitLab에서 Google Cloud로 애플리케이션을 배포하려면 다음 단계를 따르세요:
배포 자격 증명 설정
클라우드 씨드는 GitLab 프로젝트에서 Google Cloud Platform(GCP) 서비스 계정을 생성하는 인터페이스를 제공합니다. 서비스 계정 생성 워크플로우 중에 관련 GCP 프로젝트를 선택해야 합니다. 이 프로세스는 서비스 계정, 키 및 배포 권한을 생성합니다.
서비스 계정을 생성하려면:
-
Project :: Infrastructure :: Google Cloud
페이지로 이동합니다. - Create Service Account를 선택합니다.
- Google OAuth 2 워크플로를 따르며 GitLab을 승인합니다.
- GCP 프로젝트를 선택합니다.
- 선택한 GCP 프로젝트에 대해 Git 참조(예: 브랜치 또는 태그)를 연결합니다.
- 서비스 계정을 생성하기 위해 양식을 제출합니다.
생성된 서비스 계정, 서비스 계정 키 및 관련 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 리전의 하위 집합입니다.
리전을 구성하려면:
-
Project :: Infrastructure :: Google Cloud
페이지로 이동합니다. - GCP 리전 구성을 선택합니다.
- 원하는 GCP 리전을 선택합니다.
- 선택한 GCP 리전에 대해 Git 참조(브랜치 또는 태그 등)를 연결합니다.
- GCP 리정을 구성하기 위해 양식을 제출합니다.
구성된 GCP 리전은 GitLab에 프로젝트 CI 변수로 저장됩니다. Project :: Settings :: CI
페이지에서 이를 검토하고 관리할 수 있습니다.
Cloud Run 배포 파이프라인 구성
파이프라인에서 Google Cloud Run 배포 작업을 구성할 수 있습니다. 이러한 파이프라인의 일반적인 사용 사례는 웹 애플리케이션의 지속적인 배포입니다.
프로젝트 파이프라인 자체는 빌드, 테스트 및 보안과 같은 여러 단계를 아우르는 더 넓은 목적을 가질 수 있습니다.
따라서 Cloud Run 배포 제공은 훨씬 더 큰 파이프라인에 적합한 하나의 작업으로 포장됩니다.
Cloud Run 배포 파이프라인을 구성하려면:
-
Project :: Infrastructure :: Google Cloud
페이지로 이동합니다. -
Deployments
탭으로 이동합니다. -
Cloud Run
에서 Merge Request를 통해 구성을 선택합니다. - 변경 사항을 검토하고 병합 요청을 생성하기 위해 제출합니다.
이 작업은 Cloud Run 배포 파이프라인을 가진 새 브랜치를 생성하고(또는 기존 파이프라인에 삽입) 변경 사항 및 배포 파이프라인 실행을 검토하고 주 브랜치에 병합할 수 있는 관련 병합 요청을 생성합니다.
Cloud SQL 데이터베이스 프로비저닝
관계형 데이터베이스 인스턴스는 Project :: Infrastructure :: 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 가격 페이지를 참조하세요.
데이터베이스 인스턴스 생성
Project :: Infrastructure :: Google Cloud
페이지에서 Database 탭을 선택합니다. 여기에서 Postgres, MySQL 및 SQL Server 데이터베이스 인스턴스를 생성할 수 있는 세 개의 버튼을 찾을 수 있습니다.
데이터베이스 인스턴스 생성 양식에는 GCP 프로젝트, Git 참조(브랜치 또는 태그), 데이터베이스 버전 및 머신 유형에 대한 필드가 있습니다. 제출하면 데이터베이스 인스턴스가 생성되고 데이터베이스 설정이 백그라운드 작업으로 대기열에 추가됩니다.
백그라운드 작업자를 통한 데이터베이스 설정
데이터베이스 인스턴스가 성공적으로 생성되면 다음 작업을 수행하기 위해 백그라운드 작업자가 실행됩니다:
- 데이터베이스 사용자 생성
- 데이터베이스 스키마 생성
- 프로젝트의 CI/CD 변수에 데이터베이스 세부정보 저장
데이터베이스에 연결
데이터베이스 인스턴스 설정이 완료되면 데이터베이스 연결 세부정보가 프로젝트 변수로 제공됩니다. 이러한 변수는 Project :: Settings :: CI
페이지를 통해 관리할 수 있으며, 적절한 환경에서 실행되는 파이프라인에 제공됩니다.
데이터베이스 인스턴스 관리
Project :: Infrastructure :: Google Cloud :: Databases
의 인스턴스 목록은 Google Cloud Console로 다시 링크됩니다. 인스턴스를 선택하여 세부정보를 보고 인스턴스를 관리하세요.
Cloud Seed에 기여하기
Cloud Seed에 기여할 수 있는 방법은 여러 가지가 있습니다:
- Cloud Seed를 사용하고 피드백을 공유하세요.
- Ruby on Rails 또는 Vue.js에 익숙하다면,
GitLab에 기여하는 것을 고려해보세요.
- Cloud Seed의 대부분은 GitLab 코드베이스의 내부 모듈입니다.
- GitLab 파이프라인에 익숙하다면, Cloud Seed Library 프로젝트에 기여하는 것을 고려해보세요.