<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CI/CD流程在CMDB模型中的設(shè)計(jì)與應(yīng)用

          共 2596字,需瀏覽 6分鐘

           ·

          2021-09-28 07:59

          原文鏈接:https://www.jianshu.com/p/67ff73372db9

          前言

          我們知道,目前CMDB一般用于管理IT基礎(chǔ)資源和應(yīng)用相關(guān)資源,所管理的都是實(shí)體對(duì)象,如IDC、機(jī)柜、服務(wù)器、網(wǎng)絡(luò)設(shè)備、IP地址、應(yīng)用、集群、域名等等。當(dāng)然,單純的記錄這些信息是沒有多大意義的,我們的目標(biāo)是要利用這些元數(shù)據(jù)來滿足運(yùn)維的業(yè)務(wù)場(chǎng)景,在此基礎(chǔ)上實(shí)現(xiàn)例如持續(xù)部署、監(jiān)控、變更、生命周期管理等各種操作和流程。而對(duì)于DevOps實(shí)踐來說,持續(xù)集成和持續(xù)部署則是其最重要的流程。
          在現(xiàn)有的各種CMDB方案中,很少有對(duì)流程進(jìn)行深入討論的。一方面是對(duì)于服務(wù)管理類流程已經(jīng)有ITIL、ITSM等一套方法論來描述,所以不會(huì)著太多筆墨;另一方面對(duì)于持續(xù)集成和持續(xù)部署流程,有一種情況是直接被交給其他工具或平臺(tái)來完成了,比如Jenkins pipeline,沒有和CMDB緊密結(jié)合,所以也基本不需要討論。

          Jenkins Pipeline方案

          目前一種比較流行的持續(xù)集成和部署方案是通過Jenkins的Pipeline來實(shí)現(xiàn)。Jenkins本質(zhì)上是一個(gè)構(gòu)建工具,它提供了非常多的插件,通過這些插件來執(zhí)行像是拉取代碼、編譯、打包、郵件通知等操作,來完成構(gòu)建任務(wù)。而Pipeline則能將這些操作組裝成流水線,自動(dòng)地完成從構(gòu)建到部署整個(gè)流程。
          看上去很美對(duì)不對(duì)?但是,這種方案有有一個(gè)很大的不足,就是無法很好地控制各個(gè)步驟的進(jìn)行,而且也很難做到“一次構(gòu)建、到處運(yùn)行”。舉個(gè)實(shí)際的例子,一個(gè)新版本部署的時(shí)候肯定是先部署到測(cè)試環(huán)境,測(cè)試沒問題了才能部署到生產(chǎn)環(huán)境,那測(cè)試通過后如何部署到生產(chǎn)環(huán)境?是要重新構(gòu)建嗎?還是改jenkins腳本?所以說,想要把流控控制在手里就必須自己設(shè)計(jì)流程模型,自己實(shí)現(xiàn)流程。當(dāng)然,流程中的具體步驟可交給專門的工具來做,但絕不能把整個(gè)流程拱手相讓。

          流程分析

          在實(shí)際的運(yùn)維場(chǎng)景中,我們需要知道這個(gè)流程進(jìn)行到哪一步,是成功還是失敗、如何增加審批功能等等,因此,我們需要將這個(gè)流程用模型把它描述出來,識(shí)別出它的每一個(gè)步驟,以及相應(yīng)的狀態(tài)變化,從而能夠掌握并控制整個(gè)流程并在此基礎(chǔ)上增加一些高級(jí)功能例如對(duì)整個(gè)持續(xù)集成、持續(xù)部署進(jìn)行可視化。

          首先我們來梳理一下這個(gè)過程:

          上圖描述了持續(xù)集成和部署的最簡(jiǎn)單流程。開發(fā)人員提交代碼到代碼倉庫,觸發(fā)構(gòu)建工具進(jìn)行構(gòu)建(相比于普遍的自動(dòng)觸發(fā)做法,我覺得此處手動(dòng)觸發(fā)更實(shí)用),構(gòu)建完成后,將應(yīng)用包部署到測(cè)試環(huán)境,然后測(cè)試人員對(duì)版本進(jìn)行測(cè)試,測(cè)試通過后,再部署到生產(chǎn)環(huán)境并驗(yàn)證。

          模型設(shè)計(jì)

          根據(jù)上面的梳理和分析,應(yīng)將一個(gè)版本從構(gòu)建到部署當(dāng)做一次完整的流程,即同一版本的代碼只構(gòu)建一次,就能根據(jù)實(shí)際結(jié)果決定部署到測(cè)試或生產(chǎn)環(huán)境。

          首先,每次提交代碼都會(huì)產(chǎn)生一個(gè)版本,用Version(版本)模型來描述。

          其次,將持續(xù)集成和部署過程抽象為一個(gè)廣義的Deploy(部署)模型。Deploy模型繼承自Version模型,與Version模型是一對(duì)一的系。Deploy模型用于管理Version的整個(gè)生命周期。

          Version模型主要包含以下字段:

          • 項(xiàng)目

          • 版本號(hào),指定的版本標(biāo)識(shí)

          • 包路徑,該版本構(gòu)建出來的制品的路徑

          • 版本修改說明

          • 狀態(tài),描述該版本所處的環(huán)境/名字空間
            其中狀態(tài)有以下值:

          • 開發(fā),版本處于開發(fā)狀態(tài),默認(rèn)值

          • 測(cè)試,版本處于測(cè)試狀態(tài)

          • 掛起,版本發(fā)布到測(cè)試環(huán)境后,又有新版本發(fā)布到測(cè)試環(huán)境,那么該版本就處于掛起狀態(tài)

          • 中止,當(dāng)有版本部署到生產(chǎn)環(huán)境時(shí),處于掛起狀態(tài)的老版本會(huì)變成中止?fàn)顟B(tài)。

          • 上線,版本部署到生產(chǎn)環(huán)境后就處于上線狀態(tài)

          • 下線,上線的版本被新的版本上線代替后,變成下線狀態(tài)

          開發(fā)作為Version模型生命周期的開始,中止、上線及下線三個(gè)狀態(tài)作為Version模型生命周期的結(jié)束。

          Deploy模型主要包含以下字段:

          • 步驟/階段,當(dāng)前版本的部署流程處哪個(gè)階段

          • 各階段的時(shí)間戳
            步驟/階段有以下取值:

            • 提測(cè)

            • 構(gòu)建

            • 部署測(cè)試

            • 測(cè)試

            • 部署生產(chǎn)

            • 驗(yàn)收

          模型應(yīng)用

          有了上述模型,我們可以很容易獲知:

          • 某個(gè)項(xiàng)目/應(yīng)用的所有版本狀態(tài)

          • 所有部署的當(dāng)前進(jìn)度
            根據(jù)該模型的設(shè)計(jì),實(shí)現(xiàn)的某個(gè)項(xiàng)目/應(yīng)用實(shí)例的版本信息展示:

          部署實(shí)例展示:

          進(jìn)一步,可以對(duì)研發(fā)工作效率和質(zhì)量進(jìn)行評(píng)估:

          • 評(píng)估某個(gè)版本的需求效果。比如某個(gè)版本部署到測(cè)試環(huán)境后很久都不上線,那我們有理由懷疑這個(gè)新版本的需求是無用的。

          • 通過分析Deploy每個(gè)階段的時(shí)間戳,可以評(píng)估開發(fā)/測(cè)試人員的工作效率

          • 對(duì)可能影響重大的步驟進(jìn)行人工審批,比如部署生產(chǎn)環(huán)境的步驟。

          • 分析所有未結(jié)束生命周期的Deploy實(shí)例(處于中止和掛起狀態(tài)的實(shí)例)的數(shù)量,來評(píng)估開發(fā)人員的工作質(zhì)量。

          • 對(duì)持續(xù)集成和持續(xù)部署進(jìn)行可視化,多少處于測(cè)試狀態(tài)、多少處于掛起狀態(tài),一目了然。

          總結(jié)

          本文重點(diǎn)討論了持續(xù)集成和持續(xù)部署流程在CMDB模型中的設(shè)計(jì)和應(yīng)用,識(shí)別出了其中最重要的兩個(gè)模型Version和Deploy,并詳細(xì)定義了這兩個(gè)模型的字段信息,特別是定義了Version模型的狀態(tài)和Deploy模型的步驟/階段兩個(gè)重要字段。
          該設(shè)計(jì)能夠靈活地控制流程的各個(gè)步驟,并能準(zhǔn)確地反映流程和狀態(tài)之間的作用關(guān)系。最終,能夠方便地將持續(xù)集成和持續(xù)部署流程進(jìn)行可視化,將相關(guān)數(shù)據(jù)進(jìn)行分析后還可用于評(píng)估研發(fā)人員工作質(zhì)量和效率,甚至驗(yàn)證產(chǎn)品需求等。

          - END -

           推薦閱讀 

          31天拿下K8S含金量最高的CKA+CKS證書! 
          神器 Nginx 的學(xué)習(xí)手冊(cè) ( 建議收藏 )
          運(yùn)維必備的DevOps工具鏈大盤點(diǎn)
          大規(guī)模微服務(wù)利器:eBPF 與 Kubernetes
          互聯(lián)網(wǎng)公司使用 Redis 的16個(gè)應(yīng)用場(chǎng)景
          Nginx配置中一個(gè)不起眼字符"/"的巨大作用,失之毫厘謬以千里
          企業(yè)級(jí)日志系統(tǒng) ELK 原理與實(shí)踐詳細(xì)介紹
          編寫 Dockerfile 最佳實(shí)踐
          運(yùn)維工程師不得不看的經(jīng)驗(yàn)教訓(xùn)和注意事項(xiàng)
          終于搞懂了服務(wù)器為啥產(chǎn)生大量的TIME_WAIT!
          Kubernetes 網(wǎng)絡(luò)方案之炫酷的 Cilium
          12年資深運(yùn)維老司機(jī)的成長(zhǎng)感悟
          搭建一套完整的企業(yè)級(jí) K8s 集群(v1.20,kubeadm方式)



          點(diǎn)亮,服務(wù)器三年不宕機(jī)

          瀏覽 105
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产激情精品视频 | 国产乱论视频 | 精品色在线 | 第14色网站 | 日本欧洲三级 |