成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分析Netflix公司產(chǎn)品Spinnaker的微服務(wù)實(shí)踐

開發(fā)
Netflix 是業(yè)界微服務(wù)和 DevOps 組織的楷模,有大規(guī)模生產(chǎn)級(jí)微服務(wù)的成功實(shí)踐。微服務(wù)有些公司甚至比 Netflix 做得更早,但 Netflix 大概是大規(guī)模生產(chǎn)級(jí)微服務(wù)做得最杰出的。

Netflix在開源社區(qū)有著非常大的貢獻(xiàn),發(fā)布了很多開源工具去做部署、打包等各種功能。Spinnaker 是 Netflix的一個(gè)開源項(xiàng)目,來做混合云環(huán)境部署,能夠?qū)崿F(xiàn)跨云平臺(tái)的部署任務(wù)的編排。

[[342850]]

在 Netflix 使用 Spinnaker 每天發(fā)布 4000 次變更到亞馬遜的機(jī)器上。谷歌云也在用 Spinnaker 去做部署。他們構(gòu)建時(shí)也是用 Jenkins,其中有一個(gè)過程叫 bake,bake 是把應(yīng)用打包成一個(gè)鏡像,然后把這個(gè)鏡像用 deploy 去做部署。Netflix 的 DevOps實(shí)踐非常值得關(guān)注,他們也有很多項(xiàng)目和開源工具都值得一看。

 

本文主要分析Spinnaker其開發(fā)模式、持續(xù)集成、部署實(shí)踐。

服務(wù)架構(gòu)
Spinnaker 是由多個(gè)微服務(wù)組成的。Deck是前端頁面;Gate是API網(wǎng)關(guān)Spinnaker UI和所有api調(diào)用程序都通過Gate與Spinnaker進(jìn)行通信;Orca是編排引擎處理所有臨時(shí)操作和管道;CloudDriver是負(fù)責(zé)對(duì)云提供商的所有變更調(diào)用,并索引/緩存所有已部署的資源;Front50用于保存應(yīng)用程序,管道,項(xiàng)目和通知的元數(shù)據(jù);Rosco生成鏡像,它為各種云提供商生成不可變的VM映像;Igor用于通過Jenkins和Travis CI等系統(tǒng)中的持續(xù)集成作業(yè)來觸發(fā)管道,并且它允許在管道中使用Jenkins / Travis階段;Echo負(fù)責(zé)消息通知;Fiat負(fù)責(zé)用戶權(quán)限管理;Kayenta為Spinnaker提供自動(dòng)化的金絲雀分析;Halyard是Spinnaker生命周期配置管理工具。

 代碼倉(cāng)庫(kù)管理
Spinnaker的微服務(wù)是每個(gè)微服務(wù)都創(chuàng)建一個(gè)代碼庫(kù)。大家可以訪問Github上面spinnaker的倉(cāng)庫(kù),里面每個(gè)微服務(wù)都有對(duì)應(yīng)一個(gè)倉(cāng)庫(kù)管理代碼。進(jìn)入項(xiàng)目查看分支策略,主干分支開發(fā),版本分支發(fā)布。

持續(xù)集成
使用的工具為GitHub Actions,這個(gè)ci文件中只有一個(gè)作業(yè)branch-build,主要是運(yùn)行g(shù)radle構(gòu)建。

 

.github/workflows/build.ymlCI文件內(nèi)容如下:當(dāng)master分支和version-*tag有提交時(shí)自動(dòng)觸發(fā)。通過env配置了gradle構(gòu)建的參數(shù)。

  1. name: Branch Build 
  2. on:  push:    branches:    - master    - version-*env:  GRADLE_OPTS: -Dorg.gradle.daemon=false -Xmx2g -Xms2g 
  3. jobs:  branch-build:    # Only run this on repositories in the 'spinnaker' org, not on forks. 
  4.     if: startsWith(github.repository, 'spinnaker/'
  5.     runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v2 
  6.       # Install Java 8 for cross-compilation support. Setting it up before 
  7.       # Java 11 means it comes later in $PATH (because of how setup-java works) 
  8.       - uses: actions/setup-java@v1 
  9.         with
  10.           java-version: 8 
  11.       - uses: actions/setup-java@v1 
  12.         with
  13.           java-version: 11 
  14.       - uses: actions/cache@v1 
  15.         with
  16.           path: ~/.gradle 
  17.           key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} 
  18.           restore-keys: | 
  19.             ${{ runner.os }}-gradle- 
  20.       - name: Build 
  21.         run: ./gradlew -PenableCrossCompilerPlugin=true build --stacktrace 

應(yīng)用部署
Spinnaker安裝部署是一件令人頭疼的事情,因?yàn)楹芏噘Y源文件都是需要外面獲取的。當(dāng)我們把所需要的資源文件導(dǎo)入到國(guó)內(nèi)后,其實(shí)就沒有那么痛苦了。至少現(xiàn)在30分鐘內(nèi)部署一個(gè)spinnaker已經(jīng)很現(xiàn)實(shí)了。(如果不算從阿里云鏡像的pull時(shí)間,一個(gè)腳本5分鐘內(nèi)部署一個(gè)實(shí)例)

我們來看下這個(gè)版本文件,這里面記錄了spinnaker產(chǎn)品所有的微服務(wù)版本信息。而halyard部署Spinnaker其實(shí)也是讀取的這個(gè)文件,根據(jù)文件內(nèi)容獲取所需的資源。

  1. version: 1.19.4 
  2. timestamp'2020-04-03 08:01:05' 
  3. services: 
  4.   echo: 
  5.     version: 2.11.2-20200401121252 
  6.     commit: 5e2b673d1d658f88a3ae7741ab99cc0fd4a9df48 
  7.   clouddriver: 
  8.     version: 6.7.3-20200401190525 
  9.     commit: 77c774d185de42bb83dffde1f813f719f712994b 
  10.   deck: 
  11.     version: 3.0.2-20200324040016 
  12.     commit: 7c228ce82928f73a0f3051c4233242a6f87e0bec 
  13.   fiat: 
  14.     version: 1.10.1-20200401121252 
  15.     commit: aaebd07d8134d48630b056d6877a799a09ed282b 
  16.   front50: 
  17.     version: 0.22.1-20200401121252 
  18.     commit: ef1e7feff41797beb2d1695c1c3c0face550fe4b 
  19.   gate: 
  20.     version: 1.15.1-20200403040016 
  21.     commit: 365aa9fc5b1351207731c4445d7bbb79885d6da1 
  22.   igor: 
  23.     version: 1.9.2-20200401121252 
  24.     commit: 576235bcfce0c48bc139e9c94fe98b3467d3d170 
  25.   kayenta: 
  26.     version: 0.14.0-20200304112817 
  27.     commit: 85f590de74db46d54f016d88862418c990a17747 
  28.   orca: 
  29.     version: 2.13.2-20200401144746 
  30.     commit: 8460456e8380d370d1678b06acd015900a94f515 
  31.   rosco: 
  32.     version: 0.18.1-20200401121252 
  33.     commit: 9a20165e9c0d33e538d0038d5d02cb480e27f8c3 
  34.   defaultArtifact: {} 
  35.   monitoring-third-party: 
  36.     version: 0.16.2-20200228142642 
  37.     commit: 94c6e9cd3006347efe3101c0e6d8f98ce65f9053 
  38.   monitoring-daemon: 
  39.     version: 0.16.2-20200228142642 
  40.     commit: 94c6e9cd3006347efe3101c0e6d8f98ce65f9053 
  41. dependencies: 
  42.   redis: 
  43.     version: 2:2.8.4-2 
  44.   consul: 
  45.     version: 0.7.5 
  46.   vault: 
  47.     version: 0.7.0 
  48. artifactSources: 
  49.   debianRepository: https://dl.bintray.com/spinnaker-releases/debians 
  50.   dockerRegistry: gcr.io/spinnaker-marketplace 
  51.   googleImageProject: marketplace-spinnaker-release 
  52.   gitPrefix: https://github.com/spinnaker 

這是一個(gè)Yaml格式的文件, 頂部的version指的是Spinnaker的版本號(hào);services下面包含每個(gè)服務(wù)的信息(版本,提交)。dependencies是spinnaker部署時(shí)所需要的依賴服務(wù)。我們來分析下每個(gè)服務(wù)中的version字段的作用,這個(gè)字段的作用很大。通過此字段指定Docker鏡像標(biāo)簽和服務(wù)分支中配置文件的獲取。

  1. echo: 
  2.     version: 2.11.2-20200401121252 

echo是spinnaker其中的一個(gè)微服務(wù),負(fù)責(zé)消息通知。halyard會(huì)讀取version-2.11.2標(biāo)簽中halconfig目錄下的echo.yml配置文件,會(huì)下載gcr.io/spinnaker-marketplace/echo:2.11.2-20200401121252鏡像。其他服務(wù)以此類推。

最后,我們執(zhí)行hal deploy apply一鍵部署發(fā)布Spinnaker。

 

對(duì)于微服務(wù)模式的項(xiàng)目,很多細(xì)節(jié)可以借鑒Spinnaker的模式。例如:我們也可以在gitlab倉(cāng)庫(kù)中創(chuàng)建一個(gè)對(duì)應(yīng)版本號(hào)的yaml文件,里面包含當(dāng)前版本中每個(gè)微服務(wù)的鏡像標(biāo)簽。準(zhǔn)備發(fā)布的時(shí)候在Jenkins上面選擇版本分支,然后根據(jù)版本分支中的版本號(hào)讀取gitlab倉(cāng)庫(kù)中對(duì)應(yīng)版本的yaml文件,然后一鍵部署。當(dāng)需要回滾的時(shí)候,輸入上個(gè)版本號(hào)同樣的過程進(jìn)行回滾。

 

想了解更多關(guān)于Spinnaker平臺(tái)的最佳實(shí)踐請(qǐng)點(diǎn)擊 Spinnaker實(shí)踐課程上線|實(shí)現(xiàn)多云環(huán)境持續(xù)交付 感謝您的支持!

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2017-09-05 14:05:11

微服務(wù)spring clou路由

2020-10-17 09:48:55

Spinnaker實(shí)踐

2017-05-09 12:40:05

2021-12-02 16:20:17

開源微服務(wù)框架

2020-03-27 08:46:51

微服務(wù)服務(wù)網(wǎng)關(guān)

2016-07-12 17:29:40

Docker阿里云技術(shù)峰會(huì)

2023-04-04 14:40:46

2023-10-27 18:47:35

微服務(wù)底層機(jī)制

2021-03-09 09:33:42

網(wǎng)關(guān)授權(quán)微服務(wù)

2017-10-21 23:28:17

微服務(wù)架構(gòu)師開發(fā)

2018-04-20 10:38:25

2016-08-25 21:12:31

微服務(wù)架構(gòu)發(fā)布

2016-08-25 20:55:19

微服務(wù)架構(gòu)發(fā)布

2021-01-25 15:00:44

微服務(wù)分布式日志

2022-05-12 07:37:51

單點(diǎn)登錄微服務(wù)開源

2018-06-14 21:47:46

WOT沈劍58速運(yùn)

2013-03-06 09:26:20

云服務(wù)云實(shí)踐精準(zhǔn)管理

2023-02-08 09:42:30

策略方式容量

2020-03-30 11:30:52

微服務(wù)架構(gòu)數(shù)據(jù)

2021-02-20 10:26:00

前端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国内精品久久久久久 | 99亚洲综合| 国产精品18毛片一区二区 | 四虎影视在线 | 91成人在线 | 国产一区在线免费观看视频 | 亚洲成人午夜电影 | 精品欧美一区二区精品久久久 | 91文字幕巨乱亚洲香蕉 | 黄瓜av | 国产在线观看免费 | 97影院在线午夜 | 久久精品国产久精国产 | 日韩精品一区二区三区视频播放 | 亚洲欧美激情精品一区二区 | 日日操视频| 日韩久久综合网 | 玖玖免费 | 国产在线精品一区二区三区 | 91国内精品久久 | 在线视频日韩精品 | 久久精品欧美电影 | av日韩高清| 在线看片福利 | 国产精品一区二区久久久久 | 国产99久久精品一区二区永久免费 | 91成人午夜性a一级毛片 | 日韩精品国产精品 | 欧美a级成人淫片免费看 | 国产一区二区在线播放 | 久久久成人免费视频 | 国产精品免费在线 | av黄色在线 | 久久国产一区 | 日韩欧美亚洲 | 午夜精品久久久久久久99黑人 | 草樱av| 亚洲一区二区久久 | 国产一级大片 | 国产在线一区二区三区 | 国产亚韩 |