DevOps助力雲原生應用開發實戰分享

2021-09-22 20:27:19 字數 2634 閱讀 1388

cloud foundry 是業界比較「資深」的paas雲平台,它不僅支援多種框架、執行時環境,還支援在多種雲環境進行部署,包括:aws, azure, gcp, openstack等。本文分享,基於阿里雲進行開發、運維的實戰經驗。

部署cloud foundry首先要用到的工具是bosh。bosh是用來部署和管理cloud foundry集群的工具。 它定義了一系列管理和操作雲資源的介面cloud provider inte***ce,各個雲廠商需要適配自己的provider,這就是本文的開發背景。為了讓大家對bosh和cpi有乙個感性的認識,下面簡要的介紹幾個相關概念。

bosh的元件結構如上圖所示, 這裡簡單說明一下,詳細說明見官方文件

director會解析部署命令和模板,然後呼叫cpi模組去建立vm(ecs)例項,例項資訊會寫到registry上。

每個vm上裝有agent負責與bosh互動,包括:處理director下發的任務、上報vm的健康狀態等。

agent從registry拿到當前vm的資訊,包括:id, ip等。

director/hm和vm之間的通訊是通過nats發布和訂閱訊息。

重點:這裡的開發任務就是實現阿里雲cpi provider。

bosh alicloud cpi是阿里雲對cpi go版本的實現,目前已開源,歡迎試用。

alicloud cpi實現了對雲資源以及cloud foundry生命週期的管理,元件結構如下圖:

cpi這一層的職責比較規整,包括:模板解析、引數校驗、api呼叫、容錯與重試、返回值加工。不過,完美整合到bosh中並高成功率的部署集群是一件很複雜的事兒,需要大量的驗證和測試。

cpi provider開發流程分為: **實現、code review, 單元測試,整合測試,部署bosh驗證cpi,部署cloud foundry集群,在集群上部署應用。

專案特點如下:

從事開源專案開發的小團隊,沒有專門的運維同學,天然的開發即運維。

立項之初組內沒有cloud foundry的專家,需要快速的交付到社群去驗證,得到反饋之後快速的進行迭代。

cloud foundry的部署極其複雜,走一次部署流程消耗大量的人力和時間成本。需要用工具來加快開發和迭代部署的速度,減少重複的手工成本。

為了保證**質量的前提下快速的進行迭代開發、構建、測試、部署,那麼就需要一套實踐方法來支撐整個流程。

cloud foundry社群提供了concourseci pipeline支援各個模組的ci/cd流程, 當然這裡也可以選擇其他方案,比如:阿里雲的codepipeline。

所謂pipeline就是一系列手工工作的集合,這裡包括:單元測試、構建release包、整合測試、驗收測試、端到端測試、發布正式release包。簡單示意圖如下:

每一項任務就是乙個job, 每個job由輸入、輸出和若干task組成。task在執行時會拉取映象、啟動容器、拿到輸入、執行task、輸出結果。

拿一次ci舉例,開發人員提交**到git倉庫,git會觸發webhook通知ci server;ci server會檢查pipelie配置,根據trigger規則觸發對應的job,並下發給ci worker;work解析tasks,拉取docker映象啟動容器,執行task;最後work收集每個task的結果返回給ci server。流程入下圖所示:

接下來介紹一下在cpi pipeline中每個job所負責的內容,對於類似的專案有一定借鑑意義。 cpi pipeline包括5個主要流程,分別是unit test, build candidate, integration test, acceptance test, e2e test。下圖是這5個流程示意圖:

雲原生應用

在峰會的第二天很多企業分享了他們在云原應用方面的實踐和思考。雲原生應用 雲原生是一種方法,用於構建和執行充分利用雲計算模型優勢的應用。雲原生應用充分借助雲計算平台的計算,儲存,網路以及負載均衡等一系列的能力來構建應用。應用本身不用再關注基礎架構,高可用以及服務水平擴充套件等能力,而將重點放在業務本身...

雲原生應用程式 什麼是雲原生應用程式?

雲原生應用程式 在六,七年前雲計算開始大步向前時,人們苦苦掙扎的重要問題之一是 如果我想在公共雲,私有雲或混合雲中執行它們,我的應用程式將是什麼樣子?當時有很多方法可以回答這個問題。乙個流行的隱喻來自比爾 貝克 bill baker 的演講,當時他在微軟。他將傳統應用程式 寵物 與雲應用程式 牛 進...

雲原生的開發理念

雲原生的開發理念體現在敏捷開發和雲原生的價值上 01.敏捷開發 敏捷開發體現的內容 互動,交付,協作,變化.個體與互動,勝過於過程和工具.可以工作的軟體,勝過於面面俱到的文件.客戶協作,勝過於合同談判.響應變化,勝過於遵循計畫.小步快跑,快速迭代,我們怎麼才能實現該目標呢?02.雲原生的價值 交付軟...