云种子
- 层级:免费版、高级版、旗舰版
- 提供:GitLab.com、GitLab自托管、GitLab专用
云种子是由GitLab领导的开源项目,与谷歌云(Google Cloud)合作开发。
云种子结合了类似Heroku的易用性与超云灵活性。我们通过使用OAuth 2在基于Terraform和基础设施即代码的超云上配置服务,以实现运维操作。
目标
我们相信,从GitLab部署Web应用(及其他工作负载)到主要云提供商应该是轻而易举的事。
为支持这一努力,云种子让在GitLab中使用合适的谷歌云服务变得简单直观。
为什么选择谷歌云?
或者为什么不选AWS或Azure?
云种子是一个开源项目,任何人都可以扩展它,我们很乐意与每家主要的云提供商合作。我们选择与谷歌云合作,是因为他们的团队在这个项目中易于接触、支持和协作。
作为一个开源项目,每个人都可以贡献并塑造我们的方向。
部署到谷歌云Run
当您的Web应用位于GitLab项目中后,请按照以下步骤使用云种子将其从GitLab部署到谷歌云:
设置部署凭证
云种子提供了一个界面,可从您的GitLab项目中创建谷歌云平台(GCP)服务账号。在服务账号创建流程中必须选择关联的GCP项目。此过程会生成服务账号、密钥和部署权限。
要创建服务账号:
- 前往
项目 :: 基础设施 :: 谷歌云页面。 - 选择 创建服务账号。
- 遵循谷歌OAuth 2流程并授权GitLab。
- 选择您的GCP项目。
- 为所选GCP项目关联一个Git引用(如分支或标签)。
- 提交表单以创建服务账号。
生成的服务账号、服务账号密钥及关联的GCP项目ID存储在GitLab的项目CI变量中。您可以在 项目 :: 设置 :: CI 页面查看和管理这些信息。
生成的服务账号具有以下角色:
roles/iam.serviceAccountUserroles/artifactregistry.adminroles/cloudbuild.builds.builderroles/run.adminroles/storage.adminroles/cloudsql.clientroles/browser
您可以通过将CI变量存储在秘密管理器中来提高安全性。更多信息,请参阅使用GitLab进行秘密管理。
配置您偏好的GCP区域
当您为部署配置GCP区域时,提供的区域列表是所有可用GCP区域的子集。
要配置区域:
- 前往
项目 :: 基础设施 :: 谷歌云页面。 - 选择 配置GCP区域。
- 选择您偏好的GCP区域。
- 为所选GCP区域关联一个Git引用(如分支或标签)。
- 提交表单以配置GCP区域。
配置的GCP区域存储在GitLab的项目CI变量中。您可以在 项目 :: 设置 :: CI 页面查看和管理这些信息。
配置Cloud Run部署管道
您可以在管道中配置谷歌云Run部署作业。此类管道的典型用途是持续部署您的Web应用。
项目管道本身可能有更广泛的目的,涵盖多个阶段,如构建、测试和安全。因此,Cloud Run部署选项被打包为一个作业,融入更大的管道中。
要配置Cloud Run部署管道:
- 前往
项目 :: 基础设施 :: 谷歌云页面。 - 进入
部署标签页。 - 对于
Cloud Run,选择 通过合并请求配置。 - 审查更改并提交以创建合并请求。
这将创建一个新分支,其中包含Cloud Run部署管道(或注入现有管道),并创建一个相关合并请求,用于审查更改和部署管道执行情况,然后合并到主分支。
配置谷歌云SQL数据库
关系型数据库实例可以从 项目 :: 基础设施 :: 谷歌云 页面配置。Cloud 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
谷歌云定价适用。请参考Cloud SQL定价页面。
创建数据库实例
从 项目 :: 基础设施 :: 谷歌云 页面,选择 数据库 标签页。这里有三个按钮用于创建PostgreSQL、MySQL和SQL Server数据库实例。
数据库实例创建表单包含GCP项目、Git引用(分支或标签)、数据库版本和机器类型字段。提交后,数据库实例被创建,数据库设置被排队作为后台作业处理。
通过后台工作者设置数据库
数据库实例成功创建后,会触发后台工作者执行以下任务:
- 创建数据库用户
- 创建数据库模式
- 将数据库详情存储在项目的CI/CD变量中
连接到数据库
数据库实例设置完成后,数据库连接详情可作为项目变量获取。这些可以在 项目 :: 设置 :: CI 页面管理,并在适当环境中执行的管道中可用。
管理数据库实例
项目 :: 基础设施 :: 谷歌云 :: 数据库 中的实例列表会链接回谷歌云控制台。选择一个实例以查看详情并管理该实例。
贡献给云种子
有几种方式您可以贡献给云种子: