Gitlab 部署介绍

目录

  1. Gitlab 部署介绍

  2. 安装简介

    1. 本文参考资料

  3. 组件介绍

  4. 获取部署文件

安装简介

Gitlab 在 Kubernetes 中有三种安装方式:

  • 单节点运行:Gitlab CE 提供官方单节点 docker 镜像,使用 docker run 便可跑起来,在 Kubernetes 上只需要使用相同的镜像,设置合适的环境变量便可跑起来,这种架构所有组件(gitlab、gitlab-runner、postgresql、redis)都在一个镜像中,比较重,启动时间也很慢,个人在部署时发现时不时遇到初始化问题,刷新页面十几次才能解决,如果环境资源有限可以使用这种部署方式。

  • 三节点运行:有位大神在 gitlab 出了三节点 Docker 部署的镜像和方式https://github.com/sameersbn/docker-gitlab,将 gitlab、redis、postgresql 分开部署,github 加星6k,同时作者提供了 Kubernetes 部署yaml。测试这种部署很稳,而且作者更新很快,release 速度和官方发布齐平。推荐这种部署方式。

  • 官方 Helm charts 部署:这种方式架构最复杂,但是据官方说易于扩展。

本文参考资料

官方部署指南:

https://docs.gitlab.com/charts/installation/deployment.html

命令参考:

https://docs.gitlab.com/charts/installation/command-line-options.html

伪架构师博客:

https://blog.fleeto.us/courses/gitlab-notes/01-01-gitlab-deployment-k8s/

组件介绍

安装官方文档,Gitlab 共有以下组件:

Core:

  • NGINX Ingress:原生 helm 部署依赖于 loadbalancer,此 nginx ingress 会通过 4 层 LB 进行发布。

  • Registry:集成的镜像仓库。

  • GitLab/Gitaly:提供 gitaly 服务。

  • GitLab/GitLab Exporter:提供 Prometheus 监控指标。 此服务依赖于 Redis 和 PostgreSQ 。

  • GitLab/GitLab Shell:提供 SSH 服务,让用户可以通过 ssh 访问 gitlab。

  • GitLab/Migrations:是一个一次性 job,用于查找并迁移 gitlab 数据库。 此服务依赖于 Redis 和 PostgreSQL。

  • GitLab/Sidekiq: sidekiq 是个独立可配置的队列工具。此服务依赖于 Redis, PostgreSQL 和 Gitaly。

  • GitLab/Webservice:提供 gitlab webserver,每个 pod 中会有两个 webserver worker,同时pod内也会运行 gitlab workhorse。此服务依赖于 Redis, PostgreSQL, Gitaly, 和 Registry。

可外置的依赖:

其他可选组件:

获取部署文件

在客户端安装 helm 3,配置好 kubectl ,运行下列命令获取所有 gitlab charts:

helm repo add gitlab https://charts.gitlab.io/
helm repo update
helm fetch --untar gitlab/gitlab