Cloud Seed
- GitLab 15.4에 도입되었습니다 . 기본적으로 비활성화된
google_cloud
라는 플래그와 함께.- GitLab 15.5에서는 Self-managed와 GitLab.com에서 활성화되었습니다.
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로 앱을 배포하려면 다음 단계를 따르세요:
배포 자격 증명 설정
Cloud Seed는 GitLab 프로젝트에서 Google Cloud Platform (GCP) 서비스 계정을 생성하기 위한 인터페이스를 제공합니다. 관련 GCP 프로젝트 선택은 서비스 계정 생성 워크플로 중에 이루어집니다. 이 과정에서 서비스 계정, 키 및 배포 권한이 생성됩니다.
서비스 계정을 생성하려면:
-
프로젝트 :: 인프라스트럭처 :: Google Cloud
페이지로 이동합니다. - 서비스 계정 생성을 선택합니다.
- Google OAuth 2 워크플로를 따르고 GitLab을 승인합니다.
- GCP 프로젝트를 선택합니다.
- 선택한 GCP 프로젝트에 대해 Git 레퍼런스(브랜치 또는 태그와 같은)를 연결합니다.
- 양식을 제출하여 서비스 계정을 생성합니다.
생성된 서비스 계정, 서비스 계정 키 및 관련 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 리전의 하위 집합입니다.
리전을 구성하려면:
-
프로젝트 :: 인프라스트럭처 :: Google Cloud
페이지로 이동합니다. - GCP 리전 구성을 선택합니다.
- 선호하는 GCP 리전을 선택합니다.
- 선택한 GCP 리전에 대해 Git 레퍼런스(브랜치 또는 태그와 같은)를 연결합니다.
- 양식을 제출하여 GCP 리전을 구성합니다.
구성된 GCP 리전은 GitLab에 프로젝트 CI 변수로 저장됩니다. 이를 프로젝트 :: 설정 :: CI
페이지에서 확인하고 관리할 수 있습니다.
Cloud Run 배포 파이프라인 구성
파이프라인에서 Google Cloud Run 배포 작업을 구성할 수 있습니다. 이러한 파이프라인을 위한 전형적인 사용 사례는 웹 응용 프로그램의 지속적인 배포입니다.
프로젝트 파이프라인 자체는 더 넓은 목적(빌드, 테스트, 보안 등)을 가질 수 있습니다. 따라서 Cloud Run 배포 제공은 훨씬 더 큰 파이프라인에 맞는 한 작업으로 패키지로 제공됩니다.
Cloud Run 배포 파이프라인을 구성하려면:
-
프로젝트 :: 인프라스트럭처 :: Google Cloud
페이지로 이동합니다. -
Deployments
탭으로 이동합니다. -
Cloud Run
에서 병합 요청을 통해 구성을 선택합니다. - 변경 사항을 검토하고 병합 요청을 생성하려면 제출합니다.
이렇게 하면 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 가격 페이지를 참조하십시오.
데이터베이스 인스턴스 생성
프로젝트 :: 인프라스트럭처 :: 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 라이브러리 프로젝트에 기여하는 것을 고려해보세요.