本文来自 KubeSphere 社区用户本来生活网架构师杨杨
大家好;我叫杨杨 是的姓杨 名杨 怎么样;就是这么霸气(主要是爸妈懒得给我想名字 T T ) 大概介绍下我 和 我们公司走DevOps这条路的初衷吧
我就职于 本来生活 网 负责发布系统架构;我们公司呢,咋说呢,简单说就是买水果蔬菜的 具体的大家去百度本来生活就知道;公司走上容器平台的DevOps这条康庄大道主要目标 有三:
1、提高资源利用率
2、提高发布效率
3、降低运维的工作成本等等
其实最主要的还是 就是 省钱; 对就是 省钱; 别问我为啥知道;
好了废话就不多说了,再说某周同学又说我太啰嗦了;接下来就是我们本来生活的DevOps升级之路
Level1:
我们 从初步接触DevOps相关知识 ;到接触到KubeSphere后;
开始学习Jenkins的Pipeline的各种操作、语法、插件等;
然后开始构建适合我们自己的CICD的整个流程
最终结合者KubeSphere平台初步实现了第一级的CICD流程;
这个级别的流程主要实现了 拉取代码、编译应用、发布镜像到本地仓库、部署到本地集群;如下图
积累经验值:
初步完成CICD流程后,我们继续研究和完善;
比如研究JenkinsPipeline的自定义方法,实现动态生成应用相关信息;
研究Jenkins的插件,实现上传Ftp、通过命令动态部署ConfigMap、存储等等
Level 2:
经过不停的努力学习 jenkins语法 及插件后 我们的CICD流程升级到2级; 加入了 部署配置、部署存储、上传cdn等,如下图:
小坑1-动态参数:
因为业务需要,我们的CICD流程需要 分为 几种类型的发布,而每种类型的发布都需要不同的参数;
于是我们按照之前学习到的Jenkins Pipeline语法 想当然的使用When条件语句去判断传入的发布类型跳转到不同Stage ,然后在通过Input输入参数语句实现不同参数的输入,
但是发现Input参数语句的优先级高于When条件语句,也就是说不管我选择哪个发布类型都要先输入参数, 然后系统才会去判断是否跳过该Stage;这与我们想的完全不一样。
于是我们各种google 百度,最后找到另外一种 input语法 可以input的优先级降低 使得when条件语句先判断,这样就满足了我们的需求。
Level3:
经过采坑动态参数;升级到3级CICD流程:新增了根据不同发布类型的任务 动态生成 所需参数;具体流程如下图:
小坑2-ConfigMap:
在实际生成环境中我们回滚肯定是要 应用的程序 和 配置一起回滚的,但是k8s的configmap是没有版本控制的,这就很奔溃;于是我们只能使用笨办法,在每次发布应用时,去配置中心抓取当前应用的配置生成configmap;并且在configmap名称后面跟上当前应用的发布版本,然后在部署到k8s时会将该版本的ConfigMap挂载到当前发布的Deployment中这样我们在回滚或发布时就能直接将应用的镜像和ConfigMap一起回滚到指定版本。
唯一美中不足就是ConfigMap会越来越多,后期只要定时清理就好。
连环坑:线下访问线上数据库:
为了应用镜像从线下环境上传到线上生产环境的镜像仓库;我们踩了个连环坑,先是折腾了好久 镜像仓库的 https登陆;登陆的坑填平了,又掉到 push 镜像的坑里。最后发现就是一个小小的配置导致的push 镜像到线上环境失败。反正 这两个坑 折腾了我们蛮久的时间。不过好在最终都解决了
标准化流程:
经过前期各种学习和采坑,我们的CICD流程基本成熟了后,我们开始考虑是不是能把整个流程标准化,每个应用只需要调用这个标准化流程去执行发布就好;而不是把CICD流程写到每个应用的JenkinsPipeline中;不然以后应用多了,万一需要修改CICD流程,想想有那么多应用的流程要修改,会奔溃的。于是我们又开始google、百度,寻找了一大圈;终于发现了一个叫 Jenkins扩展共享库 ;通过Jenkins扩展共享库我们把CICD流程拆分为 通用方法 和 流程逻辑 两块;
然后每个应用的JenkinsPipeline中只需按要求传入参数,然后调用要执行的流程方法即可;每个应用的JenkinsPipeline的代码量从原来的 500多行 减少到了 30行 不到。
Level9:
经过采坑和填坑的不懈努力 我们积累了庞大的经验值;一下子跳级到 9级,CICD流程有了质的飞跃;化整为零了。以后再也不用担心甲方随便更改流程啦
以后发布 只需要点击运行 选择好发布类型和环境,然后点击确定, 然就可以去喝咖啡安静的等待喽
查看 KubeSphere 项目
KubeSphere 开源社区:kubesphere.io
KubeSphere 项目 Github 地址:https://github.com/kubesphere
需要 KubeSphere 商用支持:https://kubesphere.qingcloud.com
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论