《Netflix 的上線工具 Spinnaker》要點:
本文介紹了Netflix 的上線工具 Spinnaker,希望對您有用。如果有疑問,可以聯(lián)系我們。
Spinnaker 是 Netflix 開源出來的持續(xù)交付工具,目的是為研發(fā)團隊提供靈活的持續(xù)交付流水線,并且支持部署到測試/生產(chǎn)環(huán)境.Netflix 目前通過 Spinnaker 實現(xiàn)每天4000次的發(fā)布.它的優(yōu)勢在于:
目前支持 AWS EC2(Netflix 的機器大部分都在亞馬遜),谷歌云,Kubernetes,Azure,Openstack 等,目前正在支持甲骨文的物理機和 DC/OS.
可以集成測試腳本進行測試,并且能夠管理測試,線上環(huán)境的機器,實現(xiàn)動態(tài)擴容,和服務(wù)的下線.
由于 Netflix 的平臺已經(jīng)實現(xiàn)微服務(wù)化,每個團隊使用 Spinnaker 獨立維護服務(wù)的發(fā)布,所以 Spinnaker 的設(shè)計特別適合于微服務(wù)持續(xù)交付的場景.
通過腳本實現(xiàn)不可變基礎(chǔ)設(shè)施,使得發(fā)布時候能夠更容易的進行回滾,和擴容.當(dāng)你的團隊還在為每個應(yīng)用寫腳本支持藍綠發(fā)布時,Spinnaker 已經(jīng)提供了從界面上進行藍綠發(fā)布,金絲雀發(fā)布等策略的配置.
Netflix,谷歌,微軟等等都已經(jīng)在社區(qū)貢獻代碼.
顧名思義,是和底層 IaaS 打交道的模塊,主要負(fù)責(zé)底層資源的讀寫,它對接了底層的云提供商: AWS,谷歌云,Kubernetes,CloudFoundry 和 Azure 等等.
以 Kubernetes 的對接為例,Clouddriver 通過 Cloud Provider Agent 實現(xiàn)了緩存,部署,實例,負(fù)載均衡,安全組和集群的對接,工作量還是很大的.
Spinnaker 的 UI 層,使用 TypeScript + AngularJs 開發(fā),支持?jǐn)U展.
Spinnaker 的 API 網(wǎng)關(guān)層,它為其他服務(wù)提供的 API 的接入,使用 Eureka 和 OKClient 實現(xiàn).
任務(wù)編排引擎,目的是為 Spinnaker 提供一個流水線,將構(gòu)建包從一個 Stage 升級到另一個 Stage,并且和其他服務(wù)進行協(xié)同工作.
Spinnaker 的 CI 工具,Igor 提供的是統(tǒng)一的 CI 工具接口(Jenkins,Travis 以及 Git 倉庫),并且記錄 Jenkins 的認(rèn)證信息.在配置 Igor 項目時,需要將 Jenkins 的登錄信息配置在 yml 文件里.
Spinnaker 提供了可視化的 CI 任務(wù)編排功能,類似于 Jenkins 的 Pipeline 功能.編排支持多種方式,包括:并行,串行,分支,人工決策點等等.在每個節(jié)點執(zhí)行的操作都可以是一個 Jenkins 的任務(wù),或者是腳本,定時任務(wù).
注:Netflix 的流程里大部分是沒有人工決策點的.
集群管理:
Spinnaker 的集群管理組件能夠管理以下資源:服務(wù)器組, 集群,應(yīng)用,負(fù)載均衡,安全組.用這些組件來屏蔽的底層 IaaS 資源的差異.
藍綠部署:
Netflix 進行大量的自動化金絲雀發(fā)布(ACA – Automatic-Canary-Analysis),目前并沒有開源這個功能.但是 Google 和 Netflix 正在一起協(xié)同開發(fā),計劃把這部分代碼開源出來.
金絲雀發(fā)布如何實現(xiàn)自動化?難點在于自動化評估1%節(jié)點部署的結(jié)果.Spinnaker 在發(fā)布1%集群的節(jié)點之后,ACA 會進行一系列的監(jiān)控,包括用戶的行為是否異常,流量的訪問是否存在較大波動,最好會為這次發(fā)布計算出一個分?jǐn)?shù),這個分?jǐn)?shù)就成為繼續(xù)發(fā)布到10% 集群機器的數(shù)據(jù)依據(jù),只要分?jǐn)?shù)大于這個值,就能繼續(xù)發(fā)布到剩余的機器.
即時通信工具集成 – Slack
Chaos Monkey 之前文章有講過,它負(fù)責(zé)在線上環(huán)境里隨機的關(guān)掉某幾臺機器,從而進行服務(wù)高可用的測試,沒有經(jīng)歷 Chaos Monkey 測試的服務(wù)不是好服務(wù).
使用 Artifactory 進行軟件包管理:
Netflix 是 Artifactory 的重度用戶.Netflix 在部署包/鏡像到生產(chǎn)環(huán)境時,不會重新構(gòu)建,而是從測試環(huán)境找到包,復(fù)制到生產(chǎn)環(huán)境.這就需要包管理平臺的支持,Netflix 使用 Artifactory 作為統(tǒng)一包管理平臺,記錄包的發(fā)布元數(shù)據(jù),例如包經(jīng)過了哪些測試,被部署到了哪些測試環(huán)境/生產(chǎn)環(huán)境.當(dāng)服務(wù)需要擴容或者回滾時,根據(jù)AQL(Artifactory Query Language)進行元數(shù)據(jù)查詢,找到需要擴容或回滾的包.
Spinnaker 作為持續(xù)交付平臺,已經(jīng)被 Netflix 內(nèi)部上百個團隊使用,并且在生產(chǎn)環(huán)境里的進行了驗證,同時社區(qū)也非常的活躍.
不過使用 Spinnaker 也有一些門檻,首先你需要有自動化構(gòu)建,測試的流水線進行軟件升級(Promotion),其次,需要讓 Spinnaker 接管公司的云平臺,用代碼描述環(huán)境,并且已經(jīng)用腳本/CMDB 實現(xiàn)軟件在不同環(huán)境的部署,升級,回滾.如果你的公司內(nèi)部有多個 Cloud Provider,并且希望實現(xiàn)可重復(fù)的持續(xù)交付流水線,可以考慮使用 Spinnaker 實現(xiàn)統(tǒng)一持續(xù)交付.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/2396.html