“台风”席卷西雅图:KubeCon 才云宣布开源 CI/CD 平台 Cyclone

2020 年 3 月 10 日

“台风”席卷西雅图:KubeCon 才云宣布开源 CI/CD 平台 Cyclone

11月8-9日,全球 Kubernetes 大会 KubeCon 在美国西雅图举办。KubeCon 是由 Linux Foundation/Cloud Native Computing Foundation 发起的 Kubernetes 最高盛会。

才云 CEO 张鑫受到官方邀请在 KubeCon2016 大会上发表了关于 Kubernetes 在中国企业落地的主题演讲并宣布开源Caicloud CI/CD 平台 Cyclone,专注解决微服务架构下面向容器的 CI/CD 和版本管理问题。

开源后,Cyclone 入选 GitHub “Trending in Open Source”,曾一度位居 Go 语言开源项目排行榜榜首。


关于 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 工程师自主研发,并贡献给社区。Cyclone 现已实现基本功能发布早期版本 V0.1。我们计划在 2016 年 12 月底发布 V0.2 Kubernetes 版 Cyclone;2017 年第一季度发布 V0.3 提供 web 操作界面,后续还会开发用户权限管理,用户插件支持等功能。


本文转载自才云 Caicloud 公众号。


原文链接:https://mp.weixin.qq.com/s/qbib1dYV-vZcgt9bFdtqkA


2020 年 3 月 10 日 18:01208

评论

发布
暂无评论
发现更多内容

Redis实战丨阿里架构师耗时三年写出的Redis实战文档PDF

Java成神之路

Java 程序员 架构 面试 编程语言

13W字!腾讯高工手写“Netty速成手册”,3天能走向实战

周老师

Java 编程 程序员 架构 面试

GitHub上3天1W赞的程序员学习路线!入门进阶都非常实用

Java架构之路

Java 程序员 架构 面试 编程语言

距离 Java 开发者玩转 Serverless,到底还有多远?

阿里巴巴云原生

Java Serverless 微服务 云原生 中间件

测开之函数进阶· 第2篇《纯函数》

清菡

测试开发

学透这份300页的2020最新java面试题及答案,一线大厂offer随便拿

Java架构之路

Java 程序员 架构 面试 编程语言

TypeScript | 第二章:类、接口和之间的关系

梁龙先森

typescript 前端 七日更

MSHA x Chaos 容灾高可用实践

阿里巴巴云原生

数据库 高可用 云原生 中间件 容灾

倍频程与钢琴调式的距离

阿里云视频云

音频技术 音频

架构师训练营W10作业

Geek_f06ede

【Java入门】流

HQ数字卡

Java 七日更

OPPO小布助手正在改变普罗米修斯的世界

脑极体

阿里开发10年,全部心血汇聚成到这份文档里,拿到30W的offer没问题

Java架构之路

Java 程序员 架构 面试 编程语言

英特尔宋继强:迈向可持续的千倍速计算未来

intel001

Reactive Spring实战 -- 理解Reactor的设计与实现

binecy

reactor Reactive SpringBoot 2

大作业1

追风

架构师一期

LeetCode题解:55. 跳跃游戏,贪心,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

比特币10年:从2个披萨涨到2万美金,背后的三个“神秘人”

CECBC区块链专委会

比特币

图解HTTP权威指南(一)| HTTP报文

李先生

运维 HTTP

volatile,synchronized可见性,有序性,原子性代码证明(基础硬核)

叫练

volatile 多线程 synchronized 原子性 指令

“区块链+社会治理”模式获居民点赞

CECBC区块链专委会

区块链 区块链投票

神比喻:低代码开发像自动驾驶汽车,零代码开发像无人驾驶汽车!

低代码指南

程序员 软件 开发者 低代码 开发工具

云服务的可服务性经典6问

华为云开发者社区

服务 计算

量化交易系统开发搭建案例

薇電13242772558

区块链 策略模式

大众汽车“芯片荒”,折射汽车芯片的漫漫“自主替代”路

脑极体

由于不知线程池的bug,某Java程序员叕被祭天

Java架构师迁哥

大连市税务局局长赵福增:用区块链打破部门间“信息孤岛”

CECBC区块链专委会

区块链 汽车

2020,谁是中国ToB行业最有影响力的企业?

ToB行业头条

阿里架构师478页Java工程师面试知识解析笔记pdf,一份2021年通往阿里的面试指南

Java架构之路

Java 程序员 架构 面试 编程语言

PostgreSQL:您可能需要增加MAX_LOCKS_PER_TRANSACTION

PostgreSQLChina

数据库 postgresql 开源

脑洞:如何用一个整数来表示一个列表?

Python猫

Python

“台风”席卷西雅图:KubeCon 才云宣布开源 CI/CD 平台 Cyclone-InfoQ