【openshift教程-03.1】【SourcetoImage(S2I)】
SourcetoImage(S2I),S2I是OpenShit的一个重要功能。容器镜像是容器云的应用交付格式。容器镜像中包含了应用及其所依赖的运行环境。可以从社区或者第三方厂商获取基础的操作系统或者中间件的镜像。但是这些外部获取的操作系统或中间件的镜像并不包含企业内部开发和定制的应用。企业内部的开发人员必须自行基于外部的基础镜像构建包含企业自身开发的应用。这个镜像的构建过程是必须的,要么由企业的IT人员手工完成,要么使用某种工具实现自动化。
作为一个面向应用的平台,OpenShift提供了S2I的流程,使得企业内容器的构建变得标准化和自动化,从而提高了软件从开发到上线的效率。
一个典型的S2I流程包含了以下几个步骤。
1)用户输入源代码仓库的地址。
2)用户选择S2I构建的基础镜像(又称为Builder镜像)。Builder镜像中包含了操作系统、编程语言、框架等应用所需的软件及配置。OpenShift默认提供了多种编程语言的Builder镜像,如Java、PHP、Ruby、Python、Perl等。用户也可以根据自身需求定制自己的Builder镜像,并发布到服务目录中供用户选用。
3)用户或系统触发S2I构建。OpenShift将实例化S2I构建执行器。
4)S2I构建执行器将从用户指定的代码仓库下载源代码。
5)S2I构建执行器实例化Builder镜像。代码将会被注入Builder镜像中。
6)Builder镜像将根据预定义的逻辑执行源代码的编译、构建并完成部署。
7)S2I构建执行器将完成操作的Builder镜像并生成新的Docker镜像。
8)S2I构建执行器将新的镜像推送到OpenShift内部的镜像仓库。
9)S2I构建执行器更新该次构建相关的ImageStream信息。
S2I构建完成后,根据用户定义的部署逻辑,OpenShift将把镜像实例化部署到集群中。
除了接受源代码仓库地址作为输入外,S2I还接受Dockerfile以及二进制文件作为构建的输入。用户甚至可以完全自定义构建逻辑来满足特殊的需求。