原创不易,请多多支持!对软件技术感兴趣的童鞋请关注我,后续技术分享更精彩。
容器编排从几年前群雄割据、各方乱战,到如今Google的k8s一统天下。能迅速力挽狂澜,已说明其技术实力。但k8s复杂的架构,不太友好的文档,确实让一些初学者望而却步。近期正好一直在学习k8s的东西,走了一些弯路。整理出来以备参考。
由于内容过多,本文将分多章介绍k8s集群构建过程,并发布demo到k8s集群,简单演示一个完整CI/CD的自动化过程。各章节内容如下:
一、k8s集群环境准备
二、rancher搭建k8s集群环境
三、rancher应用部署
四、Jenkins部署应用到rancher集群
部署资源
centos7.7虚拟机3台,对应ip如下:
- 192.168.0.110- 192.168.0.111- 192.168.0.112
192.168.0.110 : rancher和jenkins部署机器。
192.168.0.111/192.168.0.112:k8s集群node节点。笔者机器资源所限,超过3台虚拟机,个人笔记本电脑将无法工作。使用者可根据具体情况增加虚拟机节点。
Jenkins安装
192.168.0.110 虚拟机安装Jenkins程序
docker run -u root --restart=always -d -p 8080:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /data/repository:/root/.m2/repository jenkinsci/blueocean
启动完成,浏览器访问http://192.168.0.110:8080 地址。
首次启动,初始密码位于/data/jenkins_home/secrets/initialAdminPassword文件中,设置密码后,更新常用Jenkins插件。
Jenkins安装Redeploy Rancher2.x Workload 插件
Redeploy Rancher2.x Workload插件,可通过Jenkins发布rancher集群中安装的应用服务。
注意该插件只支持redeploy rancher集群中的应用,不能发布新应用。即该插件只支持rancher集群中配置好的应用,插件仅通过api调用rancher中workload完成的配置,触发rancher将应用部署到集群中。新应用需先在rancher中配置workload,然后Jenkins插件方能生效。
插件安装完成后,浏览器http://192.168.0.110:8080/restart ,重启Jenkins使插件立即生效。
Jenkins新建任务,输入app-demo,并选择自定义方式。
设置git仓库,这里为阿里云code仓库。
添加参数化构建配置
添加boolean参数buildImage(打包镜像)
添加string参数appName(应用镜像名称)
添加string参数version(应用版本号)
添加maven构建
添加shell脚本
按上图添加以下shell内容,其中shell变量来源于Jenkins上一步参数构建值。
#!/bin/bash# 切换到部署jar包目录,替换为实际项目目录cd ****/***-demoecho "cur dir is: `pwd`"#登录阿里云docker镜像仓库,公开镜像仓库跳过这一步,自行替换账号密码docker login --username=***** registry.cn-shanghai.aliyuncs.com -p=***if [ $buildImage == true ]; thenecho "start to build docker images..." #构建docker镜像docker build --tag=$appName:$version . #将镜像推向阿里云注册仓库docker push $appName:$versionfi
添加rancher插件
添加rancher插件前,先要在rancher工具中添加api key。
登录rancher工具界面。点击右上角用户头像 - API&Key 按钮,添加api key。
点击 addKey。
填入描述,点击create。
记住对应信息,右侧按钮复制内容。注意:秘钥信息只有新建时明文显示,关闭后无法查看,请提前做好保存,后续jenkins插件会用到。
jenkins 中添加rancher redeploy插件
填入以下输入框内容,点击右侧帮助按钮有相应字段提示。
注:若插件面板有乱码,可参考后面rancher redeploy 乱码解决。
上图填写内容说明:
点击 添加 ,新增rancher api 认证。
按上图,填写相应信息。其中endpoint 和 Bearer Token对应rancher中添加api key是预先生成的值。
点击 添加 完成密钥设置。
工作负载地址,可以从rancher界面app-demo应用workload列表页 - 右侧编辑 - view in api 查看。
值为打开浏览器页面url中/project/* 那部分路径。
点击保存,完成jenkins任务配置。
rancher redeploy 乱码解决
jenkins版本可能导致rancher redeploy乱码问题。
下载redeploy-rancher2-workload.jar到本地。
https://gitee.com/eagle_daiq/pub/blob/master/redeploy-rancher2-workload.jar
通过ftp上传本地文件到,jenkins所在机器/data/jenkins_home/plugins/redeploy-rancher2-workload/WEB-INF/lib目录,覆盖redeploy-rancher2-workload.jar文件。重启jenkins。
jenkins部署发布
点击jenkins中app-demo任务,开始构建。
构建完成,查看rancher app-demo workload列表页,可见最新版本20200503版本部署已被触发。
总结
到此,通过jenkins发布app-demo项目的CI/CD自动化集成已全部完成。
本系列文章介绍了rancher搭建k8s集群,并通过一个简单maven app-demo示例,演示jenkins到rancher工具的集成过程。希望对初入k8s集群学习的朋友有所帮助。有任何疑问可留言讨论。