- OpenShift在企業(yè)中的實踐:PaaS DevOps微服務(wù)(第2版)
- 魏新宇 郭躍軍
- 1661字
- 2021-11-05 10:17:12
2.1.4 OpenShift對Kubernetes生態(tài)的延伸
OpenShift對Kubernetes生態(tài)的延伸主要體現(xiàn)在七個方面,我們接下來分別介紹這七個方面。
1.OpenShift實現(xiàn)了與CI/CD工具的完美集成
目前OpenShift Pipeline默認使用Tekton。Tekton是一個功能強大且靈活的Kubernetes原生開源框架,用于創(chuàng)建持續(xù)集成和交付(CI/CD)。通過抽象底層實現(xiàn)細節(jié),用戶可以跨多云平臺和本地系統(tǒng)進行構(gòu)建、測試和部署。
Tekton將許多Kubernetes自定義資源(CR)定義為構(gòu)建塊,這些自定義資源是Kubernetes的擴展,允許用戶使用Kubectl和其他Kubernetes工具創(chuàng)建這些對象并與之交互。
雖然OpenShift默認使用Tekton實現(xiàn)Pipeline,但OpenShift會繼續(xù)發(fā)布并支持與Jenkins的集成。OpenShift與Jenkins的集成,體現(xiàn)在以下幾個方面:
·統(tǒng)一認證:OpenShift和部署在OpenShift中的Jenkins實現(xiàn)了SSO。根據(jù)OpenShift用戶在Project中的角色,可以自動映射與之匹配的Jenkins角色(view、edit或admin)。
·OpenShift提供四個版本的Jenkins:默認已經(jīng)提供了一鍵部署Jenkins的四個模板,如圖2-4所示。

圖2-4 四種類型的Jenkins模板
·自動同步Secret:在同一個項目中,OpenShift的Secret與Jenkins憑證自動同步,以便Jenkins可以使用用戶名/密碼、SSH密鑰或Secret文本,而不必在Jenkins中單獨創(chuàng)建。
·Pipeline的集成:可以在Jenkins中定義Pipeline來調(diào)用OpenShift API,完成一些應(yīng)用構(gòu)建和發(fā)布等操作。
2.OpenShift實現(xiàn)開發(fā)運維一體化
在Kubernetes剛發(fā)布時,紅帽主要想借助Kubernetes構(gòu)建企業(yè)級開發(fā)平臺。為了全面提升OpenShift的運維能力,紅帽收購CoreOS,將其中優(yōu)秀的運維工具納入OpenShift中。CoreOS麾下能大幅提升OpenShift運維能力的組件有:
·Tectonic:企業(yè)級Kubernetes平臺。
·Container Linux:適合運行容器負載的Linux操作系統(tǒng)CoreOS。
·Quay:企業(yè)級鏡像倉庫。
·Operator:有狀態(tài)應(yīng)用的生命周期管理工具。
·Prometheus:容器監(jiān)控平臺。
CoreOS在Prometheus社區(qū)建立了領(lǐng)導(dǎo)地位,這為紅帽帶來了寶貴的專業(yè)知識。紅帽O(jiān)penShift也逐步與CoreOS完成整合。
·在監(jiān)控方面,Prometheus成為默認的監(jiān)控工具,提供了原生的Prometheus監(jiān)控、警報和集成的Grafana儀表板。
·在運維管理方面,OpenShift將CoreOS Tectonic控制臺的功能完全融入OpenShift中,提供運維能力很強的Cluster Console。
·操作系統(tǒng)CoreOS作為OpenShift的宿主機操作系統(tǒng)。
·將Operator作為集群組件和容器應(yīng)用的部署方式。
·Quay正在與OpenShift進行最后的集成。后面OpenShift的Docker Registry可以由Quay替代。
3.OpenShift實現(xiàn)有狀態(tài)應(yīng)用的全生命周期管理
CoreOS推出了在Kubernetes上管理應(yīng)用的新方——perator。Operator擴展了Kubernetes API,它可以配置和管理復(fù)雜的、有狀態(tài)應(yīng)用程序的實例。如今,Operator能夠管理的應(yīng)用類型越來越多。
Operator為什么這么重要?這是因為我們在Kubernetes上運行復(fù)雜的有狀態(tài)應(yīng)用程序(如數(shù)據(jù)庫、中間件和其他服務(wù))通常需要特定于該應(yīng)用領(lǐng)域的知識。Operator允許將領(lǐng)域知識編程到代碼中,以便使每個應(yīng)用能夠自我管理,主要利用Kubernetes API和聲明性管理功能來實現(xiàn)這一目標。Operator可以實現(xiàn)跨混合云的應(yīng)用生命周期統(tǒng)一管理。
OpenShift提供一個非常方便的“容器應(yīng)用商店”:OperatorHub。OperatorHub提供了一個Web界面,用于發(fā)現(xiàn)和發(fā)布遵循Operator Framework標準的Operator。開源Operator和商業(yè)Operator都可以發(fā)布到OperatorHub。截至目前,OperatorHub中的應(yīng)用數(shù)量超過200個,如圖2-5所示。

圖2-5 OperatorHub應(yīng)用概覽
4.OpenShift實現(xiàn)了對IaaS資源的管理
Kubernetes雖然對運行在其上的容器化應(yīng)用有較強的管理能力,但Kubernetes缺乏對Kubernetes下的基礎(chǔ)設(shè)施進行管理的能力。為了實現(xiàn)PaaS對基礎(chǔ)架構(gòu)的納管,OpenShift引入Machine API,通過配置MachineSet實現(xiàn)IaaS和PaaS統(tǒng)一管理。也就是說,當OpenShift集群性能不足的時候,自動將基礎(chǔ)架構(gòu)資源加入OpenShift集群中。目前OpenShift實現(xiàn)了對AWS EC2、微軟Azure、Red Hat OpenStack等云平臺的納管。
5.OpenShift實現(xiàn)集群實時更新
安裝Kubernetes集群后,一個重大挑戰(zhàn)是讓它們保持最新狀態(tài)。CoreOS率先推出了Tectonic和Container Linux的“over the air updates”概念。通過這個技術(shù),客戶能夠?qū)penShift集群連接到紅帽官網(wǎng),這樣客戶就可以收到有關(guān)新版本和關(guān)鍵更新的自動通知。如果客戶的OpenShift集群不能連接紅帽官網(wǎng),客戶仍然可以從本地鏡像倉庫下載和安裝相同的更新。
OpenShift的主機操作系統(tǒng)基于CoreOS,將提供平滑升級的能力。
6.OpenShift通過Istio實現(xiàn)新一代服微服務(wù)架構(gòu)
紅帽為上游Istio社區(qū)做出貢獻,并在OpenShift上發(fā)布企業(yè)級Istio。Istio通過Envoy為微服務(wù)添加輕量級分布式代理來管理對服務(wù)的請求。在OpenShift 4.2上的Red Hat Istio已經(jīng)正式發(fā)布,Istio也將是本書著重介紹的一部分內(nèi)容。
7.OpenShift實現(xiàn)Serverless
Knative是一種支持Kubernetes的Serverless架構(gòu)。紅帽是Knative開源項目的貢獻者,紅帽希望基于OpenShift實現(xiàn)開放的混合無服務(wù)器功能(FaaS)。如今,AWS Lambda等FaaS解決方案通常僅限于單一云環(huán)境。紅帽的目標是與Knative、OpenWhisk社區(qū)以及其他的FaaS提供商合作,為開發(fā)人員在混合的多云基礎(chǔ)架構(gòu)中構(gòu)建應(yīng)用程序提供無服務(wù)器功能。
在介紹了OpenShift與Kubernetes之間的關(guān)系后,接下來將從企業(yè)使用的視角逐步展開說明OpenShift的各部分架構(gòu)。
- 高手是如何做產(chǎn)品設(shè)計的(全2冊)
- Cocos2D-X權(quán)威指南(第2版)
- The Android Game Developer's Handbook
- Mastering Natural Language Processing with Python
- Koa開發(fā):入門、進階與實戰(zhàn)
- 深入理解Java7:核心技術(shù)與最佳實踐
- Mastering Unity Shaders and Effects
- Hands-On Microservices with Kotlin
- QGIS:Becoming a GIS Power User
- 網(wǎng)站構(gòu)建技術(shù)
- Mastering React
- C專家編程
- Android群英傳
- Hands-On Nuxt.js Web Development
- Bootstrap for Rails