架构
我们计划支持三层组件:
- Docker 容器
- 调度器(Kubernetes)
- 高级配置工具(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 下:
- NGINX
- MinIO
- Registry
- GitLab/Gitaly
- GitLab/GitLab Exporter
- GitLab/GitLab Grafana
- GitLab/GitLab Shell
- GitLab/Migrations
- GitLab/Sidekiq
- GitLab/Webservice
组件列表
架构组件列表 上提供了使用 chart 部署的组件列表以及需要的配置说明。
设计决策
您可以在设计决策文档中找到有关这些 chart 架构的决策文档。