掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Spinnaker是最初由Netflix設(shè)計(jì)和開(kāi)發(fā)的開(kāi)源多云連續(xù)交付工具。它有助于將應(yīng)用程序部署到各種云提供商,例如Google Cloud Platform(GCP),Amazon Web Services(AWS)和Microsoft Azure。

該博客的目的是幫助開(kāi)發(fā)人員,架構(gòu)師和商業(yè)從業(yè)人員了解采用Kubernetes環(huán)境時(shí)使用Spinnaker的重要性。您將了解:
Spinnaker在Kubernetes環(huán)境中的作用
由于其在管理多容器環(huán)境中的簡(jiǎn)便性,各種組織都采用Kubernetes。但是,Kubernetes不是像Jenkins或Spinnaker這樣的持續(xù)交付或部署工具。早期,Kubernetes生態(tài)系統(tǒng)缺少一個(gè)簡(jiǎn)單的持續(xù)交付工具來(lái)自動(dòng)構(gòu)建Kubernetes清單,測(cè)試這些工件并部署這些工件。Jenkins支持在Kubernetes集群上持續(xù)交付應(yīng)用程序,但是增加了復(fù)雜性。
Spinnaker支持在Kubernetes集群上部署應(yīng)用程序。它簡(jiǎn)化了此過(guò)程,并幫助組織在Kubernetes集群上部署了生產(chǎn)級(jí)的構(gòu)建工件。
Spinnaker還通過(guò)其圖形用戶界面(GUI)用于管理Kubernetes集群上部署的應(yīng)用程序??梢跃庉嫼透翶ubernetes清單文件,以提供動(dòng)態(tài)編輯Kubernetes特定屬性的功能。借助Spinnaker GUI,您還可以監(jiān)控Kubernetes對(duì)象的運(yùn)行狀況。
在Kubernetes環(huán)境中使用Spinnaker
Spinnaker得到了各種云提供商的支持,例如App Engine,Amazon Web Services(AWS),Azure,Google Cloud Platform(GCP),Cloud Foundry,Oracle和Kubernetes。在云上將Spinnaker與Kubernetes一起安裝時(shí),它將提供Kubernetes本機(jī),基于清單的部署。Spinnaker使用一個(gè)帳戶對(duì)Kubernetes集群進(jìn)行身份驗(yàn)證。
在Kubernetes環(huán)境中Spinnaker的關(guān)鍵功能是應(yīng)用程序管理和應(yīng)用程序部署。應(yīng)用程序管理功能有助于管理和查看Kubernetes集群對(duì)象。可以使用Spinnaker在Kubernetes對(duì)象上執(zhí)行各種操作,例如擴(kuò)展,縮小,回滾和前進(jìn)。Spinnaker的此功能有助于從單個(gè)點(diǎn)(即Spinnaker GUI)管理多個(gè)Kubernetes集群。
Spinnaker的應(yīng)用程序部署功能用于在Kubernetes集群中部署各種對(duì)象。Spinnaker在Kubernetes集群中部署應(yīng)用程序時(shí)支持各種部署策略,例如Blue/Green,滾動(dòng)更新,canary部署等。要執(zhí)行應(yīng)用程序部署,Spinnaker使用管道和階段。借助Spinnaker管道,您可以創(chuàng)建持續(xù)的交付流程,以將代碼從源代碼管理工具自動(dòng)部署到Kubernetes集群。您還可以使用Spinnaker階段在將任何內(nèi)容部署到生產(chǎn)Kubernetes集群上之前執(zhí)行代碼驗(yàn)證。
了解Spinnaker的架構(gòu)
Spinnaker由獨(dú)立的微服務(wù)組件組成。下面提到其中一些組件:
使用Spinnaker設(shè)計(jì)持續(xù)交付管道
創(chuàng)建了一個(gè)持續(xù)交付管道,以在兩個(gè)不同的Kubernetes命名空間(即DEV和UAT)上部署Kubernetes清單和應(yīng)用程序構(gòu)建(docker鏡像)。要?jiǎng)?chuàng)建一個(gè)持續(xù)交付管道,您需要一個(gè)Helm Charts作為Kubernetes清單文件的模板,Spinnaker正在使用該清單創(chuàng)建最終可部署的Kubernetes清單工件。
您可以創(chuàng)建五個(gè)單獨(dú)的Spinnaker管道,如下所述:
解釋Spinnaker管道的工作流程
計(jì)劃部署的Kubernetes清單文件和應(yīng)用程序代碼(Docker鏡像)現(xiàn)在應(yīng)該推送到GitHub存儲(chǔ)庫(kù)。
讓我們?cè)敿?xì)討論每個(gè)管道。
用于DEV和UAT的Kubernetes集群管道的YAML文件更改部署流水線
該Spinnaker管道包括四個(gè)階段-配置、Jenkins、Bake(清單)和Deploy(清單)。
稍后,文本文件將傳遞到下一個(gè)Spinnaker階段,即Bake(清單)。
然后,Spinnaker創(chuàng)建一個(gè)最終的構(gòu)建工件,其中包含清單值和Jenkins作業(yè)記錄的Docker鏡像標(biāo)簽值。
DEV – Docker鏡像-應(yīng)用程序部署管道
此Spinnaker管道包括三個(gè)階段:配置,烘焙(清單)和部署(清單)。
UAT – Docker鏡像-應(yīng)用程序部署管道
該管道使用與上述相同的流程從現(xiàn)有的Helm模板和已定義的uat.yml值文件創(chuàng)建最終工件。唯一的區(qū)別是,在此階段,將自動(dòng)觸發(fā)器配置為“ DEV – Docker鏡像–應(yīng)用程序部署”管道的執(zhí)行結(jié)果?!?DEV – Docker鏡像–應(yīng)用程序部署”管道的成功執(zhí)行/完成將開(kāi)始管道的執(zhí)行。如果“ DEV-Docker鏡像-應(yīng)用程序部署”管道的執(zhí)行進(jìn)入失敗狀態(tài),則該管道將永遠(yuǎn)不會(huì)開(kāi)始執(zhí)行,這將防止在Kubernetes集群的UAT名稱空間中部署失敗的工件。
UAT-Jenkins手動(dòng)Docker鏡像部署管道
該管道可幫助用戶根據(jù)需要在UAT名稱空間中部署舊的Docker鏡像工件。用戶提供所需的Docker鏡像標(biāo)簽,該標(biāo)簽將通過(guò)參數(shù)化的Jenkins作業(yè)進(jìn)行部署,該作業(yè)會(huì)創(chuàng)建文本文件(例如build.properties),并將用戶提供的Docker鏡像作為內(nèi)容。例如– IMAGE_TAG = v15。這里,v15是用戶提供的鏡像標(biāo)簽。
將build.properties文件作為輸入傳遞到Spinnaker管道。
使用Spinnaker設(shè)計(jì)持續(xù)交付管道的最佳實(shí)踐
Spinnaker是一個(gè)強(qiáng)大的持續(xù)交付工具,用于自動(dòng)在Kubernetes集群上部署應(yīng)用程序。Spinnaker管道也可以配置為在執(zhí)行實(shí)際部署之前對(duì)構(gòu)建工件執(zhí)行單元測(cè)試和功能測(cè)試。因此,Spinnaker可以幫助組織更快地將代碼獲取到生產(chǎn)環(huán)境。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流