在Red Hat OpenShift部署Web App

姜志民 2017/09/14 23:36:07
3466






主題

在Red Hat OpenShift 部署Web App

介紹

筆者最近要做一個Web App,需要一個雲端平台來部署App,因為會長期使用,會以「免費」為優先考量再來是效能,最後選擇OpenShift來作我的雲端平台。以「免費」又兼具效能來說,OpenShift算很不錯了,所以要特別介紹給讀者認識。


OpenShift是由Red Hat所推出的PaaS雲端運算平台,由於OpenShift架構不同於一般常見的傳統虛擬主機,本文章會先解說OpenShift架構後,讓讀者有初步認識之後,再介紹如何在OpenShift從無到有部署Web App來做為快速入門。


作者

姜志民

版本

1.0

產出日期

2017 / 09/ 14





1 目的

筆者最近要做一個Web App,需要一個雲端平台來部署App,因為會長期使用,會以「免費」為優先考量再來是效能,最後選擇OpenShift來作我的雲端平台。以「免費」又兼具效能來說,OpenShift算很不錯了,所以要特別介紹給讀者認識。


OpenShift是由Red Hat所推出的PaaS雲端運算平台,由於OpenShift架構不同於一般常見的傳統虛擬主機,本文章會先解說OpenShift架構後,讓讀者有初步認識之後,再介紹如何在OpenShift從無到有部署Web App來做為快速入門。




2 傳統虛擬化 VS Container

OpenShift架構是採用Container輕量級虛擬化技術,這邊我先做一個Container介紹,讓第一次接觸Container的讀者有初步了解。


傳統虛擬主機需要安裝作業系統,而Container是採取共用Host OS,所以不需要額外安裝OS就能執行應用程式,也只需要少量的記憶體。Container可以達到100% I/O效能,而傳統虛擬主機,還需要經過Hypervisor層,而導致I/O效能大幅下降。下表是比較,可以讓讀者更清楚差異:



Container

傳統虛擬化

啟動速度

所需硬碟容量

I/O效能

快,接近100% 原生效能


換句話說,Container就是把應用程式會用到的套件打包後在去運行服務。若應用程式有問題就直接把Container快速換掉後,就能馬上回復運作,若是換成傳統虛擬主機有發生問題,就可能需要整個OS重新install,又要額外花一些時間來重新安裝與設定應用程式。


目前OpenShift提供許多Container給開發人員使用,例如:Tomcat、MySQL、Node.js…等。


下圖是「傳統虛擬化」與「Docker Container」架構圖的比較:




3 準備war

先準備一個war檔並且檔名必須為ROOT.war,再放到一個獨立的資料夾,如下圖:




4 建立 Openshift 專案

1.先到openshift 官網https://www.openshift.com/ ,申請一個帳號。


2.在申請過程中,選擇free方案 Starter。



3.按「Create Project」。



4.輸入Project相關資訊。



5.建立Project之後,系統會讓我們選擇Container,OpenShift有提供豐富的Container可以選擇,如下圖所示。


6.先按左上角的「昕力資訊」離開這個畫面,在後續的步驟中,我們將利用指令方式來建立Container。




5 部署Web App

1.進入OpenShift Web Console後的介面如下,按下右上角的,選擇「Command Line Tools」。



2.選擇Windows下載。



3.在「cmd命令提示字元」下輸入下列指令,主要作用是登入OpenShift。

指令:oc login https://api.starter-ca-central-1.openshift.com



4.輸入下列指令,主要作用是使用tomcat8的builder image建立一個新的Build設定。

指令:oc new-build --image-stream=jboss-webserver30-tomcat8-openshift --binary=true --name=webapp



5. .輸入下列指令,主要作用是將ROOT.war上傳到OpenShift,然後進行編譯成application image。

指令:oc nstart-build webapp --from-dir=.\thinkpower\



6.進入OpenShift Web Console,點選「Builds」==>「Builds」。



7.可以看到剛剛進行編譯的Build項目。



8. .輸入下列指令,主要作用建立一個application,系統會找出剛剛編譯完成application image來部署。

指令:oc new-app webapp



9. .輸入下列指令,主要作用是建立一個路由,可以連線到web app。

指令:oc expose svc webapp



10. 進入OpenShift Web Console,可以看到剛剛建立的application,在點擊右邊的網址。



11.就可以看到Web App。


6 疑難排解 - View Log

Web app在OpenShift上運行中,若有發生錯誤的話, Web Console有提供log查詢,步驟如下:

1. 進入OpenShift Web Console,點選右邊的圖示。



2.可以看到會有log持續輸出。




7 疑難排解 - Terminal

在Container有提供Terminal給使用者操作,步驟如下:

1. 進入OpenShift Web Console,點選右邊的圖示。



2.點選「Terminal」頁籤,就可以看到Terminal



姜志民