架构

我们计划支持三层组件:

  1. Docker 容器
  2. 调度器(Kubernetes)
  3. 高级配置工具(Helm)

客户用于安装的主要方法是 Helm Chart

Docker 容器镜像

作为基础,我们将为每个服务创建一个 Docker 容器。 这将允许更容易的水平缩放,同时减少镜像大小和复杂性。 配置应该以 Docker 的标准方式传递,可能是环境变量或挂载的文件。这为调度程序软件提供了一个干净的通用接口。

GitLab Docker 镜像

GitLab 应用程序是使用包含 GitLab 特定服务的 Docker 映像构建的。这些镜像的构建环境可以在 CNG 仓库 中找到。

以下 GitLab 组件在 CNG 仓库中有镜像。

  • Gitaly
  • GitLab Elasticsearch Indexer
  • mail_room
  • GitLab Exporter
  • GitLab Shell
  • Sidekiq
  • GitLab Toolbox
  • Webservice
  • Workhorse

以下是派生 chart,它们也使用 GitLab 特定的 Docker 镜像。

用于 initContainers 和各种 Job 的 Docker 镜像。

  • alpine-certificates
  • kubectl

官方 Docker 镜像

我们利用以下现有的官方容器提供底层服务:

  • Docker Distribution (Docker Registry 2.0)
  • Prometheus
  • NGINX Ingress
  • cert-manager
  • Redis
  • PostgreSQL
  • Grafana

GitLab Chart

作为顶层 gitlab chart,它为一个完整的 GitLab 配置了所有必要的资源。这包括 GitLab、PostgreSQL、Redis、Ingress 和证书管理 chart。

在这个层次上,客户可以做出如下决定:

  • 是要使用嵌入式 PostgreSQL chart,还是要使用 Amazon RDS for PostgreSQL 等外部数据库。
  • 带上自己的 SSL 证书,或利用 Let’s Encrypt。
  • 使用负载均衡器或专用 Ingress。

想要快速轻松入门的用户应该从这个 chart 开始。

chart 的架构

主要的 GitLab chart 是一个伞形 chart,由许多其它 chart 组成。每个子 chart 都提供单独的文档说明,并放置在与 charts 目录结构匹配的结构中。

非 GitLab 组件在顶层打包和记载。GitLab 组件服务的文档在 GitLab chart 下:

组件列表

架构组件列表 上提供了使用 chart 部署的组件列表以及需要的配置说明。

设计决策

您可以在设计决策文档中找到有关这些 chart 架构的决策文档。