天天看點

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

《OpenShift 4.x HOL教程彙總》

說明:本文使用的是OpenShift 4.7控制台部署一個多層應用的所有資源,其它版本的控制台可能會有少量差别。

文章目錄

  • 準備項目
  • 部署應用相關子產品
    • 部署web頁面子產品
    • 部署後端API服務
    • 部署Mongo資料庫
    • 健康檢查
  • 參考

準備項目

登入進入OpenShift控制台,然後切換到“開發者”的視圖。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在項目下拉框中選擇“建立項目”,然後建立名為“parks-workshop”的項目。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

部署應用相關子產品

部署web頁面子產品

Parksmap Web提供的是應用的通路頁面。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“拓撲”中找到“容器鏡像”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“部署鏡像”頁面中選擇“Image name from external registry”,并提供“quay.io/openshiftroadshow/parksmap”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“部署鏡像”頁面中下方的“資源”區域選擇“Deployment”,在“标簽”區域中添加如下3個标簽(app=workshop,component=parksmap,role=frontend)。最後點選“部署鏡像”頁面下方的“建立”按鈕,此時OpenShift開始部署鏡像。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

完成後,在“拓撲”頁中顯示下圖,其中可以看到有1個pod在運作,并且有名為parksmap的Route,它包含通路web應用的URI,點選下圖中的URI即可檢視部署的parksmap應用。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

可點選上面“拓撲圖”的Routes區域的parksmap連結,就會顯示下圖監控到的route網絡流量。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

可點選上面“拓撲圖”中的Pod執行個體連結,就會在下圖中顯示該Pod執行個體對資源的使用情況。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在Pod執行個體頁面中切換到“日志”一欄,可以檢視給pod的日志資訊。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在Pod執行個體頁面中切換到“日志”一欄,可以看到和Pod相關的事件。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在Pod執行個體頁面中切換到“終端”一欄,可以進入該Pod内部。然後可以執行以下指令:

$ ls -l /parksmap.jar
           
OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“拓撲“”頁面的右側Details中,點選圓形右側向上箭頭,此時會動态顯示Pod執行個體數量擴充到2個。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

再次檢視“拓撲”頁面,在Services區域中進入名為parksmap的service。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在parksmap的服務頁面中檢視pod情況,确認有2個pod。然後通過Pod右側的菜單删除一個pod。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

此時在“拓撲”頁面中可以檢視到被删除的pod先變成Terminaling狀态,同時會生成新的pod替換被删除的pod。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

部署後端API服務

下面部署前端Web應用調用的後端API服務。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

确認目前是在“parks-workshop”項目,且目前應用程式是“parksmap-app”。然後在“開發者”視圖中進入“+添加”頁面,點選下圖中的“從Git”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在下圖中的"Git"區域提供應用代碼的git repo位址:https://github.com/openshift-roadshow/nationalparks.git

OpenShift會自動驗證repo的有效性,并根據repo的開發語言在下面的“建構器”中自動選擇“Java”建構鏡像,在建構器鏡像版本中選出"openjdk-11-ubi8"。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

根據下圖,在“正常”區域中确認名稱為“nationalparks”,在“資源”區域中确定選擇的是“Deployment”、在“标簽”區域中添加下圖中的3個标簽(app=workshop,component=parksmap,role=backend)。最後點選“建立”按鈕。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在部署“nationalparks”的時候,可以在下圖“拓撲”頁面中點選“Builds”下方的“nationalparks”連結。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

此時會進入“建構”頁面。“建構Build”是OpenShift根據應用代碼編譯打包的過程,每個Build過程都是運作在一個容器中。是以下圖看到的就是運作“nationalparks-1”的建構容器運作監控情況。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

檢視該Build的日志,可以看到背景做的一些列下載下傳源碼、下載下傳依賴包、編譯打包、生成鏡像等操作。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在完成Build建構後,應用鏡像會随之部署到OpenShift上。部署成功後如下圖,已經有Running的pod了。

點選下圖中Routes區域的連結,并在後面加上通路路徑,即http:///ws/info/。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

部署Mongo資料庫

下面部署後端API子產品使用到的MongoDB。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

浏覽器打開https://raw.githubusercontent.com/openshift/origin/master/examples/db-templates/mongodb-persistent-template.json頁面,然後複制所有内容。

在OpenShift控制台中切換到openshift項目,然後在控制台右上方點選“+”圖示,再點選“導入YAML”進入下圖頁面。将複制的内容粘貼到編輯區,最後點選“建立”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

完成後再次切換到“開發者”的“parks-workshop”項目,然後進入“添加”頁面的“資料庫”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

此時可以在Database中找到“MondoDB”并進入。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

确認需要根據模闆建立MongoDB資料庫。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在下圖中提供建立MongoDB的下列參數,最後點選Create按鈕。

Database Service Name : mongodb-nationalparks

MongoDB Connection Username : mongodb

MongoDB Connection Password : mongodb

MongoDB Database Name: mongodb

MongoDB Admin Password : mongodb

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

此時OpenShift會根據模闆和參數建立MongoDB資料庫執行個體,完成後可以在“拓撲”中看到如下結果。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

拖動“mongodb-nationalparks”圖示到“workshop”應用上方,根據提示按下“Shift”并釋放圖示。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

這樣就會将MongoDB資料庫加入到“workshop”應用中了。這個過程會在“mongodb-nationalparks”中增加新的标簽,我們可根據下圖檢視編輯“mongodb-nationalparks”部署配置的标簽。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“編輯标簽”視窗确認已經有了“app=workshop”,然後手動加上“component=nationalparks”和“role=database”标簽。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

進入開發者的“Secrets”頁面,然後找到“mongodb-persistent-parameter-xxxx”并點選進入。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“Secret”頁面中點選“在工作負載中添加Secret”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“Add Secret to Workload”視窗中選中“nationalparks”,然後Save。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

由于我們修改了部署配置,是以OpenShift會自動觸發一次新的部署。可以在下圖的“nationalparks” 部署配置中看到會有新的Pod替代老的Pod。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在完成後可在浏覽器中通路“http:///ws/data/load”位址,頁面會傳回“Items inserted in database: 2893”。

如果通路的是“http:///ws/data/all”,頁面會傳回MongoDB表中的所有資料。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考
OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考
OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

健康檢查

在“拓撲”頁面中選中“nationalparks”,然後在右滑頁面中點選“操作”-“添加健康檢查”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在下圖的“就緒度探測”區域中為“路徑”提供“/ws/healthz”,然後點選右下方的“對勾”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

在“添加健康檢查”視窗中确認添加了“就緒度檢測”和“存活度檢測”,然後點選“建立”。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

為了驗證就緒度和存活度是有效的,我們可以通過下圖進入到一個運作的Pod中。

OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

然後在Pod的終端中執行以下指令,确認能得到“OK”的傳回結果。

sh-4.2$ curl http://nationalparks:8080/ws/healthz/
OK
           
OpenShift 4 - 全圖形化 Step-by-Step 部署容器應用準備項目部署應用相關子產品參考

參考

https://redhat-scholars.github.io/openshift-starter-guides/rhs-openshift-starter-guides/index.html

繼續閱讀