目标
我们对这项计划有几个核心目标:
- 易于横向扩展
- 易于部署、升级、维护
- 云服务商的广泛支持
- 初步支持 Kubernetes 和 Helm,未来可以灵活支持其它调度器
Scheduler
我们即将发布对 Kubernetes 的支持,Kubernetes 已经非常成熟而且很多行业都已广泛支持。作为我们设计的一部分,我们将尽量避免做出会排除其他调度器支持的决策。这对于像 OpenShift 这样的下游 Kubernetes 项目来说尤其正确。未来,也可能支持其他调度器,如Docker Swarm。
我们的目标是支持 Kubernetes 的扩展和自我修复能力:
- Readiness 和健康检查以确保 Pod 正常运行,如果没有,则回收它们
- 跟踪支持金丝雀和滚动部署的
- 自动缩放
我们将尝试利用标准的 Kubernetes 功能:
- 用于管理配置的 ConfigMaps。 然后这些将被映射或传递到 Docker 容器
- 敏感数据的 secret
由于我们可能也在使用 Consul,因此可以使用它来与其他安装方法保持一致。
Helm Charts
创建一个 Helm chart 来管理每个 GitLab 特定容器/服务的部署。然后,我们还将包含捆绑 chart,以使整体部署更容易。这对于这项工作尤为重要,因为 Docker 和 Kubernetes 层的复杂性将远高于基于一体化 Omnibus 的解决方案。
Helm 可以帮助管理这种复杂性,并提供一个简单的顶层接口,来通过 values.yaml
文件管理设置。
我们计划提供一套三层 Helm Charts。