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

OpenShift中的持續交付

開發 開發工具
如果要打造一個持續交付的流水線,首先要考慮多環境的問題。一般一個應用程序會有多個環境,比如開發環境、集成測試環境、系統測試環境、用戶驗收測試環境、類生產環境、生產環境。如何在OpenShift中隔離并建立對這些環境的部署流程有多種方案可以選擇。

持續交付

如果要打造一個持續交付的流水線,首先要考慮多環境的問題。一般一個應用程序會有多個環境,比如開發環境、集成測試環境、系統測試環境、用戶驗收測試環境、類生產環境、生產環境。如何在OpenShift中隔離并建立對這些環境的部署流程有多種方案可以選擇。

  1. 同一個project中使用label和***名稱來區分不同的環境;
  2. 集群中的不同project來隔離環境;
  3. 跨集群來隔離環境。

我們以第二種方式為例,演示下多環境管理問題。

集群中的不同project來隔離環境;

在上圖中,我們有一個build project。build project包含了一組相互依賴性比較強的應用,每個應用對應一個build config,產生的Image Stream存放在image register中。而每個環境各對應一個project,其中包含了該應用的deployment config,其鏡像輸入是build config產生的Image Stream。之所以這樣做,有以下幾點考慮:

  1. 不同的環境分布在不同的project中,可以很好的借助project的特性進行環境隔離。比如sys project的容器只能部署在label為sys的node上,prod project的容器只能部署在label為prod的node上。
  2. 不同的project可以分別定義權限訪問和控制。比如只有QA才能操作sys project中的資源,運維工程師才能操作prod project中的資源。
  3. 不同的環境共用一個Image Stream,保證了應用程序鏡像在不同環境中的是完全一致的,防止由于測試環境和生產環境不一致而引入缺陷。

那么大家共用同一個Image Stream,如何實現應用的promotion呢?解決方案就是使用tag。

如上圖所示,一個image stream里面有多個版本的鏡像,而OpenShift可以為版本添加自定義tag。在不同的project里面,我們配置image的來源為”ImageStreamTag”,名稱為”applicationName:environmentName”。比如sys project的鏡像名為”App1:sys”,prod project的鏡像為”App1:prod”。如果想將version 3的鏡像推送到sys環境,只需要簡單的給version 3的鏡像打上sys的tag,這樣部署sys環境時就會自動使用version 3的鏡像。

  1. oc tag App1:latest App1:sys 

如果在Deployment Config里面配置了自動監聽tag的變動的操作,那么一旦你修改了ImageStream的tag,就會自動觸發對應環境的部署。

由于應用程序鏡像在不同的環境中是一致的,那么變動的部分都被抽取到了外部配置中。如何根據不同的環境來加載對應的外部配置呢?實現方式有很多種,這里介紹了使用Spring Cloud Config的方案。

首先我們將針對不同環境的配置放置在一個git倉中,然后通過Spring Cloud Config Server將其轉換為http服務。而我們在應用中嵌入Spring Cloud Config Client,其會接收一個環境變量來拉取指定環境的配置。而該環境變量可以通過Deployment Config來進行注入。

  1. oc env dc/sys PROFILE=sys 

使用Spring Cloud Config給予了我們更多的靈活性。我們可以選擇在應用程序***次啟動的時候拉取配置,也可以設置每隔一段時間自動更新配置,從而實現熱更新。

OpenShift雖然提供了構建和部署的能力,我們有時也需要使用Jenkins之類的工具來可視化以及編排整個流水線。

既然OpenShift是個容器化的管理平臺,那么我們完全也可以將Jenkins作為一個應用納入到OpenShift中來托管,這樣Jenkins的Master和Slave都是容器化的。OpenShift官方提供了一個Jenkins2.0的鏡像,其預裝了OpenShift pipeline插件,可以很方便地進行構建、部署等操作。

生產環境的部署

OpenShift在產品環境的部署默認是rolling的方式。

生產環境的部署

每次部署時,它會啟動一個新的Replica Controller,部署一個pod,然后削減舊的Replica Controller的pod,如此往復,直到舊的Replica Controller中的所有pod都被銷毀,新的Replica Controller的所有pod都在線。整個過程保證了服務不宕機以及流量平滑切換,對用戶是無感知的。

而有的時候部署場景要負責些,比如我們想在產品環境對新版本做了充分的PVT(product version testing)才切換到新版本。那么就可以使用藍綠部署的方式。

藍綠部署的方式

藍綠部署方案的關鍵點在于一個Router對應兩個Service。而Route作為向外界暴露的服務端口是不變的,兩個Service分別對應我們的生產藍環境和生產綠環境。同時只有一個Service能接入Router對外服務,另一個Service用來進行PVT測試。切換可以簡單的修改Router的配置即可。

  1. port: 
  2.   targetPort: app-blue-http 
  3. to: 
  4.   kind: Service 
  5.   name: app-blue 

結語

OpenShift在應用的構建以及部署方面為我們提供了大量開箱即用的功能和解決方案,所以實現持續交付不再那么艱難。我們可以將更多的精力花費在提升應用程序質量以及架構方面,交付更好的產品。

【本文是51CTO專欄作者“ThoughtWorks”的原創稿件,微信公眾號:思特沃克,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2017-02-27 18:28:45

持續交付部署

2012-11-27 10:47:39

紅帽OpenShift

2020-09-21 08:57:25

持續交付

2017-02-27 18:35:23

集成交付部署

2016-08-05 17:19:37

持續集成持續交付系統運維

2017-10-19 09:47:55

容器化微服務集成

2017-02-27 18:50:42

運維持續交付

2023-05-12 15:07:40

測試開發

2025-01-07 00:00:15

Jenkins集成服務器

2017-12-10 20:53:56

Docker持續交付容器

2015-07-22 14:59:30

OpenStac持續集成持續交付

2021-03-31 09:00:00

管道集成工具

2016-01-07 10:29:36

MesosDocker持續交付

2017-02-27 18:20:30

Amazon持續交付

2012-04-19 19:51:27

敏捷持續交付

2021-04-23 08:00:00

Kubernetes容器工具

2023-03-14 16:35:52

2023-10-19 07:33:41

KubeVelaapiserver

2015-06-26 16:20:01

ZDNet軟件頻道

2021-06-18 09:00:00

云計算開發存儲庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本一级淫片免费啪啪3 | av无遮挡 | 国产精品久久久久久av公交车 | 日韩中文字幕一区 | 国产一区二区视频免费在线观看 | 亚洲欧美在线一区 | 九九久久精品 | 免费h在线 | 午夜精品一区 | 午夜视频在线 | 午夜精品久久久久久久99黑人 | 99国产精品久久久 | 成人在线观看黄 | 五十女人一级毛片 | 美女黄视频网站 | 福利av在线| 欧美日本高清 | 欧美另类视频在线 | 欧美激情久久久久久 | 欧美一级欧美一级在线播放 | 欧美在线视频一区 | 99久久精品免费 | 男女污污网站 | 精品二 | 欧美一级在线观看 | 在线视频成人 | 免费观看的黄色网址 | 日本精品视频 | 人人干在线视频 | 伊人久久精品一区二区三区 | 久久天天躁狠狠躁夜夜躁2014 | 亚洲一区二区视频 | a在线视频 | 一区二区三区网站 | 成人不卡视频 | 国产一区二区三区久久久久久久久 | 国产亚洲精品美女久久久久久久久久 | 久久久免费观看视频 | 日韩精品在线观看一区二区 | 日韩欧美一区二区三区在线播放 | 免费观看日韩av |