OpenShift S2I 概念及流程

S2I 概念

S2I(Source To Image)即從源碼到鏡像的一個過程,OpenShift 將它作為基礎功能提供給用戶,包含 S2I CLI 工具 與 S2I 流程。通過這些工具和既定流程,能去掉開發和運維人員手動打鏡像複雜性,只需要點一下構建按鈕就能將 Git 倉庫中的源碼或程式製品打包成鏡像,上傳到鏡像倉庫中,觸發後續的部署流程。

S2I 的組成

  • S2I CLI 工具 - 生成構建S2I鏡像需要的基礎環境(包含默認Dockerfile、腳本、測試腳本)
  • 基礎鏡像 - 由基礎環境中的Dockerfile中定義的鏡像
  • 構建/運行腳本 - 構建與運行時腳本
    • save-artifacts - 用於保存增量構建「可選」
    • assemble - 組裝複製製品到指定位置
    • run - 應用啟動腳本
    • usage - 列印幫助提示
    • test/run - 測試運行腳本

S2I 流程

上邊這張流程圖來自官方文檔以及參考更多資料,本人概括一下大致的流程:

  1. 首先下載 STI 腳本,這些腳本來自於 openshift/origin-docker-builder:<OpenShift版本> 這個鏡像,所以是 pull 鏡像。
  2. 使用以上鏡像啟動構建 docker 的容器,根據 BuildConfig 以及S2I鏡像的 Dockerfile 標籤定義,開始多階段構建鏡像
  3. 執行 openshift-git-clone --loglevel=0 命令,根據配置的參數拉取 Git 倉庫上的源碼或製品,拉到 /tmp (位置根據 s2i 鏡像的標籤 io.openshift.s2i.destination 定義),創建tar包,開始第二階段構建
  4. 執行 openshift-manage-dockerfile --loglevel=0 修改 Dockerfile,修改 CMD 啟動命令改為 執行 run 腳本,開始第三階段構建
  5. 執行 openshift-sti-build --loglevel=0 執行 STI 腳本調用 assemble 將源碼構建成製品再複製製品到指定目錄,或者將製品放到指定目錄,執行腳本完成後構建鏡像(docker commit),最後推送鏡像到內部鏡像倉庫,首次推送生成鏡像流(ImageStream),任務完成停止容器。

總結

S2I 減少了開發運維人員打鏡像的繁複步驟,將源碼或製品構造成標準的、可部署的鏡像。構建流程總體上就三步 下載 - 構建 - 推送。

由於作者理解可能有所偏頗,文章中可能出現錯誤,希望能得到您的評論指出,在此感謝。

接下來幾天,本人會更新自定義 OpenShift 鏡像和模板相關內容,靜請期待。

本文同步發佈於CSDN //blog.csdn.net/u012586326/article/details/121363875 與 部落格園 //www.cnblogs.com/hellxz/,禁止轉載。