S2I(Source To Image)即從源碼到鏡像的一個過程,OpenShift 将它作為基礎功能提供給使用者,包含 S2I CLI 工具 與 S2I 流程。通過這些工具和既定流程,能去掉開發和運維人員手動打鏡像複雜性,隻需要點一下建構按鈕就能将 Git 倉庫中的源碼或程式制品打包成鏡像,上傳到鏡像倉庫中,觸發後續的部署流程。
S2I CLI 工具 - 生成建構S2I鏡像需要的基礎環境(包含預設Dockerfile、腳本、測試腳本)
基礎鏡像 - 由基礎環境中的Dockerfile中定義的鏡像
建構/運作腳本 - 建構與運作時腳本
save-artifacts - 用于儲存增量建構「可選」
assemble - 組裝複制制品到指定位置
run - 應用啟動腳本
usage - 列印幫助提示
test/run - 測試運作腳本

上邊這張流程圖來自官方文檔以及參考更多資料,本人概括一下大緻的流程:
首先下載下傳 STI 腳本,這些腳本來自于 <code>openshift/origin-docker-builder:<OpenShift版本></code> 這個鏡像,是以是 pull 鏡像。
使用以上鏡像啟動建構 docker 的容器,根據 <code>BuildConfig</code> 以及S2I鏡像的 Dockerfile 标簽定義,開始多階段建構鏡像
執行 <code>openshift-git-clone --loglevel=0</code> 指令,根據配置的參數拉取 Git 倉庫上的源碼或制品,拉到 <code>/tmp</code> (位置根據 s2i 鏡像的标簽 <code>io.openshift.s2i.destination</code> 定義),建立tar包,開始第二階段建構
執行 <code>openshift-manage-dockerfile --loglevel=0</code> 修改 Dockerfile,修改 <code>CMD</code> 啟動指令改為 執行 <code>run</code> 腳本,開始第三階段建構
執行 <code>openshift-sti-build --loglevel=0</code> 執行 STI 腳本調用 <code>assemble</code> 将源碼建構成制品再複制制品到指定目錄,或者将制品放到指定目錄,執行腳本完成後建構鏡像(docker commit),最後推送鏡像到内部鏡像倉庫,首次推送生成鏡像流(ImageStream),任務完成停止容器。
S2I 減少了開發運維人員打鏡像的繁複步驟,将源碼或制品構造成标準的、可部署的鏡像。建構流程總體上就三步 <code>下載下傳</code> - <code>建構</code> - <code>推送</code>。
由于作者了解可能有所偏頗,文章中可能出現錯誤,希望能得到您的評論指出,在此感謝。
接下來幾天,本人會更新自定義 OpenShift 鏡像和模闆相關内容,靜請期待。
本文同步釋出于CSDN <code>https://blog.csdn.net/u012586326/article/details/121363875</code> 與 部落格園 <code>https://www.cnblogs.com/hellxz/</code>,禁止轉載。