在AWS中部署OpenShift平台
OpenShift是RedHat出品的PAAS平臺(tái)。OpenShift做為PAAS平臺(tái)最大的特點(diǎn)是它是完全容器化的PAAS平臺(tái),底層封裝了Docker和Kubernetes,上層暴露了對(duì)開發(fā)者友好的接口來(lái)完成對(duì)應(yīng)用程序的集成、部署、彈性伸縮等任務(wù)。
Docker提供了對(duì)打包和創(chuàng)建基于Linux的輕量級(jí)容器的抽象。而Kubernetes提供了多主機(jī)集群管理和Docker容器編排。OpenShift基于Docker和Kubernetes加入了新的功能:
- 源代碼管理、構(gòu)建和部署
- 在系統(tǒng)中集成鏡像的管理
- 按需擴(kuò)展的應(yīng)用程序管理
- 在大型開發(fā)者組織中進(jìn)行團(tuán)隊(duì)管理和用戶追蹤
OpenShift直接提供支持的應(yīng)用程序鏡像有:
OpenShift直接提供支持的數(shù)據(jù)庫(kù)鏡像有:
除此之外,OpenShift還讓你通過(guò)一鍵點(diǎn)擊便生成相應(yīng)的應(yīng)用,比如幾秒之內(nèi)搭建好一個(gè)Jenkins服務(wù)。包括以下:
OpenShift架構(gòu)概覽
從上圖可以看出,OpenShift的典型用戶分為兩種,開發(fā)人員和運(yùn)維人員。開發(fā)人員可以通過(guò)現(xiàn)有的代碼管理工具和持續(xù)集成、交付工具利用OpenShift完成對(duì)應(yīng)用程序的打包、部署、擴(kuò)容操作。而運(yùn)維人員可以利用現(xiàn)有的自動(dòng)化工具實(shí)現(xiàn)對(duì)OpenShift平臺(tái)的維護(hù)。
OpenShift中的Kubernetes用來(lái)管理跨宿主機(jī)(或容器)的容器化應(yīng)用程序,并提供部署、維護(hù)和應(yīng)用程序擴(kuò)容機(jī)制。對(duì)于一個(gè)Kubernetes集群來(lái)說(shuō),它包括一個(gè)或多個(gè)master以及一組node。
Master主機(jī)托管了API服務(wù)器、controller manager服務(wù)器以及etcd實(shí)例。Master管理Kubernetes集群中的節(jié)點(diǎn)并控制運(yùn)行在節(jié)點(diǎn)上的pod。
Node則提供了容器的運(yùn)行時(shí)環(huán)境。Kubernetes節(jié)點(diǎn)中的每個(gè)node會(huì)運(yùn)行受Master管理的服務(wù),當(dāng)然也包括Docker、Kubelet及serverice proxy服務(wù)。node可以為云機(jī)器、物理系統(tǒng)或者虛擬系統(tǒng)。Kubelet用來(lái)更新node上的運(yùn)行的容器狀態(tài)。Service Proxy用于運(yùn)行一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)代理,來(lái)反映定義在node的API中的服務(wù),從而使node可以跨后端進(jìn)行簡(jiǎn)單的TCP和UDP流轉(zhuǎn)發(fā)。
OpenShift架設(shè)要求
如果想自己架設(shè)OpenShift平臺(tái)作為商業(yè)用途,必須要獲取OpenShift Enterprise的付費(fèi)訂閱。目前OpenShift Enterprise的最新版本為3.6版。對(duì)于Master和Node節(jié)點(diǎn)的系統(tǒng)要求如下。
Master:
- 物理或虛擬機(jī),或者運(yùn)行于公有云或私有云之上的實(shí)例
- 基礎(chǔ)操作系統(tǒng)為Red Hat企業(yè)版Linux(RHEL)7.1,并包含最小的安裝選項(xiàng)
- 2核CPU
- 最小8GB內(nèi)存
- 最小30GB硬盤空間
Node:
- 物理或虛擬機(jī),或者運(yùn)行于公有云或私有云之上的實(shí)例
- 基礎(chǔ)操作系統(tǒng)為Red Hat企業(yè)版Linux(RHEL)7.1,并包含最小的安裝選項(xiàng)
- Docker 1.6.2及以上版本
- 1核CPU
- 最小8GB內(nèi)存
- 最小15GB硬盤空間
- 另外最小15GB的未分配空間,需要通過(guò)docker-storage-setup進(jìn)行配置
環(huán)境要求:
- 需要一個(gè)DNS zone來(lái)解析OpenShift router的IP地址。比如*.cloudapps.example.com. 300 IN A 192.168.133.2
- Master和Node之間必須要有共享的網(wǎng)絡(luò),兩者之間可以互相通訊。
- 需要一個(gè)Git Server和能夠訪問(wèn)該Server的賬號(hào)。
AWS中部署OpenShift平臺(tái)
下圖是一個(gè)在AWS中的OpenShift集群的示例。
Master節(jié)點(diǎn):包含3個(gè)Master實(shí)例,實(shí)現(xiàn)高可用,上面運(yùn)行etcd、通過(guò)一個(gè)external load balancer向外暴露服務(wù)。
Infra Node: 由三個(gè)實(shí)例組成,這三個(gè)實(shí)例用來(lái)運(yùn)行支撐OpenShift集群服務(wù)的一系列容器。
App Node:用于運(yùn)行應(yīng)用程序容器的實(shí)例,可以按需進(jìn)行擴(kuò)展。
Bastion:用于限制對(duì)集群中實(shí)例的ssh訪問(wèn),增強(qiáng)安全性。
存儲(chǔ):OpenShift使用EBS作為實(shí)例的文件系統(tǒng)并用于持久化容器的存儲(chǔ);另外還使用S3這個(gè)對(duì)象存儲(chǔ)服務(wù)作為OpenShift registry的存儲(chǔ)。 ELB:總共有三個(gè).一個(gè)用來(lái)在集群外訪問(wèn)OpenShift API、OpenShift console。一個(gè)在集群內(nèi)訪問(wèn)OpenShift API。另一個(gè)用來(lái)訪問(wèn)通過(guò)route暴露的部署在集群中的應(yīng)用程序服務(wù)。最后通過(guò)AWS的Route53來(lái)管理DNS。
部署OpenShift集群的三個(gè)階段
在AWS中部署OpenShift集群包括三個(gè)階段:
- 第一階段:在AWS中設(shè)置好基礎(chǔ)設(shè)施
- 第二階段: 在AWS上部署OpenShift Container平臺(tái)
- 第三階段: 部署后的環(huán)境檢查
關(guān)于整個(gè)部署活動(dòng)絕大多數(shù)都是可以自動(dòng)化的。RedHat提供了一個(gè)GitHub repo:openshift-ansible-contrib。openshift-ansible-contrib提供了將OpenShift集群部署到不同的Cloud供應(yīng)商的解決方案,當(dāng)然也包括了AWS。里面包含了相應(yīng)的文檔、代碼以及腳本。RedHat提供了一個(gè)叫做openshift-ansible-playbooks的RPM包,openshift-ansible-contrib利用該RPM包來(lái)完成階段1和階段2,在階段3中我們可以利用一些現(xiàn)有的腳本工具實(shí)現(xiàn)環(huán)境檢查和認(rèn)證。
對(duì)AWS環(huán)境的要求
選擇部署的AWS區(qū)域需要至少有三個(gè)可用區(qū)以及2個(gè)EIP。該OpenShift平臺(tái)需要新建三個(gè)公共子網(wǎng)和三個(gè)私有子網(wǎng)。 由于需要新建一大批的AWS資源,所以必須要提供一個(gè)有適當(dāng)權(quán)限的AWS用戶,包括創(chuàng)建賬號(hào)、使用S3、Route53、ELB、EC2等。
六個(gè)子網(wǎng)需要在一個(gè)VPC中。Ansible腳本會(huì)建立一個(gè)NAT Gateway用來(lái)供內(nèi)部的EC2實(shí)例訪問(wèn)外網(wǎng)。同時(shí)也會(huì)建立8個(gè)Security Groups來(lái)限制不同的實(shí)例、ELB和外部網(wǎng)絡(luò)間的訪問(wèn)。
openshift-ansible-contrib提供了部署基礎(chǔ)設(shè)施、安裝和配置OpenShift以及擴(kuò)展router和registry的功能。運(yùn)行Ansible的機(jī)器必須是RHEL7操作系統(tǒng)。具體的安裝過(guò)程可參見(jiàn)https://access.redhat.com/documentation/en-us/reference_architectures/2017/html/deploying_openshift_container_platform_3.5_on_amazon_web_services/deploying_openshift%E3%80%82
安裝完畢后的環(huán)境檢查可以參見(jiàn)https://access.redhat.com/documentation/en-us/reference_architectures/2017/html/deploying_openshift_container_platform_3.5_on_amazon_web_services/operational-management%E3%80%82
總結(jié)
在AWS上部署OpenShift平臺(tái)并不是一件輕松的事情,一方面需要對(duì)AWS的各種服務(wù)了如執(zhí)掌,一方面也需要對(duì)OpenShift的架構(gòu)和核心概念有所了解。雖然RedHat提供了一些Ansible腳本和RPM包來(lái)簡(jiǎn)化安裝,但整個(gè)過(guò)程也絕非一片坦途。安裝完備之后,如何和企業(yè)現(xiàn)有的應(yīng)用程序開發(fā)流程、持續(xù)交付流水線結(jié)合起來(lái)無(wú)縫過(guò)度,也是一件非??简?yàn)人的事情。下一篇文章會(huì)對(duì)這些方面進(jìn)行揭秘。
總結(jié)
以上是生活随笔為你收集整理的在AWS中部署OpenShift平台的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pfSense 2.4.0-RC版发布了
- 下一篇: 从源编译MySQL