看到很多教程都是基于docker挂载到k8s上的,因为我们客户端的产品都是运行在桌面端,比如mac、window、Ubuntu上,所以分享一个基于公司的k8s搭建的一个针对客户端的devops流程。 1使外部集群可以访问到jenkins服务 创建k8s后,修改 jenkins agent service,使集群外部可以访问此服务 kubectl edit svc -n kubesphere-devops-system ks-jenkins-agent 将服务类型修改为 NodePort,此时通过下面命令可以看到这个 serivce 所对应的开放端口 kubectl get svc -n kubesphere-devops-system ,
也可以参考https://kubesphere.com.cn/forum/d/358-kubesphere-jenkins-devops-pipeline-windows-agent这个文章。 2 挂载节点机 让节点机挂载到jenkins上,节点机必须能找到服务器或者服务器能连上节点机,为了更方便的看到测试结果,所以节点机运行在本地,就只能通过主动连服务器的方式,要么把服务器设置一个外网IP,或者建一个VPN,客户端通过vpn的方式连接到服务器。我们选择的是在每个节点机上通过VPN的方式连接服务器。 登陆jenkins的页面,账户跟devops后台账户一样。在这里遇到了几个问题说一下,因为kubsphere是基于jenkins做了二次开发,所以jenkins的插件是不能随便更新,结果我装了一堆新插件后不兼容导致jenkins服务起不来,后来k8s部门同事建议把插件全部删了才行,所以安装插件要慎重,一定要弄个新环境测试插件没问题了在装。我这里只装了一个中文插件。 然后点击系统管理->节点机管理->新建节点机
选择固定节点->输入节点机名称
这里我又踩一个坑,在新建第二个节点机的时候为了省事直接复制现有节点,这个不能用,复制的时候也会报错。 然后会进入下面的页面
这里建议名称和标签跟外面的名字是一样的,名字太多真是记忆起来不方便,这个标签名就是jeninsfile里面的agent的label标签的名称。目录随便设置一个就行,用法选尽可能的使用这个节点,启动方式因为我们是通过客户端主动连服务器,就选通过java web启动代码,点击高级设置tunnel连接位置:前面是服务器的地址,端口号写31313。配置完成后点击确定弹出如下页面。
把这个命令拷贝下来,window放到bat文件里面,mac和ubuntu放到sh文件里面,下次启动的时候直接执行脚本就行,命令里面的http://jenkins.devops.kubsphere.local 其实就是默认的Jenkins服务器地址,把这个地址改成我们的jenkins服务器地址就行,端口号不用改的。 启动脚本后在最后一行能看到success就说明节点机器连接成功,Jenkins列表就能看到连接节点机名称。 。
有个地方要注意下,window和ubuntu是没有账户要求,mac下必须要建一个jenkins用户,在该用户下执行脚本才可以连接到jenkins服务器,这里一定要注意。 到此为止就可以按照官网的教程搭建devops环境了,网上教程很多,也非常详细,我就不在这里重复了,大家按照下面链接去搭建就可以了。 https://kubesphere.com.cn/docs/devops-user-guide/how-to-use/create-a-pipeline-using-jenkinsfile/ jenkinsfile的编写大家直接去官网学习就行 https://www.jenkins.io/zh/doc/book/pipeline/getting-started/#defining-a-pipeline-in-scm
大家在遇到问题的时候多看日志,基本上通过这个日志结果就能分析是错误原因。 还有一个问题大家要注意下,正常情况下修改完jenkinsfile,推送到github之后会自动重新build一次,但是我发现这个时候拉的jenkinsfile可能不是最新的,不知道啥原因,如果你们发现本地的jenkinsfile的修改不是最新的,毕竟刚开始写jenkinsfile的时候会有很多语法错误,你们就按照下面的图点击一下扫描远程分支就行。
然后重新执行就可以了。
|