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

發(fā)布策略選型:ZadigX、阿里云、Argo、Spinnaker、Harness、Codefresh...

云計(jì)算 云原生
本文將對灰度發(fā)布的不同平臺進(jìn)行全面比對,重點(diǎn)關(guān)注 ZadigX、阿里云、Harness、Spinnaker、Argo Rollouts 等主流平臺。我們將深入探討它們的使用條件、實(shí)現(xiàn)原理、使用流程,橫向差異的比對,旨在幫助大家選擇最適合自己的平臺。

在軟件開發(fā)和運(yùn)維的領(lǐng)域中,灰度發(fā)布是一種關(guān)鍵的部署策略,用于逐步推送新版本給用戶,以減少潛在的風(fēng)險(xiǎn)和影響范圍。不同的平臺在實(shí)現(xiàn)灰度發(fā)布時(shí)可能存在差異,因?yàn)樗鼈冃枰獫M足各自的需求和限制。

本文將對灰度發(fā)布的不同平臺進(jìn)行全面比對,重點(diǎn)關(guān)注 ZadigX、阿里云、Harness、Spinnaker、Argo Rollouts 等主流平臺。我們將深入探討它們的使用條件、實(shí)現(xiàn)原理、使用流程,橫向差異的比對,旨在幫助大家選擇最適合自己的平臺。

實(shí)現(xiàn)原理和使用流程

01ZadigX

ZadigX 支持藍(lán)綠、金絲雀、分批次灰度、Istio 發(fā)布等發(fā)布策略,下面簡單介紹 ZadigX 藍(lán)綠發(fā)布原理,更多發(fā)布策略使用過程參考官方文檔[1]。

使用條件

workload 需要有一個(gè) service 與之對應(yīng),并且 workload 的 labels 包含所有 service 的 selector labels

workload 當(dāng)前只支持 deployment 類型

原理

部署藍(lán)環(huán)境,復(fù)制當(dāng)前 workload,設(shè)置新的鏡像,創(chuàng)建一個(gè) blue service 指向它

藍(lán)環(huán)境部署完成,執(zhí)行用戶的驗(yàn)證任務(wù)

開始執(zhí)行藍(lán)綠發(fā)布,刪除 blue service

將 green service 指向新創(chuàng)建的 workload

刪除舊的 workload

發(fā)布過程完成或者中斷刪除藍(lán)環(huán)境

配置過程

界面化配置發(fā)布工作流,詳細(xì)配置參見文檔[1]。ZadigX 支持多服務(wù)編排藍(lán)綠發(fā)布,內(nèi)置最佳實(shí)踐,配置簡單易上手;結(jié)合系統(tǒng)的用戶體系、權(quán)限管理、項(xiàng)目管理滿足企業(yè)的個(gè)性化訴求。

使用過程

  • 點(diǎn)擊「執(zhí)行」按鈕,選擇需要更新的實(shí)例及鏡像。

圖片圖片

圖片圖片

  • 工作流按照設(shè)置的任務(wù)完成執(zhí)行,執(zhí)行狀態(tài)如下圖所示。

圖片圖片

02阿里云

阿里云支持藍(lán)綠發(fā)布、分批發(fā)布等灰度發(fā)布策略,下面以藍(lán)綠發(fā)布為例,簡單介紹其原理和使用流程,阿里云借助 Istio 來做藍(lán)綠發(fā)布,詳細(xì)過程可參考官方文檔[2]。

前提

  • Service/VirtualService/DestinationRule 同名
  • Deployment 的 labels 內(nèi)包含有 Service 的全部 selector labels

原理

  • 基于 Istio 及其 VirtualService DestinationRule 資源類型進(jìn)行流量控制
  • 藍(lán)綠發(fā)布開始,基于當(dāng)前的 Deployment 實(shí)例,在藍(lán)環(huán)境創(chuàng)建一個(gè)新版本的應(yīng)用 Deployment 實(shí)例
  • Service 與多個(gè)版本的 Deployment 實(shí)例直接通過 LabelSelector 進(jìn)行關(guān)聯(lián),讓 Istio 可以發(fā)現(xiàn)這些服務(wù)實(shí)例
  • 更新 Istio 的 DestinationRule 資源對象,為不同版本設(shè)置子集,再更新 VirtualService 設(shè)置流量路由的規(guī)則以及權(quán)重
  • 人工驗(yàn)證完成后,完成發(fā)布將所有流量切流到藍(lán)環(huán)境,并且將原有的綠環(huán)境實(shí)例移除

配置過程

界面化配置流水線,詳細(xì)配置參見文檔[2],對于多個(gè)服務(wù)的藍(lán)綠發(fā)布場景,配置相對繁瑣。

執(zhí)行過程

執(zhí)行流水線,觸發(fā)藍(lán)綠發(fā)布,通過 Cookie 標(biāo)訪問新版環(huán)境進(jìn)行功能驗(yàn)證,驗(yàn)證沒問題,點(diǎn)擊「完成」,流量切到新版本;驗(yàn)證有問題則點(diǎn)擊「回滾」。

圖片圖片

03Harness

Harness 支持藍(lán)綠發(fā)布、滾動(dòng)發(fā)布、金絲雀發(fā)布等發(fā)布策略,支持 Deployment 、 Statefulset 工作負(fù)載,通過 K8s 原生 Service 做流量控制,下面以藍(lán)綠發(fā)布為例,簡單介紹 Harness 藍(lán)綠發(fā)布的執(zhí)行過程,具體原理可參考官方文檔[3]。

圖片圖片

圖片圖片

原理

第一次部署:

  1. Harness 創(chuàng)建兩個(gè) services,分別配置 annotationa.線上 service:annotations: harness.io/primary-service: "true"b.測試 service:annotations: harness.io/stage-service: "true"
  2. 藍(lán)環(huán)境創(chuàng)建原版本的 pod 集合并配置 annotation:harness.io/color: blue
  3. 測試 service 指向藍(lán)環(huán)境 pod,測試沒問題后線上 service 也指向藍(lán)環(huán)境 pod

第二次部署:

  1. 綠環(huán)境中創(chuàng)建新版本 pod,并配置 annotation,harness.io/color: green
  2. 測試 service 指向綠環(huán)境新版本 pod,并進(jìn)行驗(yàn)證,驗(yàn)證通過后
  3. 線上 service 指向綠環(huán)境新版本 pod,測試 service 指向藍(lán)環(huán)境老版本 pod

第三次部署:

  1. 藍(lán)環(huán)境老版本 pod 升級為新版本
  2. 測試 service 指向藍(lán)環(huán)境新版本 pod 并且驗(yàn)證,驗(yàn)證通過后
  3. 線上 service 指向藍(lán)環(huán)境新版本 pod,測試 service 指向綠環(huán)境

配置過程

界面化配置工作流,詳細(xì)配置參見文檔[3],配置項(xiàng)較多,有一定的學(xué)習(xí)成本。

執(zhí)行過程

執(zhí)行工作流觸發(fā)藍(lán)綠過程。

圖片圖片

04Codefresh

Codefresh 支持藍(lán)綠發(fā)布、金絲雀發(fā)布,支持 Deployment 工作負(fù)載,下面簡單介紹 Codefresh 實(shí)現(xiàn)藍(lán)綠發(fā)過過程,更多實(shí)現(xiàn)原理參考官方文檔[4]。

原理

  1. 部署新版本
  2. 等待 HEALTH_SECONDS 時(shí)間,任務(wù)對新版本 pod 做一些健康檢查,也可以手工做一些檢查
  3. 超過等待時(shí)間,沒有任何錯(cuò)誤,切換流量到新版本
  4. 如果有報(bào)錯(cuò),回滾到之前版本

配置過程

在工作流中以 YAML 方式定義服務(wù)藍(lán)綠過程的相關(guān)配置,詳細(xì)配置參見文檔[4]。

執(zhí)行過程

執(zhí)行 Codefresh 工作流觸發(fā)藍(lán)綠發(fā)布,僅支持單個(gè)服務(wù)的藍(lán)綠發(fā)布。

圖片圖片

05Spinnaker

Spinnaker 支持藍(lán)綠、金絲雀等灰度發(fā)布策略,僅支持 ReplicaSet 類型工作負(fù)載,下面簡單介紹使用 Spinnaker 實(shí)現(xiàn)藍(lán)綠發(fā)布的過程,具體原理可參考官方文檔[5]。

原理

為 ReplicaSet 設(shè)置 Annotations <traffic.spinnaker.io/load-balancers: '["service my-service"]'>,Spinnaker 可以自動(dòng)為其下的 Pod label 添加符合 my-service Selector 的 label。

配置過程

界面化方式配置工作流,詳細(xì)配置參見文檔[5],配置項(xiàng)較多,有一定的學(xué)習(xí)成本。

執(zhí)行過程

  1. 創(chuàng)建新版本鏡像的 ReplicaSet,部署到藍(lán)環(huán)境
  2. Spinnaker 根據(jù) Annotations 將新版本的 ReplicaSet 綁定到指定 Service 上
  3. 測試完成后通過 Disable Stage 下線原版本的 ReplicaSet

06Argo Rollouts

Argo Rollouts 支持藍(lán)綠發(fā)布、金絲雀發(fā)布等發(fā)布策略,下面簡單介紹使用 Argo Rollouts 做藍(lán)綠發(fā)布過程,更多原理和使用流程參考官方文檔[6]。

原理

  • 使用 Rollout  CRD 取代 Deployment 并在其原有能力基礎(chǔ)上支持了多種發(fā)布策略
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: rollout-bluegreen
spec:
  replicas: 2
  revisionHistoryLimit: 2
  selector:
    matchLabels:
      app: rollout-bluegreen
  template:
    metadata:
      labels:
        app: rollout-bluegreen
    spec:
      containers:
      - name: rollouts-demo
        image: argoproj/rollouts-demo:blue
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
  strategy:
    blueGreen: 
      # activeService specifies the service to update with the new template hash at time of promotion.
      # This field is mandatory for the blueGreen update strategy.
      activeService: rollout-bluegreen-active
      # previewService specifies the service to update with the new template hash before promotion.
      # This allows the preview stack to be reachable without serving production traffic.
      # This field is optional.
      previewService: rollout-bluegreen-preview
      # autoPromotionEnabled disables automated promotion of the new stack by pausing the rollout
      # immediately before the promotion. If omitted, the default behavior is to promote the new
      # stack as soon as the ReplicaSet are completely ready/available.
      # Rollouts can be resumed using: `kubectl argo rollouts promote ROLLOUT`
      autoPromotionEnabled: false

配置過程

需要 YAML 方式來定義藍(lán)綠發(fā)布過程,詳細(xì)配置參見文檔[6]。

執(zhí)行過程

Argo 提供功能簡單的 Dashboard,缺少企業(yè)級管理能力。

圖片圖片

07Fluxcd / Flagger

Flagger 支持藍(lán)綠發(fā)布、金絲雀等發(fā)布策略,下面簡單介紹使用 Flagger 實(shí)現(xiàn)藍(lán)綠發(fā)布過程,具體可參考官方文檔[6]。

原理

  1. 使用其實(shí)現(xiàn)的 Canary 類型 CRD 管理 Deployment 從而支持了多種發(fā)布策略
  2. 引導(dǎo)創(chuàng)建服務(wù):在啟動(dòng)時(shí),F(xiàn)lagger 會(huì)創(chuàng)建三個(gè) ClusterIP Service(app-primary,app-canary,app)以及一個(gè)名為 app-primary 的藍(lán)版本 deployment
  3. 檢測新版本:當(dāng) Flagger 檢測到新版本時(shí),它會(huì)擴(kuò)展綠色版本并運(yùn)行一致性測試
  4. 執(zhí)行一致性測試:一致性測試應(yīng)針對 app-canary ClusterIP 服務(wù)進(jìn)行,以訪問綠色版本
  5. 開始負(fù)載測試:如果一致性測試通過,F(xiàn)lagger 會(huì)開始負(fù)載測試,并使用自定義的 Prometheus 查詢來驗(yàn)證測試結(jié)果
  6. 分析負(fù)載測試:如果負(fù)載測試分析成功,F(xiàn)lagger 會(huì)將新版本升級為 app-primary,并縮減綠色版本

配置過程

K8s YAML 方式配置藍(lán)綠發(fā)布過程,詳細(xì)配置參見文檔[7]。

使用過程

Kubectl apply 方式執(zhí)行,沒有提供界面化的方式,缺乏企業(yè)級管理能力。

責(zé)任編輯:武曉燕 來源: KodeRover
相關(guān)推薦

2023-03-14 16:35:52

2021-05-28 17:00:43

阿里云低碳

2020-10-17 09:48:55

Spinnaker實(shí)踐

2012-05-28 18:09:11

華為云服務(wù)

2019-03-19 22:32:21

阿里云智能產(chǎn)品

2020-07-21 10:51:08

阿里云云原生

2021-07-13 06:35:11

Argo Rollou GitOpsKubernetes

2022-08-22 10:40:40

Kubernete部署分析運(yùn)行

2014-03-07 09:35:10

馬云阿里云云計(jì)算

2013-07-12 15:41:10

IBM云計(jì)算

2011-11-10 09:04:42

阿里云云計(jì)算基礎(chǔ)設(shè)施

2011-11-11 09:03:17

阿里云云計(jì)算

2020-06-10 11:46:09

阿里云科研云科研

2023-09-28 07:34:33

2021-07-16 06:40:19

Argo RollouAnalysis云原生

2013-06-06 21:28:30

IBM云計(jì)算

2013-06-07 17:15:13

IBM云計(jì)算

2015-07-22 18:21:38

阿里云批量計(jì)算

2018-08-29 17:46:56

阿里云Redis數(shù)據(jù)中心
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产电影一区二区 | 国产视频久久久 | 久久亚洲一区二区三区四区 | 午夜精品久久久久久久久久久久久 | 国产视频黄色 | 欧美精品一区二区三区四区 | xxxxx免费视频 | 欧美一区二区三区日韩 | 成人在线免费电影 | 婷婷激情综合 | 国产精品成人一区二区 | 一级黄色片日本 | 亚洲美女视频 | 波多野结衣先锋影音 | 日韩一区二区不卡 | 亚洲精品乱码久久久久v最新版 | 日日摸夜夜添夜夜添特色大片 | 亚洲成人免费在线观看 | 在线精品一区二区 | 日日操操操| 国产高清在线视频 | 一区二区三区免费看 | 91中文在线观看 | 国产一区二区毛片 | 日韩毛片在线观看 | 日本高清在线一区 | 国产精品国产三级国产播12软件 | 91精品国产综合久久久久蜜臀 | 欧美亚洲视频 | 国产精品一区二区不卡 | 久在线 | 欧美一区二区三区在线 | 国产成人精品一区二区 | 亚洲日本视频 | 欧美日韩在线一区 | 99re国产视频 | 一级片免费观看 | 亚洲高清av | 精品国产一区二区三区久久久蜜月 | 成人免费视频观看视频 | 黄色免费三级 |