V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
caicloud2015
V2EX  ›  程序员

欢迎来试用我们的开源项目 Cyclone!

  •  
  •   caicloud2015 · 2016-11-14 11:12:36 +08:00 · 4100 次点击
    这是一个创建于 2927 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Hi , Caicloud 宣布开源其 CI/CD 平台 Cyclone,专注解决微服务架构下面向容器的 CI/CD 和版本管理问题。 Cyclone 项目是基于 K8S 的第一个 CI/CD 工具,完善了 K8S 生态圈。 Cyclone 在 Github 上的地址: https://github.com/caicloud/cyclone ,欢迎试用!

    关于 CI/CD 背景知识

    持续集成( CI )是一种软件开发实践,即团队成员经常集成他们的工作,每次集成都需要通过自动化的构建,包括编译、发布、自动化测试来验证,从而尽早的发现集成错误。持续交付( CD )是指频繁地将软件新版本交付给质量团队(或者用户)以供评审。如果评审通过,那么就发布到生产环境。每当代码库里有一个变化,如果能自动且随时触发以上过程,那就达成了持续发布( CD )。

    Docker 是一款基于 LXC 的容器引擎,自 2013 年开源以来,因为其易用性、高可移植性在开源社区非常火热。 Docker 将软件与其依赖环境打包起来,以镜像方式交付,让软件运行在“标准环境”中,这非常符合云计算的要求。各大 IT 巨头纷纷跟进,基于 Docker 容器技术创业公司也如雨后春笋, Docker 创造了一个崭新的容器云行业。 Docker 技术应用广泛。如,利用其隔离特性,为开发、测试提供一个轻量级独立沙盒环境进行集成测试。加速本地开发和构建流程,使其更加高效轻量化,开发人员可以构建、运行并分享容器,轻松提交到测试环境中,并最终进入生产环境。

    Caicloud 的容器云 CI /CD 实践

    Caicloud 作为国内领先的容器集群服务解决方案供应商,向用户提供企业级的 Claas 、 Containerizor 、 Cyclone 、 Cargo 、 Cubernetes 、 Clever 六大闭环服务。

    Cyclone 作为其中重要一环,是基于 Docker 容器沙盒隔离特性实现的持续集成,将软件与其依赖环境打包起来,以镜像方式交付,让软件运行在“标准环境”中,原生支持多种容器云平台持续交付的工具。具有以下特性:

    所有编译、构建、测试、发布过程均以容器为载体,消除环境差异性。通过版本控制工具触发流水线持续集成;

    生成容器镜像并输出安全报告,确保构建的镜像安全可靠。全过程可视化,契合团队协作,提高研发效率;

    管理组件支持微服务多组件联合发布,使用图形化界面展示组件的依赖关系及联合发布的过程和状态,应用拓扑关系图形化;

    基于发布策略和角色控制功能,提供灵活的持续部署方式。基于容器和镜像的版本控制,提供多种升级回滚策略。

    Cyclone 实现原理

    CI/CD 工作流

    Cyclone 提供了丰富的 API 供 web 应用调用,通过 API 建立版本控制系统中代码库与 Cyclone 服务关联关系后,版本控制系统的提交、发布等动作会通过 webhook 通知到 Cyclone-Server ,启动一个基于 Docker in Docker 技术的 Cyclone-Worker 容器,在该容器中从代码库中拉取源码,按照源码中 caicloud.yml 配置文件,依次执行:

    PreBuild :在指定编译环境中编译可执行文件;

    Build :将可执行文件拷到运行环境容器中,打成镜像发布到镜像仓库中;

    Integretion :使用 Build 阶段构建的镜像启动一个容器,启动持续集成所依赖的微服务容器进行集成测试; PostBuild :启动一个容器执行一些脚本命令,实现镜像发布后的一些关联操作;

    Deploy :使用发布的镜像部署应用到 Kubernetes 等容器集群 PaaS 平台。

    构建过程日志可以通过 Websocket 从 Cyclone-Server 拉取;构建结束后 Cyclone-Server 将构建结果和完整构建日志通过邮件通知用户。

    软件架构

    Cyclone 软件架构如下图所示。每个立方体代表一个容器。

    Cyclone-Server 中 Api-Server 组件提供 Restful API 服务,被调用后需要较长时间处理的任务生成一个待处理事件写入 etcd ;

    EventManager 加载 etcd 中未完成事件,监视事件变化,发送新增待处理事件到 WorkerManager 中; WorkerManager 调用 Docker API 启一个 Cyclone - Worker 容器,通过环境变量传入需要处理的事件 ID 等信息;

    Cyclone-Worker 使用事件 ID 作为 token (有效期 2 小时)调用 API ,拉取事件信息依次启容器执行 integration 、 prebuild 、 build 、 post build ,完成后反馈事件执行结果,构建过程日志推送到 Log-Server ,转存到 Kafka ;

    Log-Server 组件从 Kafka 拉取日志推送给用户;需要持久化的数据存入 Mongo 。

    Cyclone 也可以多节点分布式部署,部署图如下所示。每一个立方体代表一个节点,使用 Haproxy 反向代理实现负载均衡和 SSL 数据加密,分发 API 请求到各 Cyclone 节点中。

    Roadmap

    Cyclone 由 Caicloud 工程师自主研发,并贡献给社区(地址: https://github.com/caicloud/cyclone )。 Cyclone 现已实现基本功能发布早期版本 V0.1 。我们计划在 2016 年 12 月底发布 V0.2 Kubernetes 版 Cyclone ; 2017 年第一季度发布 V0.3 提供 web 操作界面,后续还会开发用户权限管理,用户插件支持等功能。

    扫描二维码进入到 Cyclone 社区

    9 条回复    2016-11-15 16:58:52 +08:00
    zzwangsh
        1
    zzwangsh  
       2016-11-14 11:24:57 +08:00
    支持
    caicloud2015
        2
    caicloud2015  
    OP
       2016-11-14 11:26:00 +08:00
    @zzwangsh 感谢支持 比心
    thomaspaine
        3
    thomaspaine  
       2016-11-14 11:28:08 +08:00
    我还以为是 Altera 的 cyclone 芯片……
    aheadlead
        4
    aheadlead  
       2016-11-14 11:42:12 +08:00
    @thomaspaine 就是……好像 FPGA 来着
    sup
        5
    sup  
       2016-11-14 14:51:27 +08:00
    去瞅瞅~友情帮顶
    caicloud2015
        6
    caicloud2015  
    OP
       2016-11-15 09:42:19 +08:00
    @aheadlead 隔了好几个好几个行业 -。-
    caicloud2015
        7
    caicloud2015  
    OP
       2016-11-15 09:43:02 +08:00
    @sup thanks
    gaocegege
        8
    gaocegege  
       2016-11-15 11:15:32 +08:00
    支持一个
    caicloud2015
        9
    caicloud2015  
    OP
       2016-11-15 16:58:52 +08:00
    @gaocegege 哈哈哈 暴露了 -3-
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3151 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.