在AWS中部署OpenShift平臺

OpenShift是RedHat出品的PAAS平臺。OpenShift作爲PAAS平臺最大的特色是它是徹底容器化的PAAS平臺,底層封裝了Docker和Kubernetes,上層暴露了對開發者友好的接口來完成對應用程序的集成、部署、彈性伸縮等任務。html

Docker提供了對打包和建立基於Linux的輕量級容器的抽象。而Kubernetes提供了多主機集羣管理和Docker容器編排。OpenShift基於Docker和Kubernetes加入了新的功能:node

  • 源代碼管理、構建和部署
  • 在系統中集成鏡像的管理
  • 按需擴展的應用程序管理
  • 在大型開發者組織中進行團隊管理和用戶追蹤

OpenShift直接提供支持的應用程序鏡像有:web

OpenShift直接提供支持的數據庫鏡像有:docker

除此以外,OpenShift還讓你經過一鍵點擊便生成相應的應用,好比幾秒以內搭建好一個Jenkins服務。包括如下:數據庫

OpenShift架構概覽

從上圖能夠看出,OpenShift的典型用戶分爲兩種,開發人員和運維人員。開發人員能夠經過現有的代碼管理工具和持續集成、交付工具利用OpenShift完成對應用程序的打包、部署、擴容操做。而運維人員能夠利用現有的自動化工具實現對OpenShift平臺的維護。後端

OpenShift中的Kubernetes用來管理跨宿主機(或容器)的容器化應用程序,並提供部署、維護和應用程序擴容機制。對於一個Kubernetes集羣來講,它包括一個或多個master以及一組node。安全

Master主機託管了API服務器、controller manager服務器以及etcd實例。Master管理Kubernetes集羣中的節點並控制運行在節點上的pod。服務器

Node則提供了容器的運行時環境。Kubernetes節點中的每一個node會運行受Master管理的服務,固然也包括Docker、Kubelet及serverice proxy服務。node能夠爲雲機器、物理系統或者虛擬系統。Kubelet用來更新node上的運行的容器狀態。Service Proxy用於運行一個簡單的網絡代理,來反映定義在node的API中的服務,從而使node能夠跨後端進行簡單的TCP和UDP流轉發。網絡

OpenShift架設要求

若是想本身架設OpenShift平臺做爲商業用途,必需要獲取OpenShift Enterprise的付費訂閱。目前OpenShift Enterprise的最新版本爲3.6版。對於Master和Node節點的系統要求以下。架構

Master:

  • 物理或虛擬機,或者運行於公有云或私有云之上的實例
  • 基礎操做系統爲Red Hat企業版Linux(RHEL)7.1,幷包含最小的安裝選項
  • 2核CPU
  • 最小8GB內存
  • 最小30GB硬盤空間

Node:

  • 物理或虛擬機,或者運行於公有云或私有云之上的實例
  • 基礎操做系統爲Red Hat企業版Linux(RHEL)7.1,幷包含最小的安裝選項
  • Docker 1.6.2及以上版本
  • 1核CPU
  • 最小8GB內存
  • 最小15GB硬盤空間
  • 另外最小15GB的未分配空間,須要經過docker-storage-setup進行配置

環境要求:

  • 須要一個DNS zone來解析OpenShift router的IP地址。好比*.cloudapps.example.com. 300 IN A 192.168.133.2
  • Master和Node之間必需要有共享的網絡,二者之間能夠互相通信。
  • 須要一個Git Server和可以訪問該Server的帳號。

AWS中部署OpenShift平臺

下圖是一個在AWS中的OpenShift集羣的示例。

  • Master節點:包含3個Master實例,實現高可用,上面運行etcd、經過一個external load balancer向外暴露服務。

  • Infra Node: 由三個實例組成,這三個實例用來運行支撐OpenShift集羣服務的一系列容器。

  • App Node:用於運行應用程序容器的實例,能夠按需進行擴展。

  • Bastion:用於限制對集羣中實例的ssh訪問,加強安全性。

  • 存儲:OpenShift使用EBS做爲實例的文件系統並用於持久化容器的存儲;另外還使用S3這個對象存儲服務做爲OpenShift registry的存儲。 ELB:總共有三個.一個用來在集羣外訪問OpenShift API、OpenShift console。一個在集羣內訪問OpenShift API。另外一個用來訪問經過route暴露的部署在集羣中的應用程序服務。最後經過AWS的Route53來管理DNS。

部署OpenShift集羣的三個階段

在AWS中部署OpenShift集羣包括三個階段:

  • 第一階段:在AWS中設置好基礎設施
  • 第二階段: 在AWS上部署OpenShift Container平臺
  • 第三階段: 部署後的環境檢查

關於整個部署活動絕大多數都是能夠自動化的。RedHat提供了一個GitHub repo:openshift-ansible-contrib。openshift-ansible-contrib提供了將OpenShift集羣部署到不一樣的Cloud供應商的解決方案,固然也包括了AWS。裏面包含了相應的文檔、代碼以及腳本。RedHat提供了一個叫作openshift-ansible-playbooks的RPM包,openshift-ansible-contrib利用該RPM包來完成階段1和階段2,在階段3中咱們能夠利用一些現有的腳本工具實現環境檢查和認證。

對AWS環境的要求

選擇部署的AWS區域須要至少有三個可用區以及2個EIP。該OpenShift平臺須要新建三個公共子網和三個私有子網。 因爲須要新建一大批的AWS資源,因此必需要提供一個有適當權限的AWS用戶,包括建立帳號、使用S三、Route5三、ELB、EC2等。

六個子網須要在一個VPC中。Ansible腳本會創建一個NAT Gateway用來供內部的EC2實例訪問外網。同時也會創建8個Security Groups來限制不一樣的實例、ELB和外部網絡間的訪問。

openshift-ansible-contrib提供了部署基礎設施、安裝和配置OpenShift以及擴展router和registry的功能。運行Ansible的機器必須是RHEL7操做系統。具體的安裝過程可參見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

安裝完畢後的環境檢查能夠參見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

總結

在AWS上部署OpenShift平臺並非一件輕鬆的事情,一方面須要對AWS的各類服務瞭如執掌,一方面也須要對OpenShift的架構和核心概念有所瞭解。雖然RedHat提供了一些Ansible腳本和RPM包來簡化安裝,但整個過程也絕非一片坦途。安裝完備以後,如何和企業現有的應用程序開發流程、持續交付流水線結合起來無縫過分,也是一件很是考驗人的事情。下一篇文章會對這些方面進行揭祕。

相關文章
相關標籤/搜索