S2I 概念
S2I(Source To Image)即從源碼到鏡像的一個過程,OpenShift 將它作為基礎功能提供給用戶,包含 S2I CLI 工具 與 S2I 流程。通過這些工具和既定流程,能去掉開發和運維人員手動打鏡像復雜性,只需要點一下構建按鈕就能將 Git 倉庫中的源碼或程序制品打包成鏡像,上傳到鏡像倉庫中,觸發后續的部署流程。
S2I 的組成
- S2I CLI 工具 - 生成構建S2I鏡像需要的基礎環境(包含默認Dockerfile、腳本、測試腳本)
- 基礎鏡像 - 由基礎環境中的Dockerfile中定義的鏡像
- 構建/運行腳本 - 構建與運行時腳本
- save-artifacts - 用於保存增量構建「可選」
- assemble - 組裝復制制品到指定位置
- run - 應用啟動腳本
- usage - 打印幫助提示
- test/run - 測試運行腳本
S2I 流程
上邊這張流程圖來自官方文檔以及參考更多資料,本人概括一下大致的流程:
- 首先下載 STI 腳本,這些腳本來自於
openshift/origin-docker-builder:<OpenShift版本>
這個鏡像,所以是 pull 鏡像。 - 使用以上鏡像啟動構建 docker 的容器,根據
BuildConfig
以及S2I鏡像的 Dockerfile 標簽定義,開始多階段構建鏡像 - 執行
openshift-git-clone --loglevel=0
命令,根據配置的參數拉取 Git 倉庫上的源碼或制品,拉到/tmp
(位置根據 s2i 鏡像的標簽io.openshift.s2i.destination
定義),創建tar包,開始第二階段構建 - 執行
openshift-manage-dockerfile --loglevel=0
修改 Dockerfile,修改CMD
啟動命令改為 執行run
腳本,開始第三階段構建 - 執行
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/
,禁止轉載。