保險行業(yè)容器云PaaS平臺建設(shè)實(shí)踐經(jīng)驗分享


【作者】郭鴻,某保險集團(tuán)容器云及DevOps工程效能團(tuán)隊負(fù)責(zé)人。
一、建設(shè)背景
全面上云和朝云端遷移將成為趨勢,當(dāng)前保險行業(yè)的一個普遍共識之一就是通過科技驅(qū)動引領(lǐng)企業(yè)進(jìn)行數(shù)字化轉(zhuǎn)型升級。傳統(tǒng)的虛擬化技術(shù),在資源使用率、靈活性和彈性方面提升度并不高,因此云計算、大數(shù)據(jù)、AI技術(shù),成為各企業(yè)的重點(diǎn)建設(shè)領(lǐng)域,在引領(lǐng)全面面向云原生技術(shù)建設(shè)方向,主要覆蓋彈性計算、AI+GPU、邊緣計算、Serveless等主流架構(gòu),我司從技術(shù)上選取主流K8S平臺,在技術(shù)底座的基礎(chǔ)運(yùn)維保障上引入SRE,科學(xué)的提高系統(tǒng)可用性,提高資源利用率,降低總體TCO的同時,為上層應(yīng)用的創(chuàng)新、快速迭代和穩(wěn)定運(yùn)行提供有效支撐。在微服務(wù)、DevOps、分布式等方面容器虛擬化技術(shù)天生具備優(yōu)勢,因此成為數(shù)據(jù)中心新一代云基礎(chǔ)架構(gòu)的選擇。
1、企業(yè)業(yè)務(wù)應(yīng)用系統(tǒng)分層
企業(yè)軟件開發(fā)的一個發(fā)展階段,簡單點(diǎn)梳理可以為:
企業(yè)的應(yīng)用軟件開發(fā)、設(shè)計、環(huán)境運(yùn)行全部在公司內(nèi)部私有云環(huán)境和數(shù)據(jù)中心;
軟件開發(fā)、設(shè)計、測試等在企業(yè)內(nèi)部,但是最終部署在公有云環(huán)境運(yùn)行;
軟件的開發(fā)、設(shè)計、測試、整個構(gòu)建和部署、持續(xù)集成過程全部在公有云環(huán)境進(jìn)行。

2、基于PaaS平臺的IT架構(gòu)加速企業(yè)業(yè)務(wù)系統(tǒng)敏捷
容器技術(shù)是形成PaaS平臺的新契機(jī)。容器是2016年軟件行業(yè)七大趨勢之首,以Docker為代表的容器技術(shù)是一種輕量級虛擬化技術(shù),實(shí)現(xiàn)應(yīng)用封裝標(biāo)準(zhǔn)化,形成混合云部署標(biāo)準(zhǔn)。
微服務(wù)架構(gòu)引領(lǐng)企業(yè)軟件架構(gòu)的變革,將應(yīng)用分割成一系列細(xì)粒度服務(wù)的應(yīng)用架構(gòu)模式,它與容器成就了企業(yè)應(yīng)用開發(fā)、部署和性能伸縮的敏捷。圍繞企業(yè)業(yè)務(wù)的關(guān)聯(lián)性拆分微服務(wù),使IT敏捷帶動業(yè)務(wù)敏捷。

二、容器云PaaS的建設(shè)目標(biāo)
Kubernetes作為容器編排技術(shù)標(biāo)準(zhǔn)為PaaS技術(shù)演進(jìn),PaaS與IaaS融合提供了基礎(chǔ),云原生為企業(yè)生產(chǎn)環(huán)境運(yùn)行容器應(yīng)用而設(shè)計。
以K8s為技術(shù)核心的容器云PaaS平臺的建設(shè)主要包括:云管平臺建設(shè)、CI/CD對接、容器鏡像(應(yīng)用商城)管理、日志與監(jiān)控對接、應(yīng)用編排、資源調(diào)度、網(wǎng)絡(luò)存儲等。為企業(yè)業(yè)務(wù)提供高可用高性能可伸縮的容器應(yīng)用管理服務(wù),促進(jìn)業(yè)務(wù)價值的快速交付。

三、容器平臺建設(shè)架構(gòu)設(shè)計及實(shí)踐經(jīng)驗
1、技術(shù)選型
我們從2019年年初開始進(jìn)行技術(shù)調(diào)研,候選的產(chǎn)品包括:Kubersphere 、RancherLab、Kubernetes、OpenShift。我們對每個方案都進(jìn)行了深度的預(yù)研究和技術(shù)評估,最終選擇了OpenShift。
選擇OpenShift的原因,主要是OpenShift是一個私有的基于Kubernetes的企業(yè)級PaaS(Platform-as-a-Service)解決方案,主要用來在容器中搭建、部署以及運(yùn)行應(yīng)用程序。對于當(dāng)初容器技術(shù)及人員儲備還處于起步階段的我們來說,建設(shè)周期相對較短,在引入平臺并且進(jìn)行落地定制的過程中可以參考同類企業(yè)的應(yīng)用案例。

2、OpenShift組件架構(gòu)
OpenShift 的核心組件包括Master節(jié)點(diǎn)、Node節(jié)點(diǎn)、容器倉庫(Container Registry)、路由層(Routing Layer)、服務(wù)層(Service Layer)、Web Console和CLI。?
各組件之間的層級關(guān)系如下圖所示:

3、技術(shù)支撐
容器云PaaS,是基于 Kubernetes(OpenShift) 構(gòu)建的分布式、多租戶、企業(yè)級容器管理平臺,做為下一代云計算技術(shù),對支撐我司數(shù)字化轉(zhuǎn)型和新技術(shù)研究有重要意義。
l企業(yè)級PaaS平臺能力:高可用集群,彈性伸縮,多租戶安全隔離;
l高效開發(fā)運(yùn)維能力:物理機(jī)直接部署,完善的運(yùn)維和監(jiān)控體系;
lDevOps能力:CI / CD 、微服務(wù)治理、應(yīng)用管理等功能,快速構(gòu)建、部署及運(yùn)維容器架構(gòu),實(shí)現(xiàn)應(yīng)用的敏捷開發(fā)與全生命周期管理。

4、技術(shù)堆棧
容器云PaaS平臺涉及的技術(shù)棧主要包括:webconsole、GitLab CI、K8s、ETCD、CRI-O等?;诘讓拥募t帽CoreOS操作系統(tǒng)運(yùn)行OpenShift的核心組件功能。

5、邏輯架構(gòu)
容器云PaaS平臺是一套對容器化應(yīng)用進(jìn)行管理的分布式平臺,可以提供高可用、高性能、可伸縮的容器應(yīng)用管理服務(wù)。底層是基礎(chǔ)設(shè)施資源層,包括主機(jī)計算節(jié)點(diǎn)、網(wǎng)絡(luò)、存儲等資源共同構(gòu)建的容器集群。
整體邏輯架構(gòu)設(shè)計如下:運(yùn)維人員針對容器集群內(nèi)的基礎(chǔ)節(jié)點(diǎn)、控制節(jié)點(diǎn)以及計算節(jié)點(diǎn)的調(diào)度管理(比如資源分配、限額、調(diào)度管理等)進(jìn)行整體架構(gòu)設(shè)計以及運(yùn)維管理,開發(fā)人員通過GitLab提交代碼后,CICD流水線打包構(gòu)建鏡像部署到容器集群。
同時,遵從我司的IT技術(shù)規(guī)范和運(yùn)維要求,容器云PaaS平臺對接的系統(tǒng)主要包括LDAP統(tǒng)一身份驗證平臺、統(tǒng)一日志平臺、統(tǒng)一監(jiān)控及告警平臺、DevOps平臺、云管平臺、現(xiàn)有網(wǎng)絡(luò)架構(gòu)、對象存儲、堡壘機(jī)等。

6、容器集群部署流程
當(dāng)前容器集群部署流程如下圖所示:流水線從GitLab拉取代碼進(jìn)行CICD過程(支持兩種方式:Jenkins流水線、GitLab CI)生成制品,構(gòu)建鏡像,部署(部署支持三種方式:Helm部署、手動部署、GitLab部署)到容器集群。

7、容器云PaaS平臺與內(nèi)部DevOps平臺
目前集團(tuán)內(nèi)部存在DevOps平臺和容器云PaaS平臺。
根據(jù)實(shí)際業(yè)務(wù)場景進(jìn)行應(yīng)用劃分,DevOps平臺主要用于支持傳統(tǒng)虛擬機(jī)的自動化部署(以Jenkins pipeline為底座,流水線部署到傳統(tǒng)虛擬機(jī),也可以支持傳統(tǒng)應(yīng)用部署到容器云PaaS),容器云PaaS平臺重點(diǎn)支持云原生應(yīng)用的快速部署(云原生應(yīng)用通過GitLab CI流水線部署到容器云平臺 )。

8、容器云日志收集
當(dāng)前容器平臺的日志輸出進(jìn)行了標(biāo)準(zhǔn)化定義且對接外部日志平臺-ELK統(tǒng)一日志平臺,由日志平臺進(jìn)行運(yùn)行時日志收集。目前也在同步搭建獨(dú)立的可觀測性平臺,進(jìn)行整個DevOps工具鏈鏈條(包括容器云平臺)的日志收集以及指標(biāo)分析展示,同時為我們的AIOps提供基礎(chǔ)支撐。


9、監(jiān)控方案
傳統(tǒng)基于IP的CPU、mem、磁盤等監(jiān)控項不在適用于容器,需針對服務(wù)探針增加健康檢查,主要監(jiān)控包括:集群監(jiān)控、分區(qū)監(jiān)控、節(jié)點(diǎn)監(jiān)控、組件監(jiān)控、應(yīng)用監(jiān)控和Etcd監(jiān)控。容器云平臺Master和Node計算資源(CPU、內(nèi)存、SWAP、磁盤、日志關(guān)鍵字等)通過Zabbix進(jìn)行基礎(chǔ)監(jiān)控,OCP中運(yùn)行的Pod(CPU、內(nèi)存)通過Prometheus進(jìn)行監(jiān)控,相關(guān)監(jiān)控數(shù)據(jù)使用Grafana儀表盤進(jìn)行展示。



10、基礎(chǔ)架構(gòu)
支撐容器云平臺的服務(wù)器有兩種類型,一種是虛擬機(jī),一種是裸金屬服務(wù)器。和虛擬化服務(wù)器相比,裸金屬服務(wù)器(Bare Metal Server)極大地規(guī)避了虛擬化服務(wù)器的性能損失以及嘈雜鄰居效應(yīng)。本質(zhì)上裸金屬服務(wù)器就是物理服務(wù)器,不過又和云服務(wù)的結(jié)合,以達(dá)到云計算的彈性,因此是一種硬件和軟件結(jié)合的產(chǎn)物。
英特爾也曾發(fā)表了一篇文章來定義裸金屬即服務(wù):“裸”,即要求它本身可以提供物理機(jī)級別的性能和安全隔離;“即服務(wù)”則意味著它還能實(shí)現(xiàn)物理機(jī)體驗、以及基于云的資源管理和調(diào)配能力的高度融合。選擇裸金屬服務(wù)器還是虛擬機(jī),由數(shù)據(jù)中心的實(shí)際情況而定。由于應(yīng)用系統(tǒng)種類不一,對基礎(chǔ)設(shè)施的資源需求也不一樣,例如偏計算型就需要更多CPU,而裸金屬服務(wù)器可靈活配置和維護(hù)。
同時,裸金屬部署也是一種趨勢的容器部署方案,有更好性能,更能充分發(fā)揮容器技術(shù)優(yōu)勢。恰如來自Twitter的OCI(開放容器標(biāo)準(zhǔn))執(zhí)行董事Chris Aniszczyk曾提到的,“如果比較那些來自CNCF和OCI的使容器更加標(biāo)準(zhǔn)化的項目,你會發(fā)現(xiàn)它們確實(shí)更容易在裸金屬上運(yùn)行。我認(rèn)為一段時間后你將看到更多的使用裸金屬的容器,因為相比一個非常復(fù)雜的OpenStack環(huán)境,它確實(shí)更容易在裸金屬環(huán)境中創(chuàng)建?!?/span>
綜合考慮下,容器云平臺選擇裸金屬服務(wù)器部署。裸金屬容器部署的兼顧優(yōu)勢無法通過部分硬件或軟件的更新?lián)Q代能實(shí)現(xiàn),需要從整體架構(gòu)入手,包括計算、存儲和網(wǎng)絡(luò)硬件的選擇、搭配和平衡,再到基礎(chǔ)設(shè)施管理和應(yīng)用層軟件的開發(fā)和調(diào)優(yōu),到最后平臺的部署和運(yùn)維方式優(yōu)化,都要考慮到位。在基礎(chǔ)設(shè)施選型時,考慮硬件成本固然很重要,但這只是整體性能和性價比的一部分,選對生態(tài)系統(tǒng)很關(guān)鍵。英特爾?至強(qiáng)?可擴(kuò)展處理器架構(gòu)是當(dāng)前廣泛應(yīng)用在云計算場景上的處理器架構(gòu),其廣泛的可用性為客戶提供了關(guān)鍵業(yè)務(wù)應(yīng)用程序所需的一致性和可靠性。
隨著容器云技術(shù)的日趨標(biāo)準(zhǔn)以及生態(tài)日趨成熟,容器云向上發(fā)展更多聚焦于微服務(wù)化應(yīng)用的設(shè)計和實(shí)現(xiàn);向下發(fā)展更多利用IA新硬件平臺特性,通過標(biāo)準(zhǔn)化的接口適配更多的計算、存儲、網(wǎng)絡(luò)方案。英特爾近年來推出的一系列基于IA新硬件特性的計算、存儲、網(wǎng)絡(luò)、安全解決方案,賦能容器云不斷助力企業(yè)降本增效,成功完成數(shù)字化轉(zhuǎn)型。
英特爾也在和紅帽積極構(gòu)建一體化解決方案,兩家公司針對多云架構(gòu)下云原生參考架構(gòu)中參考如下:

容器云裸金屬服務(wù)器采用的是Dell PowerEdge R740,處理器是英特爾?至強(qiáng)?金牌[email protected]及以上保障處理性能。


四、應(yīng)用場景的實(shí)踐
1、業(yè)務(wù)應(yīng)用使用GitLab CI 部署到OpenShift 的云原生改造全過程實(shí)例
1)業(yè)務(wù)應(yīng)用技術(shù)債改進(jìn)
除了代碼,技術(shù)文檔、工具配置、數(shù)據(jù)庫腳本、CI 等盡量統(tǒng)一使用源代碼管理。
能夠用工具、自動化解決的問題不要簡單依賴文檔、口口相傳。
在開發(fā)環(huán)境盡量減少外部依賴,方便環(huán)境搭建。
開發(fā)框架、技術(shù)棧升級,償技術(shù)債。
之后才是具體的云原生改造點(diǎn)。
2)云原生改造,關(guān)鍵動作包括:
創(chuàng)建 Dockerfile 用于構(gòu)建應(yīng)用的容器鏡像。
創(chuàng)建 Helm Chart 用于部署到 OpenShift。
創(chuàng)建 .gitlab-ci.yml 用于自動化以上工作。
具體的改造過程如下圖所示:


通過GitLab CI流水線進(jìn)行容器化部署如下圖所示:

2、可觀測性平臺搭建:
1)技術(shù):
基于微服務(wù)技術(shù):Thanos +Loki+Minio;
2)可觀測性平臺的建設(shè)目標(biāo):
集中式日志中心(將日志標(biāo)準(zhǔn)化輸出和統(tǒng)一存儲),統(tǒng)一分析。統(tǒng)一展示和多維關(guān)聯(lián)(形成統(tǒng)一的監(jiān)控視圖,并可根據(jù)主題做關(guān)聯(lián)分析)。
3)整體設(shè)計框架:

4)可觀測性平臺部署架構(gòu):
LB 為外部部署,主要用于 SSL Termination。由于 LB 是外部控制,因此使用 Nginx 自主配置分發(fā)到多個服務(wù)。Nginx 直接連接了 Prometheus、Thanos Querier 實(shí)例暴露相應(yīng) WebUI。
使用 OAuth2 Proxy 作為 Prometheus 等未內(nèi)置權(quán)限管理的應(yīng)用的代理,采用 Sidecar 模式。
以上的 Prometheus 主要是監(jiān)控 DevOps 產(chǎn)品鏈如 GitLab、JFrog、Jenkins 等,OCP 有自己的 Prometheus,兩個 Prometheus 實(shí)例抓取同樣的數(shù)據(jù)。

5)Thanos
Thanos聚合Prometheus多數(shù)據(jù)源并進(jìn)行自動去重后,給用戶提供多維數(shù)據(jù)查看。


6)Loki
通過Loki獲取日志,在grafana上進(jìn)行展示。

7)Prometheus監(jiān)控展示

可觀測性平臺會從DevOps工具鏈(GitLab、Jenkins、Sonar、Jfrog)及OpenShift容器平臺收集所有日志信息,并且設(shè)計相應(yīng)的指標(biāo),最終通過可觀測性平臺進(jìn)行展示,交付給用戶進(jìn)行服務(wù)狀態(tài)查看,日志信息查詢,幫助問題排查診斷,提升平臺整體運(yùn)維體驗。
五、業(yè)務(wù)效果
當(dāng)前某些核心應(yīng)用(比如集團(tuán)三大APP之一的重點(diǎn)業(yè)務(wù)APP,子公司的部分to C應(yīng)用,集團(tuán)的內(nèi)部管理類系統(tǒng)等)已經(jīng)跑在容器云,快速交付尤其在業(yè)務(wù)節(jié)點(diǎn)期間容器云幫助業(yè)務(wù)應(yīng)用實(shí)現(xiàn)快速伸縮容優(yōu)勢充分發(fā)揮了優(yōu)勢。比如從之前業(yè)務(wù)跑在傳統(tǒng)虛擬上是業(yè)務(wù)節(jié)點(diǎn)期間遇到未可期的擴(kuò)容可能會出現(xiàn)擴(kuò)容前業(yè)務(wù)擁堵,擴(kuò)容過程中業(yè)務(wù)等待等情況。接入容器云之后實(shí)現(xiàn)了資源的自助秒級獲取,獲取可用資源從之前的4h(最理想情況)降到了秒級。同時使用GitLab CI進(jìn)行部署可以實(shí)現(xiàn)快速回滾,保障業(yè)務(wù)的連續(xù)性和可用性。
在基礎(chǔ)架構(gòu)層面,選擇裸金屬部署,可以避免損耗提高資源的利用率,提升 ROI ,同時通過英特爾?至強(qiáng)?可擴(kuò)展處理器、英特爾?傲騰?持久內(nèi)存等技術(shù),更高效地利用硬件級別的創(chuàng)新,加速計算、降低延遲,實(shí)現(xiàn)PaaS平臺整體交付效能大大提升。
六、挑戰(zhàn)及展望
我們在容器云建設(shè)推廣、遷移過程中面臨的最大挑戰(zhàn)來自于技術(shù)人員的理念轉(zhuǎn)變,容器技術(shù)改變了軟件交付的生態(tài),需要技術(shù)人員以新的理念構(gòu)建應(yīng)用,所以我們花了大量的時間精力在對技術(shù)人員進(jìn)行云原生理念的宣導(dǎo)培養(yǎng),然后篩選適合的業(yè)務(wù)應(yīng)用進(jìn)行云原生改造。? 后續(xù)我們將逐步推動微服務(wù)架構(gòu)引入,實(shí)現(xiàn)應(yīng)用架構(gòu)和基礎(chǔ)架構(gòu)轉(zhuǎn)型,持續(xù)推動三大APP逐步接入容器平臺。
容器云PaaS平臺的建設(shè)是涵蓋應(yīng)用、軟件和基礎(chǔ)設(shè)施多類型技術(shù)棧的創(chuàng)新項目。關(guān)鍵業(yè)務(wù)容器化決策時,對整體架構(gòu)設(shè)計會更為審慎,需要重視對基礎(chǔ)設(shè)施資源的評估與選型。


