• omnibus-gitlab 架构学习


    omnibus-gitlab是gitlab 团队fork 自chef 的omnibus 项目,同时做了一些自定义的开发,omnibus-gitlab 简化了 
    gitlab 的部署以及维护,同时里边集成了chef 组件(cookbooks 以及recipes)可以方便的进行用户机器上gitlab 
    任务的配置。

    组件架构

    同时官方也提供了一个视频的介绍,我已经下载并上传百度云盘了gitlab-omnibus 

    项目大概描述

    主要简单说明组件的作用,以及在项目代码的位置

    • gitlab project 定义文件 
      这个主要是omnibus 项目架构的定义,包含了项目元数据定义,依赖关系,以及外部软件以及库 
      文件可以在 config/projects/gitlab.rb 找到
    • 独立的软件定义 
      这个也是omnibus 常规的玩法,独立的组件定义,包含了依赖以及组件的额构建方法(omnibus-gitlab,基本上都是源码构建的),同时 
      里面也包含了对于补丁的处理文件 
      软件定义在 config/software/ 目录 
      补丁文件config/patches 目录
    • 全局gitlab 配置模板 
      omnibus-gitlab 使用一个单一的配置文件进行gitlab 依赖组件的管理,而且具有约定的名称,格式如下: 
      <component>['<setting>'] = <value> 
      模板文件位置:files/gitlab-config-template/gitlab.rb.template
    • gitlab cookbooks 
      这个主要是chef 的一些定义,为了方便进行gitlab 各个组件的配置生成管理,大部分属于chef 的使用 
      Default Attributes位置:files/gitlab-cookbooks/gitlab/attributes/default.rb 
      Recipses 位置: files/gitlab-cookbooks/gitlab/recipes 
      Definitions 位置:files/gitlab-cookbooks/gitlab/definitions 
      各组件配置:files/gitlab-cookbooks/gitlab/templates
    • 通用库以及方法 
      omnibus-gitlab 也需要使用一个通用的帮助方法,所以进行了独立的包装,方便调用 
      位置:files/gitlab-cookbooks/gitlab/libraries
    • Runit 
      gitlab 使用runit 进行服务的管理,这是一个比较方便的服务管理工具 
      位置:/files/gitlab-cookbook/runit
    • Services 
      services 是runit 需要管理的一些服务的定义,对于这些服务,我们可以方便的使用gitalb-ctl 进行管理(status 、stop 
      、start) 
      文件位置:files/gitlab-cookbooks/package/libraries/config/services.rb
    • 额外的gitlab-ctl 命令配置 
      omnibus-gitlab 提供了一个方便的 gitlab-ctl 进行gitalb 组件服务的管理 
      文件位置: files/gitlab-ctl-commands

    omnibus-gitlab 的工作生命周期

    主要说明构建

    • 获取依赖软件的源码(解析版本,获取远程或者cache源码)
    • 构建每个独立的软件组件(设置环境变量,应用补丁,操作构建以及安装)
    • 生成关于各个组件的license 信息
    • 检查组件的license 信息,避免出现不兼容的问题
    • 运行一个健康检查,确定依赖的组件二进制文件是正确的
    • 根据/opt/gitlab 目录中的内容进行软件包的构建

    说明

    以上只是一个简单的说明,后边会进行详细的介绍

    参考资料

    https://github.com/gitlabhq/omnibus-gitlab/tree/master/doc/architecture

  • 相关阅读:
    iOS常用框架总结
    【Java】使用@Value @Reource或@Autowire依赖 (值) 注入时出现NPE的排查方法
    【Java】事件驱动模型和观察者模式
    新人训练营心得 - 道路阻且长
    【Java】Spring Web MVC注意事项
    【Linux】OpenWRT的无线设置注意事项——从2.4G到5G,hwmode不简单
    【Java】 Spring依赖注入小试牛刀:编写第一个Spring ApplicationContext Demo
    【Linux】 awk应用
    【C/C++】高亮C++中函数的重写——函数名相同?参数列表相同?返回值相同?
    【设计模式】C++单例模式的几种写法——Java自动加载内部类对象,C++怎么破?
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11108891.html
Copyright © 2020-2023  润新知