Spinnaker實踐教程-Spinnaker基礎簡介
大家好,今天,我們將一起來學習基于Spinnaker的持續交付實踐,相信各位同學之前應該都聽過Spinnaker吧,但是你實際上去部署的時候 肯定是很困難的,更甭說上去用了。今天我們這次課程,就是為大家去解決這些問題,讓大家真正的去用起來,然后體驗一下Spinnaker的高級的特性

那我們來看一下今天我們基礎篇的內容,我把分成了4個部分:第1個部分,就是我們來講一下什么是Spinnaker,大家來熟悉一下它的特性,這是今天所說的Spinnaker的簡介,然后第2個部分,我們會為大家講Spinnaker的服務和它的架構,第3個部分,因為都聽說Spinnaker安裝配置起來特別難受,可能很多同學想要學的時候都被安裝卡住了,更甭說上去用了對不對?所以今天我們第三部分就是要教大家怎么去安裝,全方位的給大家分析每一個步驟怎么去做,怎么去實現,最后我會為大家說一下Spinnaker的版本的更新。OK就是這些內容,入門是足夠了。

我們先來看第一章,關于Spinnaker的簡介,第1章,就是讓大家知道Spinnaker是什么,我們為什么要學習Spinnaker?

我們來簡單介紹一下,Spinnaker它是一個開源的,多云的持續交付平臺。我們現在用的持續交付平臺其實很少,我們可能用Jenkins來完成,Jenkins也能支持我們做CI/CD,但是你會發現,Jenkins要做CD的話,得需要去寫代碼,寫一些插件來實現。相對來說我們每個人能力要求就比較高了,而且還得不斷的去調試這個程序所寫的兼容性問題,所以說目前來說,開源的CD平臺的話,Spinnaker肯定是功能最強大的,我們推薦大家。如果要是做持續交付的話,我們就可以使用Spinnaker完成。常見的架構就是Jenkins + Spinnaker,Jenkins是去幫我們去做CI,然后Spinnaker去幫我們做CD 。
那什么是持續交付?其實就是開發人員今天寫的代碼推到代碼庫了,那我們能夠快速的,自動化的,穩定的將這個變更發布到各個環境這就是持續交付,Spinnaker核心就兩個功能,也是我們在學習的時候要注意,就兩個方向,第1個方向是應用的管理,第2個方向是應用程序部署。應用管理,這一部分的內容,相對來說簡單一些就相當于是一個web頁面,我們學習怎么去用?怎么去點?然后第2部分的應用程序部署是Spinnaker的核心,就是Pipeline流水線。
我列舉了一些當前Spinnaker所支持的一些云供應商,AWS、Google、Kubernetes,oracle,現在,國內的一些云供應商,我們重點使用其完成Kubernetes的持續交付。
Spinnaker有哪些強大的功能,先簡單了解這些功能。

第1個功能是關于CI工具的集成,CI工具的集成。Spinnaker它支持兩個部分,第1個部分是監聽事件,它可以監聽鏡像倉庫,比如說當鏡像倉庫里面的某個鏡像,發生了變化(更新)或者創建了一個新的標簽,它去觸發Spinnaker的流水線去運行;那么還有一種情況,就是在Spinnaker流水線里面也可以去觸發Jenkins等CI工具的管道,當然反過來也是可以的,Jenkins也能去觸發Spinnaker管道。
第2點具有一個非常強大的配置管理工具,熟悉Jenkins的同學應該知道Jenkins有一個cli工具,可以不在圖形界面去操作,然后通過cli工具直接命令行里面去執行,Spinnaker也是有這樣的一個工具,也是同樣的功能。Halyard是實現Spinnaker整個生命周期的管理、安裝配置更新。
第3點是監控的集成,它可以集成prometheus,或者datadog。集成之后可以作為金絲雀的分析的指標,通過prometheus/datadog里邊的監控指標,去分析這次的部署。
第4點就是部署策略,Spinnaker里面支持,很多種部署策略,我們自己也可以去自定義部署策略。例如:藍綠部署、金絲雀部署這些都是支持的,我可以通過內置強大的部署策略來實現持續交付。
第5點基于角色的訪問控制,這個就是用戶認證、用戶權限這塊。LDAP等等。第6點事件通知,郵件通知等等。最后它的特點也是非常強大功能,發布窗口支持。例如在固定的時間才能發布,錯過高峰期。

應用管理和應用部署,我們先來說應用管理,應用管理,Spinnaker它對應用程序做了一個建模,大家可以看這張圖,我們可以這么去理解,Spinnaker里面一個應用程序對應的就是我們現實中每一個微服務;ServerGroup是微服務它所部署的各個環境,比如說開發環境,生產環境,預生產環境;Cluster是應用的所有實例的集合,剛才我們所說了,每一個ServerGroup就是每一個環境,Cluster就是ServerGroup的集合。可以這樣理解,一個Cluster里面包含的就是當前這個服務的所有環境。負載均衡器LB對應Kubernetes中的Service;防火墻對于云供應商來說就是安全組入口。

我們打開Spinnaker的頁面,大家可以看到它的分類。更有助于理解應用模型。


應用部署,Spinnaker它的核心就是pipeline,一條流水線(pipeline)包含多個階段(stage),階段可以并行運行,例如將兩個階段設置為相同的依賴階段,則該階段運行完成后 并行運行其他階段。階段我們都可以自己去靈活的去定義。

可以根據每個項目的特點,去創建一個流水線的模板,后期通過這個模板文件批量創建,最后我們改參數就可以了。這是后期的一種管理的方式。在流水線配置的部分,也支持一些觸發器,Git Jenkins DockerRegistry Nexus Artifactory等等。