在 Kubernetes 上运行 GitLab  

利用 Kubernetes 和 Docker 部署分布式 GitLab

| By Ryan Moe, Animesh Singh

Description

容器是同时在公有和私有云中部署应用程序的一种主要趋势。容器在最近得到广泛采用,很大程度上是由于开发出了旨在让它们更易用的标准,比如 Docker 映像格式和分发模型。容器的一个重要用例是,将遗留应用程序迁移到容器编排平台,比如 Kubernetes,以方便分发、扩展和维护。

概览

这个应用程序展示容器的强大功能,以及如何将现有应用程序无缝地迁移到云。我们为开发人员提供一个完整的路线图,帮助他们将应用程序迁移到云,并使用容器来利用云原生打包功能。我们将展示如何利用 Kubernetes,将一个常见的多组件应用程序部署到 IBM Cloud Container Service 上。

GitLab 代表着一个典型的多层应用程序,每个组件将拥有自己的容器。微服务容器将用于 Web 层,状态/作业数据库将使用 Redis 和 PostgreSQL 作为数据库。

  1. 用户通过 Web 接口或通过将代码推送到 GitHub 存储库来与 GitLab 交互。GitLab 容器运行 NGINX 和 gitlab-workhorse 背后的主要 Ruby on Rails 应用程序,gitlab-workhorse 是一个针对大型 HTTP 请求的逆向代理,比如文件下载和 Git 推送/拉取请求。在通过 HTTP/HTTPS 提供存储库时,GitLab 利用 GitLab API 来解决授权和访问,并提供 Git 对象。
  2. 经过身份验证和授权后,GitLab Rails 应用程序将传入的作业、作业信息和元数据放在 Redis 作业队列上,该作业队列充当着一个非持久数据库。
  3. 存储库创建于本地文件系统中。
  4. 用户创建用户、角色、合并请求、组等信息 – 所有这些信息然后存储在 PostgreSQL 中。
  5. 用户运行 Git shell 来访问存储库。

相关博客

相关链接

致谢:

感谢程海旭对此 Code Pattern 的翻译内容的审核,并提供了宝贵的反馈意见。