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>,禁止转载。