1. 簡介html
1.1. 說明:linux
Spinnaker 是 Netflix 的開源項目,是一個持續交付平臺,它定位於將產品快速且持續的部署到多種雲平臺上。Spinnaker 經過將發佈和各個雲平臺解耦,來將部署流程流水線化,從而下降平臺遷移或多雲品臺部署應用的複雜度,它自己內部支持 Google、AWS EC二、Microsoft Azure、Kubernetes和 OpenStack 等雲平臺,而且它能夠無縫集成其餘持續集成(CI)流程,如 git、Jenkins、Travis CI、Docker registry、cron 調度器等。簡而言之,Spinnaker 是致力於提供在多種平臺上實現開箱即用的集羣管理和部署功能的平臺。git
1.2. 官方網站:github
https://www.spinnaker.ioweb
1.3. Ebookapi
https://www.spinnaker.io/ebook/#continuous-delivery-with-spinnaker安全
1.4. 參考文章網絡
https://blog.csdn.net/aixiaoyang168/article/details/78717151架構
2. 架構app
2.1. 微服務說明
組件名稱 | 組件說明 | 端口 | |
Deck | the browser-based UI | 9000 | |
Gate | the API gateway. The Spinnaker UI and all api callers communicate with Spinnaker via Gate | 8084 | |
Orca | the orchestration engine. It handles all ad-hoc operations and pipelines. | 8083 | |
Clouddriver | responsible for all mutating calls to the cloud providers and for indexing/caching all deployed resources. | 7002 | |
Front50 | used to persist the metadata of applications, pipelines, projects and notifications. | 8080 | |
Rosco | the bakery. It is used to produce machine images (for example GCE images, AWS AMIs, Azure VM images). It currently wraps packer, but will be expanded to support additional mechanisms for producing images. |
8087 | |
Igor | used to trigger pipelines via continuous integration jobs in systems like Jenkins and Travis CI, and it allows Jenkins/Travis stages to be used in pipelines. | 8088 | |
Echo | Spinnaker’s eventing bus. It supports sending notifications (e.g. Slack, email, Hipchat, SMS), and acts on incoming webhooks from services like Github. |
8089 | |
Fiat | Spinnaker’s authorization service. It is used to query a user’s access permissions for accounts, applications and service accounts. |
7003 | |
Kayenta | provides automated canary analysis for Spinnaker. | 8064 | |
Halyard | Spinnaker’s configuration service. Halyard manages the lifecycle of each of the above services. It only interacts with these services during Spinnaker startup, updates, and rollbacks. |
8090 |
2.2. 系統依賴
2.3. 架構:集羣管理和部署管理
集羣管理主要用於管理雲上的資源,它分爲如下幾個塊:
部署管理功能用於建立一個持續交付流程,它可分爲管道和階段兩大部分。
管道
部署管理的核心是管道,在Spinnaker的定義中,管道由一系列的階段(stages)組成。管道能夠人工觸發,也能夠配置爲自動觸發,好比由 Jenkins Job 完成時、Docker Images 上傳到倉庫時,CRON 定時器、其餘管道中的某一階段。同時,管道能夠配置參數和通知,能夠在管道一些階段上執行時發送郵件消息。Spinnaker 已經內置了一些階段,如執行自定義腳本、觸發 Jenkins 任務等。
階段
階段在 Spinnaker 中,能夠做爲管道的一個自動構建模塊的功能組成。咱們能夠隨意在管道中定義各個階段執行順序。Spinnaker 提供了不少階段供咱們選擇使用,好比執行發佈(Deploy)、執行自定義腳本 (script)、觸發 Jenkins 任務 (jenkins)等,功能很強大。
部署策略
Spinnaker 支持精細的部署策略,好比 紅/黑(藍/綠)部署,多階段環境部署,滾動紅/黑策略,canary 發佈等。用戶能夠爲每一個環境使用不一樣部署策略,好比,測試環境可使用紅/黑策略,生產環境使用滾動紅/黑策略,它封裝好了必須的步驟,用戶不須要複雜操做,就能夠實現企業級上線。