{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

{{< /details >}}

下面你可以找到一些关于为什么极狐GitLab 提供软件包和 Docker 镜像的基本信息,这些镜像附带了相关的依赖项。这些方法非常适合物理和虚拟机安装,以及简单的 Docker 安装。

目标

我们对这些软件包有几个核心目标:

  1. 极易安装、升级、维护。
  2. 支持多种操作系统。
  3. 广泛支持云服务提供商。

Linux 软件包架构

极狐GitLab 的核心是一个 Ruby on Rails 项目。然而,极狐GitLab 作为一个完整的应用程序更为复杂,包含多个组件。如果这些组件不存在或配置错误,极狐GitLab 将无法正常工作或表现得不可预测。极狐GitLab 架构概述展示了一些这些组件以及它们如何交互。每个组件都需要配置并保持最新。

大多数组件也有外部依赖项。例如,Rails 应用程序依赖于许多 Ruby gems。其中一些依赖项也有自己的外部依赖项,这些依赖项需要在操作系统上存在才能正常运行。此外,极狐GitLab 有一个月度发布周期,需要频繁维护以保持最新状态。上述所有内容对维护极狐GitLab 安装的用户提出了挑战。

外部软件依赖项

对于像极狐GitLab 这样的应用程序,外部依赖项通常带来以下挑战:

  • 在直接和间接依赖项之间保持版本同步。
  • 特定操作系统上版本的可用性。
  • 版本更改可能引入或移除以前使用的配置。
  • 当库被标记为漏洞但尚未发布新版本时的安全影响。

请记住,如果您的操作系统上存在依赖项,它不一定存在于其他支持的操作系统上。

优势

附带依赖项的软件包的一些优势:

  1. 安装极狐GitLab 所需的努力极少。
  2. 让极狐GitLab 启动和运行所需的配置最少。
  3. 在极狐GitLab 版本之间升级所需的努力最少。
  4. 支持多个平台。
  5. 老平台上的维护极大简化。
  6. 支持潜在问题的努力更少。

缺点

附带依赖项的软件包的一些缺点:

  1. 与可能存在的软件重复。
  2. 配置灵活性较低。

为什么要从 Linux 软件包安装软件包而不是使用系统软件包?

答案可以简化为:所需的维护更少。与其处理多个软件包,这些软件包如果版本不兼容可能会破坏现有功能,不如只处理一个。多个软件包需要在多个位置进行正确配置。保持配置同步可能容易出错。如果你有维护所有当前依赖项的技能,并且有足够的时间处理任何可能引入的未来依赖项,上述列出的原因可能不足以让你不使用 Linux 软件包中的软件包。

在走这条路之前,有两点需要记住:

  1. 获取支持可能更困难,因为使用未经过多数用户测试的库版本时,可能存在的可能性较多。
  2. 来自 Linux 软件包的软件包还允许关闭任何您不需要的服务,如果您需要独立运行一个组件。例如,您可以使用 非捆绑的 PostgreSQL 数据库 来进行 Linux 软件包安装。

请记住,当应用程序有许多活动部分时,像 Linux 软件包这样的非标准解决方案可能更适合。

具有多个服务的 Docker 镜像

极狐GitLab Docker 镜像 基于 Linux 软件包。考虑到从这个镜像启动的容器包含多个进程,这些类型的容器也被称为 ‘fat containers’。这种镜像有一些支持和反对的理由,但它们类似于上面提到的内容:

  1. 非常简单易用。
  2. 升级到最新版本极其简单。
  3. 在多个容器中运行独立服务并保持运行可能更复杂,并且可能不需要为给定安装进行。

这种方法对于刚开始使用容器和调度程序的组织非常有用,并且可能尚未准备好进行更复杂的安装。这种方法是一个很好的介绍,并且对于较小的组织效果很好。