為了快速適應(yīng)和滿足市場需求,小而快的應(yīng)用越來越多,“這些零碎的應(yīng)用如何部署、管理?”成為讓大家頭疼的問題。若全部上虛擬機(jī),資源消耗太大。這時,將應(yīng)用容器化,顯然是一個非常不錯的選擇,但很多公司又都面臨著一個同樣的問題,那就是容器化推行難。
目前成都創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、東平網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
容器化推行的過程中,研發(fā)、運(yùn)維學(xué)習(xí)及使用成本都非常高,那有沒有一款簡單易用的平臺呢?
開普勒云平臺是 宜人金科-財(cái)富技術(shù)部 開源的一款基于Kubernetes的應(yīng)用管理解決方案。致力于解決公司的上容器難、上Kubernetes難、運(yùn)維成本高等問題。應(yīng)用只需要加一個非常簡單的Dockerfile文件通過開普勒云臺就能將應(yīng)用部署在Kubernetes上,大大降低了使用的難度。
之前的一篇文章Kubernetes+Docker+Istio 容器云實(shí)踐對開普勒平臺做了一些基本介紹。
經(jīng)過一段時間的調(diào)整,我們終于把這個平臺開源了: https://github.com/kplcloud/kplcloud
開普勒云平臺是一款面向研發(fā)、運(yùn)維等人群的平臺,只需要具備簡單知識就可以快速將應(yīng)用部署到Kubernetes上,以下是平臺的基礎(chǔ)架構(gòu):
開普勒平臺既可以通過容器的方式跑在Kubernetes上,也可以獨(dú)立部署。
在kubernetes master節(jié)點(diǎn)上執(zhí)行即可完成部署,當(dāng)然,在此之前需要增加app.cfg配置文件。
$ git clone github.com/kplcloud/kplcloud && cd kplcloud/
$ kubectl apply -f install/kubernetes/kpaas/
下圖是開普勒云平臺所對接的平臺及流程。
開普勒云平臺通過調(diào)用Jenkins、Gitlab(Github)、Kubernetes等API的方式對應(yīng)用進(jìn)行操作。
將Consul的KV功能作為配置中心來使用,在開普勒云平臺上可以直接調(diào)用Consul API進(jìn)行操作,可以在配置文件決定是否啟用Consul KV功能。
Jenkins目前只擔(dān)任代碼編譯及將Docker鏡像上傳倉庫的功能。開普勒通過調(diào)用JenkinsAPI來創(chuàng)建Job或Build Job,并監(jiān)聽Job狀態(tài)。
開普勒平臺還可調(diào)用Github或Gitlab API獲取項(xiàng)目的分支及需要上線的tags。并將相關(guān)信息傳給jenkins,Jenkins拉取代碼并執(zhí)行相關(guān)構(gòu)建過程。
平臺調(diào)用Kubernetes API的資源及Jenkins API或告警都是以模版的方式進(jìn)行處理,管理員可以根據(jù)自己公司所處的環(huán)境隨意調(diào)整相關(guān)資源的模版。
除了對生產(chǎn)最基本的需求外,還增加了對測試環(huán)境測試人員的需求支持。
開普勒云平臺功能眾多,下面挑幾個大家比較關(guān)心、常用的功能進(jìn)行簡單介紹。(更多的功能介紹請查看文檔https://docs.nsini.com)
創(chuàng)建一個應(yīng)用的流程非常簡單,只需要填寫一些簡單的信息,管理員審核之后就會執(zhí)行構(gòu)建。應(yīng)用升級只需要選擇tags,然后執(zhí)行構(gòu)建就可以完成。
以創(chuàng)建一個Go應(yīng)用為例:
Dockerfile:
FROM golang:latest as build-env
ENV GO111MODULE=on
ENV BUILDPATH=github.com/kplcloud/hello
RUN mkdir -p /go/src/${BUILDPATH}
COPY ./ /go/src/${BUILDPATH}
RUN cd /go/src/${BUILDPATH} && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install -v
FROM alpine:latest
COPY --from=build-env /go/bin/hello /go/bin/hello
WORKDIR /go/bin/
CMD ["/go/bin/hello"]
將以上Dockerfile放入項(xiàng)目目錄,填寫相關(guān)信息:
一個應(yīng)用就創(chuàng)建完成了,管理員審核提交的信息是否合格,不合格便駁回;合格了就直接通過并進(jìn)行部署。
部署應(yīng)用會根據(jù)用戶所提交的信息獲取我們事先定義好的基礎(chǔ)模版,再根據(jù)基礎(chǔ)模版生成Kubernetes所能識別的資源,然后調(diào)用Kubernetes API創(chuàng)建這些資源。創(chuàng)建完成后再調(diào)用Jenkins API創(chuàng)建Job,最后執(zhí)行構(gòu)建。
Jenkins完成構(gòu)建,并將Docker Image 上傳完倉庫之后,開普勒才會更新Kubernetes相關(guān)應(yīng)用的版本。
在這個過程中若想加入更多操作,可以修改JenkinsCommand
模版。
構(gòu)建應(yīng)用的流程是通過創(chuàng)建應(yīng)用提交一些信息進(jìn)行處理。
以上是構(gòu)建應(yīng)用的后端流程,而前端就比較簡單了,只需要在應(yīng)用詳情頁點(diǎn)擊"Build"按鈕,在彈出的對話框中選擇想應(yīng)用的tags版本并提交就行了,如下圖:
點(diǎn)擊詳情頁的build日志選項(xiàng)卡,會顯示最近的構(gòu)建記錄,點(diǎn)擊左側(cè)相應(yīng)的版本,可以查看該版本的構(gòu)建情況,也可以對正在構(gòu)建的應(yīng)用進(jìn)行中斷,如下圖:
我們的日志收集采用的是低耦合、擴(kuò)展性強(qiáng)、方便維護(hù)和升級的方案。
Filebeat會跟應(yīng)用容器部署在一起,應(yīng)用也不需要知道它的存在,只需要指定日志輸入的目錄就可以了。Filebeat所使用的配置是從ConfigMap讀取,只需要維護(hù)好收集日志的規(guī)則。
如果配置了上面的采集器,那么它會向服務(wù)所在的Pod注入一個Filebeat采集器對應(yīng)用服務(wù)的業(yè)務(wù)日志進(jìn)行采集。把采集到的日志注入到kafka集群,然后logstash進(jìn)行消息處理及格式化。
處理完后入到ES集群,最終我們就可以通過kibana查詢到業(yè)務(wù)日志了。
Filebeat容器及filebeat的ConfigMap也可以通過模版的方式進(jìn)行參數(shù)調(diào)整。
應(yīng)用監(jiān)控告警也是非常重要的一個環(huán)節(jié),我們采用Prometheus+Grafana的方案進(jìn)行監(jiān)控,Prometheus+AlertManager進(jìn)行告警的處理。
AlertManager所拋出的告警信息會發(fā)送至開普勒云平臺進(jìn)行處理,若你在平臺訂閱了告警類型的消息則會發(fā)送至所訂閱類型的相關(guān)工具。
我們可以在“個人設(shè)置-消息訂閱設(shè)置”里選擇需要訂閱的類型及接收的工具:
以下是微信接收到的操作通知:
更多的教程請查閱我們提供的文檔。https://docs.nsini.com
Kubernetes集群管理員通過提供不同的存儲類,可以滿足用戶不同的服務(wù)質(zhì)量級別、備份策略和任意策略要求的存儲需求。動態(tài)存儲卷供應(yīng)使用StorageClass來實(shí)現(xiàn),允許存儲卷按需被創(chuàng)建。
如果沒有動態(tài)存儲供應(yīng),Kubernetes集群的管理員將不得不通過手工的方式來創(chuàng)建新的存儲卷。
通過動態(tài)存儲卷,Kubernetes能夠按照用戶的需求,自動創(chuàng)建其需要的存儲。
在菜單找到“配置與存儲”->"持久化存儲卷聲明",選擇應(yīng)用的空間,并點(diǎn)擊“創(chuàng)建”按鈕,先創(chuàng)建一個存儲卷,然后我們找到需要掛載持久化存儲盤應(yīng)用并進(jìn)入詳情頁,找到“持久化存儲”選項(xiàng)卡,掛載剛剛所創(chuàng)建的持久化存儲卷就好了。
開普勒平臺目前已開源,并且已有演示平臺可使用,提供完整文檔供參考。文檔詳細(xì)地介紹了相關(guān)服務(wù)的搭建過程,同時,提供了多種部署方案。
作者:王聰
宜信技術(shù)學(xué)院
分享標(biāo)題:如何快速部署容器化應(yīng)用
網(wǎng)頁路徑:http://www.muchs.cn/article22/ghgsjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、標(biāo)簽優(yōu)化、網(wǎng)站收錄、定制網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)