本節書摘來自華章出版社《開源容器雲openshift:建構基于kubernetes的企業應用雲平台》一書中的第3章,第3.3節,作者 陳耿 ,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
openshift容器雲提供了衆多基礎設施和工具,承載了衆多功能和特性,幫助使用者通過這個平台提升企業it的效率和靈活度。縱觀openshift容器雲項目,其中最重要的核心流程是将應用從靜态的源代碼變成動态的應用服務的過程。前文介紹的openshift及kubernetes的核心元件和概念都是為了支援和實作這個過程而引入的。
應用部署到應用上線響應使用者請求的全流程如圖3-3所示。這個流程涉及了多種不同類型的openshift對象。所有對象的資訊最終都記錄在etcd叢集資料庫中。
第1步,部署應用。流程的開始是使用者通過openshift的web控制台或指令行oc new-app建立應用。根據使用者提供的源代碼倉庫位址及builder鏡像,平台将生成建構配置(build conf?ig)、部署配置(deployment conf?ig)、service及route等對象。
第2步,觸發建構。應用相關的對象建立完畢後,平台将觸發一次s2i建構。
第3步,執行個體化建構。平台依據應用的build conf?ig執行個體化一次建構,生成一個build對象。build對象生成後,平台将執行具體的建構操作,包括下載下傳源代碼、執行個體化builder鏡像、執行編譯和建構腳本等。
第4步,生成鏡像。建構成功後将生成一個可供部署的應用容器鏡像。平台将把此鏡像推送到内部的鏡像倉庫元件registry中。
第5步,更新image stream。鏡像推送至内部的倉庫後,平台将建立或更新應用的image stream的鏡像資訊,使之指向最新的鏡像。
第6步,觸發鏡像部署。當image stream的鏡像資訊更新後,将觸發平台部署s2i建構生成的鏡像。
第7步,執行個體化鏡像部署。deployment conf?ig對象記錄了部署的定義,平台将依據此配置執行個體化一次部署,生成一個deploy對象跟蹤當次部署的狀态。
第8步,生成replication controller。平台部署将執行個體化一個replication controller,用以排程應用容器的部署。
第9步,部署容器。通過replication controller,openshift将pod及應用容器部署到叢集的計算節點中。
第10步,使用者通路。使用者通過浏覽器通路route對象中定義的應用域名。
第11步,請求處理并傳回。請求到router元件後,router根據route定義的規則,找到請求所含域名相關聯的service的容器,并将請求轉發給容器執行個體。容器執行個體除了請求後傳回資料,還會通過router将資料傳回給調用的用戶端。
在應用更新時,平台将重複上述流程的第1步至第9步。平台将用下載下傳更新後的代碼建構應用,生成新的鏡像,并将鏡像部署至叢集中。值得注意的是,openshit支援滾動更新。在第9步時,平台将通過滾動更新的方式,保證應用在新老執行個體交替時服務不間斷。關于滾動更新的細節,在後面的章節将會有更詳細的讨論。