杭州2016年11月15日電 /美通社/ -- 11月8-9日,全球 Kubernetes 大會 KubeCon 在美國西雅圖舉辦。KubeCon 是由 Linux Foundation/Cloud Native Computing Foundation 發(fā)起的 Kubernetes 較高盛會。
才云 CEO 張鑫受到官方邀請?jiān)?KubeCon2016 大會上發(fā)表了關(guān)于 Kubernetes 在中國企業(yè)落地的主題演講并宣布開源Caicloud CI/CD 平臺 Cyclone,專注解決微服務(wù)架構(gòu)下面向容器的 CI/CD 和版本管理問題。
開源后,Cyclone 入選 GitHub "Trending in Open Source",曾一度位居 Go 語言開源項(xiàng)目排行榜榜首。
持續(xù)集成 (CI) 是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)成員經(jīng)常集成他們的工作,每次集成都需要通過自動化的構(gòu)建,包括編譯、發(fā)布、自動化測試來驗(yàn)證,從而盡早的發(fā)現(xiàn)集成錯(cuò)誤。持續(xù)交付 (CD) 是指頻繁地將軟件新版本交付給質(zhì)量團(tuán)隊(duì)(或者用戶)以供評審。如果評審?fù)ㄟ^,那么就發(fā)布到生產(chǎn)環(huán)境。每當(dāng)代碼庫里有一個(gè)變化,如果能自動且隨時(shí)觸發(fā)以上過程,那就達(dá)成了持續(xù)發(fā)布 (CD) 。
Docker 是一款基于 LXC 的容器引擎,自 2013 年開源以來,因?yàn)槠湟子眯?、高可移植性在開源社區(qū)非常火熱。Docker 將軟件與其依賴環(huán)境打包起來,以鏡像方式交付,讓軟件運(yùn)行在“標(biāo)準(zhǔn)環(huán)境”中,這非常符合云計(jì)算的要求。各大 IT 巨頭紛紛跟進(jìn),基于 Docker 容器技術(shù)創(chuàng)業(yè)公司也如雨后春筍,Docker 創(chuàng)造了一個(gè)嶄新的容器云行業(yè)。Docker 技術(shù)應(yīng)用廣泛。如,利用其隔離特性,為開發(fā)、測試提供一個(gè)輕量級獨(dú)立沙盒環(huán)境進(jìn)行集成測試。加速本地開發(fā)和構(gòu)建流程,使其更加高效輕量化,開發(fā)人員可以構(gòu)建、運(yùn)行并分享容器,輕松提交到測試環(huán)境中,并最終進(jìn)入生產(chǎn)環(huán)境。
Caicloud 作為國內(nèi)領(lǐng)先的容器集群服務(wù)解決方案供應(yīng)商,向用戶提供企業(yè)級的 Claas、Containerizor、Cyclone、Cargo、Cubernetes、Clever 六大閉環(huán)服務(wù)。
Cyclone 作為其中重要一環(huán),是基于 Docker 容器沙盒隔離特性實(shí)現(xiàn)的持續(xù)集成,將軟件與其依賴環(huán)境打包起來,以鏡像方式交付,讓軟件運(yùn)行在“標(biāo)準(zhǔn)環(huán)境”中,原生支持多種容器云平臺持續(xù)交付的工具。具有以下特性:
所有編譯、構(gòu)建、測試、發(fā)布過程均以容器為載體,消除環(huán)境差異性。通過版本控制工具觸發(fā)流水線持續(xù)集成;
生成容器鏡像并輸出安全報(bào)告,確保構(gòu)建的鏡像安全可靠。全過程可視化,契合團(tuán)隊(duì)協(xié)作,提高研發(fā)效率;
管理組件支持微服務(wù)多組件聯(lián)合發(fā)布,使用圖形化界面展示組件的依賴關(guān)系及聯(lián)合發(fā)布的過程和狀態(tài),應(yīng)用拓?fù)潢P(guān)系圖形化;
基于發(fā)布策略和角色控制功能,提供靈活的持續(xù)部署方式。基于容器和鏡像的版本控制,提供多種升級回滾策略。
Cyclone 提供了豐富的 API 供 web 應(yīng)用調(diào)用,通過 API 建立版本控制系統(tǒng)中代碼庫與 Cyclone 服務(wù)關(guān)聯(lián)關(guān)系后,版本控制系統(tǒng)的提交、發(fā)布等動作會通過 webhook 通知到 Cyclone-Server,啟動一個(gè)基于 Docker in Docker 技術(shù)的 Cyclone-Worker 容器,在該容器中從代碼庫中拉取源碼,按照源碼中 caicloud.yml 配置文件,依次執(zhí)行:
PreBuild:在指定編譯環(huán)境中編譯可執(zhí)行文件;
Build:將可執(zhí)行文件拷到運(yùn)行環(huán)境容器中,打成鏡像發(fā)布到鏡像倉庫中;
Integretion:使用 Build 階段構(gòu)建的鏡像啟動一個(gè)容器,啟動持續(xù)集成所依賴的微服務(wù)容器進(jìn)行集成測試;
PostBuild:啟動一個(gè)容器執(zhí)行一些腳本命令,實(shí)現(xiàn)鏡像發(fā)布后的一些關(guān)聯(lián)操作;
Deploy:使用發(fā)布的鏡像部署應(yīng)用到 Kubernetes 等容器集群 PaaS 平臺。
構(gòu)建過程日志可以通過 Websocket 從 Cyclone-Server 拉??;構(gòu)建結(jié)束后 Cyclone-Server 將構(gòu)建結(jié)果和完整構(gòu)建日志通過郵件通知用戶。
Cyclone-Server 中 Api-Server 組件提供 Restful API 服務(wù),被調(diào)用后需要較長時(shí)間處理的任務(wù)生成一個(gè)待處理事件寫入 etcd;
EventManager 加載 etcd 中未完成事件,監(jiān)視事件變化,發(fā)送新增待處理事件到 WorkerManager 中;
WorkerManager 調(diào)用 Docker API 啟一個(gè) Cyclone-Worker 容器,通過環(huán)境變量傳入需要處理的事件 ID 等信息;
Cyclone-Worker 使用事件 ID 作為 token(有效期 2 小時(shí))調(diào)用 API,拉取事件信息依次啟容器執(zhí)行 integration、prebuild、build、post build,完成后反饋事件執(zhí)行結(jié)果,構(gòu)建過程日志推送到 Log-Server,轉(zhuǎn)存到 Kafka;
Log-Server 組件從 Kafka 拉取日志推送給用戶;需要持久化的數(shù)據(jù)存入 Mongo。
Cyclone 也可以多節(jié)點(diǎn)分布式部署,部署圖如下所示。每一個(gè)立方體代表一個(gè)節(jié)點(diǎn),使用 Haproxy 反向代理實(shí)現(xiàn)負(fù)載均衡和 SSL 數(shù)據(jù)加密,分發(fā) API 請求到各 Cyclone 節(jié)點(diǎn)中。
Cyclone 由 Caicloud 工程師自主研發(fā),并貢獻(xiàn)給社區(qū)(地址:https://github.com/caicloud/cyclone)。Cyclone 現(xiàn)已實(shí)現(xiàn)基本功能發(fā)布早期版本 V0.1。我們計(jì)劃在 2016 年12月底發(fā)布 V0.2 Kubernetes 版 Cyclone;2017 年第一季度發(fā)布 V0.3 提供 web 操作界面,后續(xù)還會開發(fā)用戶權(quán)限管理,用戶插件支持等功能。