目錄
1 產品簡介
Spinnaker解決了如何將軟件頻繁、快速、可靠、靈活地交付到雲上,爲團隊提供能夠跨多個雲賬戶和區域、甚至跨多個雲平臺的自動化部署方案,可以以產品爲維度設計並自動化一個符合自己發佈節奏的交付過程。
2 架構設計
2.1 生命週期
Spinnaker涵蓋了產品從軟件包構造完畢到最終上線之間的全部過程。
2.2 功能架構
Spinnaker的核心價值是多雲和持續部署。
2.3 發佈流程
2.4 微服務技術架構
Spinnaker採用微服務設計,對功能可以靈活擴展。
3 Spinnaker的優勢
3.1 支持多雲
Spinnaker通過Application、Cluster、ServerGroup、LoadBalance、Firewall五個概念來統一對接所有云平臺,完美解決與雲平臺松耦合的問題,大大降低了雲平臺的學習成本和操作成本。
目前版本支持5種雲:
3.2 多種發佈策略
3.2.1 無策略
只是按配置創建一個新伸縮組,並不關心老伸縮組的狀態。
3.2.2 Highlander
創建一個新伸縮組,然後銷燬掉該cluster內的其它伸縮組,一般用於發佈測試環境和灰度環境。
3.2.3 Red/Black:
創建一個新伸縮組,然後disable該cluster內的其它伸縮組,並不做銷燬操作,觀察期內可發起Rollback,一般用於生產全量發佈。
3.3 金絲雀分析
Spinnaker爲我們提供了一套脫離業務適用於所有場景的測試機制
原理圖:
分析報告:
3.4靈活控制
Spinnaker通過條件執行、人工判斷、強制等待、嵌套Pipeline等方式靈活控制工作流的執行
3.5無縫集成現有工具
Spinnaker不僅原生支持對接Git、Jenkins等工具,還可以通過RunJob、Script、Webhook等環節將您的自定義系統鏈接在一起
5 操作文檔
5.1 Application
定義:Spinnaker以Application爲維度進行雲資源和交付Pipeline的管理,將所有管控信息收斂到一起符合“誰構建,誰運維”的宗旨。
創建:
紅框爲必選信息,填入application名稱和owner的郵箱。
黃框是選填信息,可以限定application對接的雲平臺,默認對接所有平臺。
藍框是選填信息,對application進行權限控制,默認所有用戶都可以訪問。
5.2 基礎資源管理
Cluster、LB、Firewall分別對應着雲平臺的服務能力、流量控制和安全控制,統一的管理概念解耦雲平臺的差異性,降低學習成本。
Spinnaker在彈性伸縮上層又封裝出來的一個Cluster概念,提供不同版本相同服務能力的彈性伸縮組的集合屬於同一個Cluster。
Spinnaker種基礎資源管理頁面佈局:
5.2.1 LoadBalance
創建伸縮組操作如下:
LB的其它操作:
在拓撲區點擊某一個LB,右邊頁面會展現出該LB的詳細信息,如果勾選了“Instances”選項,拓撲中會加載出LB下掛載的實例信息。右側按鈕可以對LB進行編輯和刪除。
5.2.2 Firewalls
安全組頁面爲我們提供了安全組、伸縮組、負載均衡之間的關聯關係,點擊某一資源後右側可以顯示詳細信息。
5.2.3 Cluster
Cluster的創建方式同LoadBalance一樣,如圖:
具有相同${Application}-${Stack}-${Detail}的ServerGroup的ServerGroup屬於同一個Cluster,選中某一個ServerGroup後可以對其進行回滾、複製、修改容量、停用/啓用、銷燬等操作。
5.3 Pipeline
頁面佈局:
5.3.1 測試發佈Pipeline:
流程圖:
Configuration:
配置Pipeline的觸發器和動態參數。
Bake:
製作新版本的交付鏡像。
Deploy:
發佈新版本鏡像到測試環境彈性伸縮組,請注意這裏採用的highlander發佈方式。
Wait:
等待測試驗證,到期或者人工跳過後觸發後續環節。
Manual Judgment:
人工判斷環節,這裏用於判斷新版本測試是否通過。
IntegrationTest:
集成測試,本質是一個webhook環節,用於集成現有的測試系統。
Tag Image:
爲測試通過的鏡像打tag,目前只有AWS雲平臺支持該功能。
Destroy:
測試完畢後銷燬資源,節約成本。
5.3.2 生產發佈Pipeline
流程圖:
生產發佈Pipeline按照生命週期分爲5個部分。
1 部署金絲雀環境
基於生產版本和待上線版本各部署一組彈性伸縮組並接入生產環境的流量。
2 金絲雀分析
3 銷燬金絲雀環境,節約成本
4 全量發佈
請注意這裏採用的是紅黑髮布策略,便於快速回滾,Capacity選擇繼承當前環境的容量,保證服務能力。
5 全量觀察結束後,銷燬老資源,節約成本