Cloud Seed
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Cloud Seed는 Google Cloud와 협력하여 GitLab이 주도하는 오픈 소스 프로그램입니다. Cloud Seed는 Heroku와 같은 사용 편의성과 하이퍼 클라우드 유연성을 결합합니다. GitLab에서 주요 클라우드 프로바이더로 웹 애플리케이션(및 기타 워크로드)을 배포하는 것이 간단해야 한다고 믿습니다.
히스토리
- GitLab 15.4에서
google_cloud라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 15.5에서 GitLab Self-Managed 및 GitLab.com에서 활성화되었습니다.
Cloud Seed는 Google Cloud와 협력하여 GitLab이 주도하는 오픈 소스 프로그램입니다.
Cloud Seed는 Heroku와 같은 사용 편의성과 하이퍼 클라우드 유연성을 결합합니다. OAuth 2를 사용하여 Terraform과 인프라-코드(infrastructure-as-code) 기반의 하이퍼 클라우드에서 서비스를 프로비저닝하여 Day 2 운영을 가능하게 합니다.
목적#
GitLab에서 주요 클라우드 프로바이더로 웹 애플리케이션(및 기타 워크로드)을 배포하는 것이 간단해야 한다고 믿습니다.
이를 지원하기 위해 Cloud Seed는 GitLab에서 적합한 Google Cloud 서비스를 간단하고 직관적으로 사용할 수 있게 합니다.
Google Cloud를 선택한 이유#
또는 AWS나 Azure를 선택하지 않은 이유는?
Cloud Seed는 누구나 확장할 수 있는 오픈 소스 프로그램이며, 모든 주요 클라우드 프로바이더와 협력하기를 원합니다. Google Cloud를 선택한 이유는 그들의 팀이 이 노력에서 접근하기 쉽고, 지원적이며, 협력적이기 때문입니다.
오픈 소스 프로젝트로서 누구나 기여하고 우리의 방향을 형성할 수 있습니다.
Google Cloud Run에 배포#
GitLab 프로젝트에 웹 애플리케이션이 있는 경우, Cloud Seed를 사용하여 GitLab에서 Google Cloud로 애플리케이션을 배포하려면 다음 단계를 따릅니다:
배포 자격 증명 설정#
Cloud Seed는 GitLab 프로젝트에서 Google Cloud Platform(GCP) 서비스 계정을 생성하는 인터페이스를 제공합니다. 서비스 계정 생성 워크플로우 중에 연관된 GCP 프로젝트를 선택해야 합니다. 이 프로세스는 서비스 계정, 키 및 배포 권한을 생성합니다.
서비스 계정을 생성하려면:
Project :: Infrastructure :: Google Cloud페이지로 이동합니다.- 서비스 계정 생성을 선택합니다.
- Google OAuth 2 워크플로우를 따르고 GitLab을 승인합니다.
- GCP 프로젝트를 선택합니다.
- 선택한 GCP 프로젝트에 대한 Git 참조(예: 브랜치 또는 태그)를 연결합니다.
- 양식을 제출하여 서비스 계정을 생성합니다.
생성된 서비스 계정, 서비스 계정 키 및 관련 GCP 프로젝트 ID는 GitLab에 프로젝트 CI 변수로 저장됩니다. Project :: Settings :: CI 페이지에서 검토 및 관리할 수 있습니다.
생성된 서비스 계정에는 다음 역할이 있습니다:
roles/iam.serviceAccountUserroles/artifactregistry.adminroles/cloudbuild.builds.builderroles/run.adminroles/storage.adminroles/cloudsql.clientroles/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에서 머지 리퀘스트를 통해 구성을 선택합니다.- 변경 사항을 검토하고 제출하여 머지 리퀘스트를 생성합니다.
이렇게 하면 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 페이지에서 데이터베이스 탭을 선택합니다. 여기서 Postgres, MySQL, SQL Server 데이터베이스 인스턴스를 생성하는 세 개의 버튼을 찾을 수 있습니다.
데이터베이스 인스턴스 생성 양식에는 GCP 프로젝트, Git ref(브랜치 또는 태그), 데이터베이스 버전 및 머신 유형 필드가 있습니다. 제출 시 데이터베이스 인스턴스가 생성되고 데이터베이스 설정이 백그라운드 작업으로 대기열에 추가됩니다.
백그라운드 워커를 통한 데이터베이스 설정#
데이터베이스 인스턴스가 성공적으로 생성되면 백그라운드 워커를 트리거하여 다음 작업을 수행합니다:
- 데이터베이스 사용자 생성
- 데이터베이스 스키마 생성
- 프로젝트의 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 프로젝트에 기여하는 것을 고려합니다.
