OpenShift S2I 概念及流程

東北小狐狸發表於2021-11-16

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 https://blog.csdn.net/u012586326/article/details/121363875 與 部落格園 https://www.cnblogs.com/hellxz/,禁止轉載。

相關文章