基于Docker的Jenkins持续交付实践
A9:Jenkins当中并没有用户权限.公司在研发的产品中,有一个虚拟的概念叫用户组,对应的是k8s中的一个或多个namespaces.管理员将成员用户添加到这个用户组中,组内成员创建的资源(pipeline、集群、服务,等)在组内是可见,用户组来进行逻辑概念上的隔离 Q10:贵公司Jenkins和Kubernetes是怎么结合使用的?是什么的部署形式?如何回滚? A10:我看到很多朋友都提问了,Jenkins如何跨主机部署或者如何部署到Kubernetes集群,如何回滚.Jenkins对这方面的能力比较弱,仅仅能够支持kube-api-server的调用而已,如果完全依靠Jenkins是很难完成需求,所以我们的产品当中有一个专门对接kubernetes的deploy的模块,一个应用商店的模块,一个封装了Jenkins的uflow模块,uflow模块向应用商店获取模板并根据当前编译构建出来的镜像tag号替换模板,并交付给deploy模块创建.回滚和升级都由deploy模块负责.这样各自分开,各司其职. Q11:多个PHP项目,在Docker 应用中,需要逐个拆分吗?一个项目对应一个镜像管理?还是使用文件夹映射的方式构建镜像? A11:多个项目服务是放在一个容器中还是分开容器中,这个并没有强制的限定.但是建议还是分为多个容器进行部署.Docker的理念就是一个容器完成一个单独的事情. Q12:Jenkins PIpeline input指令可以复杂的参数化么? A12:input是一个比较强大的指令,可以在pipeline的运行过程中确认操作,字符输入,文件上传等功能.详细的可以看下jenkins的pipeline-syntax有使用说明和脚本的生成. Q13:Jenkins自动触发job到build docker image,自动触发是怎么实现的,wedhook 定时触发有没遇到过问题?不能正常触发的? A13:自动触发的原理的原理是,我们在pipeline中配置一个定时器,这个定时器是用cron表达式表示.例如你设置了 “* * * * * ”就表示每分钟检查一次,那么检查什么呢,检查每次提交的ID,例如git的commit ID .只要检测到了这个ID和上一次的不一致就会触发pipeline的构建.从目前使用并没有出现过不能触发的情况.如果出现了请检查是否是配置的错误. Q14:CD过程中,重造的轮子和开源组件是一个什么样的比例?个人推崇哪个? A14:自己重复造轮子和开源组件应该如何选择,这个是很有意思的一个问题.因为开发者都说不要重复造轮子,这是因为很多轮子经过了很多项目考验和众多开发者提交代码和fix的bug.这些项目肯定是比自己从头开始造一个轮子更加有效率而且使用风险低,毕竟所有人都想完成工作上的任务早点下班.但从个人发展来说,有些轮子还是值得自己去制造一次的,这样子你才会了解到这个组件的工作原理、底层的东西.所以我个人的推崇的是,假如你找到了合适接近完美的轮子那就直接用,如果找到了一个可用但总觉得用起来不太爽的组件,那你就把轮子造起来吧. 文章来自微信公众号:DBAplus社群 (编辑:西双版纳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |