“如果将现在主流IT技术比作武林的各项武功,那么将Oenshift比喻成天龙八部的中六脉神剑,一点也不为过。”
前言
在2017年1月11日,红帽举办了Openshift Workshop。当天有将近40客户和合作伙伴参与了培训。在培训中,我们一起在AWS公有云上部署了40套openshift环境,并且进行了大量有益的实验。
由于有很多关心OpenShift的朋友未能参加培训,因此笔者在实验环境再次重做了一遍实验,并录了下来,以供读者参考。如果读者未参加过此培训,笔者建议读者先阅读如下文章:
厉害了word哥 | 从两张图看红帽最高深的武功 |OpenShift
视频一共有9段,笔者已上传到腾讯视频上。由于公众号单篇只能放入3个视频,为了读者观看的连续性,我未分开多篇文章发表。因此后6段视频笔者放的是链接。为了方便理解,笔者将对每段视频的内容进行文字描述。需要注意的是,本视频版权归笔者和红帽公司所有。
OSE操作1-创建一个应用parksmap
在本实验中,我们通过使用docker.io上一个现成镜像,部署了一个名字叫parksmap的应用。应用部署好以后,手工创建route,以便我们在外网能够访问这个应用。
最终应用呈现效果:
操作视频如下:
OSE操作2-创建一个新的应用parksmap OSE操作3-创建mongodb
在这两个实验中,首先通过S2I的方式部署一个应用nationalparks(指定building image和source code git)。然后通过镜像创建一个数据库mongodb。接下来,向数据库中插入2740行数据。然后将nationalparks和mongodb关联起来。再将第一步创建的应用parksmap和nationalparks关联起来,这样应用展示的界面除了有地图,还有坐标。
最终应用效果:
操作视频如下:
OSE操作4-为应用创建外置配置参数
在上面的实验中,应用访问数据库的参数,是通过设置环境变量完成的。但在很多实际应用中,这种方法比较麻烦。为了实现解耦,在本实验中,通过创建参数文件,让应用的容器被创建的时候,自动带入和数据相关的参数文件。
视频链接:https://v.qq.com/x/page/j0367c5t7xl.html
CI/CD准备
接下来两个实验,是为了做CD/CD实验的准备。在OSE操作步骤5中,先部署一个jenkins的容器,在实验6中,创建一个live的应用--nationalparks-live和mongodb-live,即模拟生产环境。此前一系列步骤创建的不带live标签的应用(nationalparks和mongodb),模拟成开发测试环境的应用。
OSE操作5-部署jenkins
https://v.qq.com/x/page/i03673xj8si.html
OSE操作6:创建两个带live标签应用,模拟生产环境。
https://v.qq.com/x/page/l0367njrpoz.html
OSE操作7-手工触发build实现CD
https://v.qq.com/x/page/g0367rbay0r.html
在实验7中,首先部署一个pipeline的容器,用于管理nationalparks应用。然后手工触发build。在测试环境的生成的镜像被更新到生产之前,需要手工批准一下。CI/CD与devops的一个显著的区别是dev阶段build好的image,需要在经过相关人员批准以后,才会在生产上部署。
OSE操作8-更新源代码,自动触发S2I。
https://v.qq.com/x/page/t0367fiyggo.html
在本实验中,笔者手工修改了source code。web hookers检测到以后,自动触发应用的build、deploy、Test。然后笔者手工批准了向生产环境部署。最终,新代码在生产环境部署成功。本实验模拟了真正意义上的CI/CD。
OSE操作9
https://v.qq.com/x/page/w0367wciugm.html
在Openshift,部署应用的方法,通常有几个(有但不限于):
通过docker image部署:这种通常直接部署已经包含应用的打包好的镜像,因此通常没有bc。
通过S2I 部署:通过选择building image和指定code。指定完以后,code 先进行build,build成功,会将它push到内部的镜像库,然后部署一个新的pod。因此S2I通常会触发build和deploy。
通过模板部署
模板是可以把和一套应用相关的配置,都写在一起,然后通过这个模板部署应用。使用模板部署最大的好处在于,他可以加快应用的部署速度。模板是由实现写好的yaml或json文件创建的。
本实验展示了通过模板方式,创建一个新的应用-MLBParks。该应用与之前步骤部署的应用相互整合,最终应用展示的效果如下: