OpenShift S2I 概念及流程

S2I 概念

S2I(Source To Image)即从源码到镜像的一个过程,OpenShift 将它作为基础功能提供给用户,包含 S2I CLI 工具 与 S2I 流程。通过这些工具和既定流程,能去掉开发和运维人员手动打镜像复杂性,只需要点一下构建按钮就能将 Git 仓库中的源码或程序制品打包成镜像,上传到镜像仓库中,触发后续的部署流程。

S2I 的组成

  • S2I CLI 工具 - 生成构建S2I镜像需要的基础环境(包含默认Dockerfile、脚本、测试脚本)
  • 基础镜像 - 由基础环境中的Dockerfile中定义的镜像
  • 构建/运行脚本 - 构建与运行时脚本
    • save-artifacts - 用于保存增量构建「可选」
    • assemble - 组装复制制品到指定位置
    • run - 应用启动脚本
    • usage - 打印帮助提示
    • test/run - 测试运行脚本

S2I 流程

上边这张流程图来自官方文档以及参考更多资料,本人概括一下大致的流程:

  1. 首先下载 STI 脚本,这些脚本来自于 openshift/origin-docker-builder:<OpenShift版本> 这个镜像,所以是 pull 镜像。
  2. 使用以上镜像启动构建 docker 的容器,根据 BuildConfig 以及S2I镜像的 Dockerfile 标签定义,开始多阶段构建镜像
  3. 执行 openshift-git-clone --loglevel=0 命令,根据配置的参数拉取 Git 仓库上的源码或制品,拉到 /tmp (位置根据 s2i 镜像的标签 io.openshift.s2i.destination 定义),创建tar包,开始第二阶段构建
  4. 执行 openshift-manage-dockerfile --loglevel=0 修改 Dockerfile,修改 CMD 启动命令改为 执行 run 脚本,开始第三阶段构建
  5. 执行 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/,禁止转载。

posted @ 2021-11-16 20:08  东北小狐狸  阅读(344)  评论(0编辑  收藏  举报