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