当前,我将整个gitlab EE作为单个容器运行。我需要扩展该服务,以便它可以同时支持更多用户和更多操作/拉/推/合并请求等。
我需要运行自己的Redis集群
我需要单独运行PG集群
我需要集成Elasticsearch进行搜索
但是如何扩展剩余的核心gitlab服务。它们是否支持横向扩展体系结构。
答案 0 :(得分:2)
它们是否支持横向扩展体系结构。
不完全是,考虑到GitLab Omnibus image是具有捆绑依赖项的一个软件包。
但是我从未经历过如此多的流量,因此需要对其进行拆分和扩展。
尽管有一个建议,可以拆分Omnibus映像:gitlab-org/omnibus-gitlab
issue 1800。
它指向gitlab-org/build/CNG
,它正是您要寻找的内容:
每个目录都包含运行GitLab所需的基础结构特定组件的Dockerfile。
- rails -API和Web都需要的Rails代码。
- unicorn -暴露Rails的Unicorn容器。
- sidekiq -运行异步Rails作业的Sidekiq容器
- shell -运行GitLab Shell和OpenSSH以通过ssh提供git以及来自数据库的授权密钥支持
- gitaly -提供分布式git存储库的Gitaly容器
使用Kubernetes的另一个选项是charts/gitlab
:
gitlab图表是在Kubernetes上操作GitLab的最佳方法。该图表包含入门所需的所有必需组件,并且可以扩展到大型部署。
此图表和相应容器的一些主要优点是:
- 改善的可扩展性和可靠性
- 无需root权限
- 使用对象存储代替NFS进行存储
默认部署包括:
- GitLab的核心组件:Unicorn,Shell,Workhorse,Registry,Sidekiq和Gitaly
- 可选依赖项:Postgres,Redis,Minio
- 使用Kubernetes执行器的自动缩放,无特权的GitLab Runner
- 通过“让我们加密”自动设置SSL。