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 流程

上边这张流程图来自官方文档以及参考更多资料,本人概括一下大致的流程:
- 首先下载 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/,禁止转载。
OpenShift S2I 概念及流程的更多相关文章
- 自定义 OpenShift s2i 镜像与模板——OracleJDK8
本文目标 由于 OpenShift 官方提供的镜像与模板(OpenJDK8)不完全满足业务需要: 不包含飞行记录功能.只有 OpenJDK11 以上才被 Oracle 开源 生成堆 dump 很大很慢 ...
- MVC基本概念和流程
MVC基本概念和流程 MVC的概念 Model(模型):包含数据和行为.不过现在一般都分离开来:Value Object(数据) 和 服务层(行为). View(视图):负责进行模型的展示,一般就是展 ...
- Git基本概念,流程,分支,标签及常用命令
Git基本概念,流程,分支,标签及常用命令 Git一张图 Git基本概念 仓库(Repository) 分支(Branch) Git工作流程 Git分支管理(branch) 列出分支 删除分支 分支合 ...
- MySQL事务概念与流程和索引控制
MySQL事务概念与流程和索引控制 视图 1.什么是视图 我们在执行SQL语句其实就是对表进行操作,所得到的其实也是一张表,而我们需要经常对这些表进行操作,拼接什么的都会产生一张虚拟表,我们可以基于该 ...
- (一)spring MVC基本概念和流程
MVC的概念 Model(模型):包含数据和行为.不过现在一般都分离开来:Value Object(数据) 和 服务层(行为). View(视图):负责进行模型的展示,一般就是展示给用户的界面. Co ...
- scrapy的基础概念和流程
1. 什么是scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取. Scrapy 使用了Twisted['twɪstɪd]异步网 ...
- 考研部分概念和流程(若不全和错误可提示我补充,另考研帮app推荐)
上大学必须经过全国统一高考,而就读硕士研究生的途径相对而言要多一些,也更灵活一些.已经工作的人,除了放弃工作报考研究生以外,还可以不脱产申请攻读学位,或申请单独考试.不脱产申请攻读学位,通俗的讲,就是 ...
- word2vec:主要概念和流程
1.单词的向量化表示 一般来讲,词向量主要有两种形式,分别是稀疏向量和密集向量. 所谓稀疏向量,又称为one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的 ...
- OpenShift实战(七):OpenShift定制镜像S2I
1.基础镜像制作 由于公司的程序是Java开发,上线发布使用的是maven,如果使用openshift自带的S2I,每次都会全量拉取代码(代码比较多,每次全量拉太慢),然后每次打包都会再一次下载mav ...
随机推荐
- 测试工程需要明白的Monkey测试
App稳定性测试 稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务. 指标: 异常的次数 异常的频率 App的稳定性测试如何实施? 首选Monkey Monkey是 ...
- 解决报错:Unable to process Jar entry [org/springframework/jmx/export/annotation/*****]
情况说明:从gitub上clone的maven项目,pox.xml配置中的依赖,自己的repository都有,所以正常update project ,正常clean,install,整个过程无报错 ...
- PHP的SPL扩展库(一)数据结构
SPL 库也叫做 PHP 标准库,主要就是用于解决典型问题的一组接口或类的集合.这些典型问题包括什么呢?比如我们今天要讲的数据结构,还有一些设计模式的实现,就像我们之前讲过的观察者模式相关的接口在 S ...
- .Net Core 实现 自定义Http的Range输出实现断点续传或者分段下载
一.Http的Range请求头,结合相应头Accept-Ranges.Content-Range 可以实现如下功能: 1.断点续传.用于下载文件被中断后,继续下载. 2.大文件指定区块下载,如视频.音 ...
- 10.12 LNMP
yum install nginx php php-fpm mariadb-server php-mysql php.conf server { listen 8000; # pass the PHP ...
- Python简单爬取图书信息及入库
课堂上老师布置了一个作业,如下图所示: 就是简单写一个借书系统. 大概想了一下流程,登录-->验证登录信息-->登录成功跳转借书界面-->可查看自己的借阅书籍以及数量... 登录可以 ...
- bzoj4821 && luogu3707 SDOI2017相关分析(线段树,数学)
题目大意 给定n个元素的数列,每一个元素有x和y两种元素,现在有三种操作: \(1\ L\ R\) 设\(xx\)为\([l,r]\)的元素的\(x_i\)的平均值,\(yy\)同理 求 \(\fra ...
- python join的用法
joinn其实就相当于用某个字符串来拼接列表或者元组中的元素 当然也可以将字符串以某一个str拼接起来 得出的结果自然也是字符串 ex1: results: 实例用处: 当我们从某个文件中读出内容时, ...
- Serverless Kubernetes 和 Serverless on Kubernetes 的区别
什么是 Kubernetes? Kubernetes 是一个可移植的.可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化. 什么是 Serverless ? 无服务器是一种云原 ...
- [对对子队]会议记录5.25(Scrum Meeting11)
今天已完成的工作 吴桐雨 工作内容:设计第10.11关 相关issue:设计额外关卡 相关签入:level10 level11 吴昭邦 工作内容:写测试代码 相关issue:测试初 ...