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/
,禁止轉載。