东莞网站建设(信科网络),国内最新重大新闻,无代码编程软件,网页广告屏蔽文章目录 前言一、jenkins配置1.1 jenkins配置git1.2 jenkins 配置maven1.3 jenkins配置java 二、jenkins流水线配置2.1.新增项目2.2 springboot项目配置git仓库2.3 springboot项目配置maven打包2.4 系统配置 ssh到hadoop1配置#xff0c;也就是k8s的master节点2.6 springboot… 文章目录 前言一、jenkins配置1.1 jenkins配置git1.2 jenkins 配置maven1.3 jenkins配置java 二、jenkins流水线配置2.1.新增项目2.2 springboot项目配置git仓库2.3 springboot项目配置maven打包2.4 系统配置 ssh到hadoop1配置也就是k8s的master节点2.6 springboot项目配置拷贝jar包到远端2.5 springboot项目配置打包完成后的执行脚本2.6 验证 总结 前言
前面已经完成了k8s集群的部署现在尝试jenkins自动集成到k8s集群。jenkins搭建可以参考jenkins搭建 一、jenkins配置
前面已经完成了jenkins的搭建但是还没有集成gitmavenjava这里做下配置。
1.1 jenkins配置git
linux安装git如下
yum install git如下图的路径配置里如果没有git去插件安装处安装一下git插件即可
配置git如果没有git去插件管理安装一下就行
/usr/bin/git1.2 jenkins 配置maven
自己下载maven安装包解压到你自己的安装目录修改conf文件
mirroridaliyunmaven/idmirrorOf*/mirrorOfname阿里云公共仓库/nameurlhttps://maven.aliyun.com/repository/public/url
/mirror
export MAVEN_HOME/opt/*/maven3.6/apache-maven-3.6.3
export PATHMAVEN_HOME/bin:MAVEN_HOME/bin:PATH
#刷新配置
source /etc/profile检查是否安装成功
mvn help:system如果出现下载文件则maven安装成功了接下来去jenkins配置maven如图所示我的安装路径如下
/root/tools/apache-maven-3.6.3/conf/settings.xml配置maven安装路径如图
1.3 jenkins配置java
/root/tools/jdk/jdk1.8.0_144二、jenkins流水线配置
2.1.新增项目 2.2 springboot项目配置git仓库
这里我使用的国内免费的gittee作为仓库。
先到linux服务器上生成公钥私钥用来联通linux和git
ssh-keygen -t rsa -C your_emailyouremail.com然后两次回车即可cd ~/.ssh 目录下拷贝公钥到gitee公钥管理处 公钥存放的文件为id_rsa.pub 私钥存放的文件为id_rsa
然后到jenkins配置证书点击添加证书 这里选择的是ssh username with private key username和id随便填下面框框里面填的内容为刚刚生成的私钥 id_rsa里的所有内容。 完成后会报错如下
Failed to connect to repository : Command /usr/bin/git ls-remote -h https://gitee.com/jiangbingsong/k8s-demo.git HEAD returned status code 128:
stdout:
stderr: fatal: Authentication failed for https://gitee.com/jiangbingsong/k8s-demo.git/可能原因 1.你的秘钥配置填写错误检查一下就行 2.gittee仓库的权限不是公开的把它配置成公开或者设置仓库秘钥重新配置。 仓库秘钥配置的地方如下图我配置了好几次都失败了提示成功却没有秘钥出来 然后修改为仓库公开了在基本信息下面设置仓库公开即可。
2.3 springboot项目配置maven打包
clean install这里的pom路径为相对路径根据你仓库地址到pom.xml文件的路径例如我的仓库下载下来的代码pom文件路径就是根路径下的,pom.xml
2.4 系统配置 ssh到hadoop1配置也就是k8s的master节点
Dashboard-Manage Jenkins-Systempublish over ssh 这里配置 如果没有该选项则去插件配置里面搜索这个插件安装重启一下就好了。 Passphrase 登录主机的密码
name 主机名可以随便填hostname 主机ipusername 登录用户名Remote Directory 登录到远端的地址。 编辑完成后点下测试返回sucess配置成功。
2.6 springboot项目配置拷贝jar包到远端
配置Send files or execute commands over SSH 拷贝生成的jar到远端。
target/demo-0.0.1-SNAPSHOT.jar
target
/root/dockerimage
pwd
echo “传输完成”source files jar包生成的相对目录 整个工作空间地址为 /var/lib/jenkins/workspace/springboot maven在springboot下生成target文件夹从这里开始算Remove prefix 前缀 要去掉target否则会连整个文件夹一起拷贝到远端我们只是想拷贝jar包过去所以去掉Remote directory 拷贝到远端的目录
2.5 springboot项目配置打包完成后的执行脚本
新增远端执行指令选择刚刚系统配置的远端主机 这个红色的警告不用管这个是你jenkins要带到远端的文件我这里不需要带过去就不配置了。
Remote directory 远端登录的目录Exec command 执行的指令
cd /root/dockerimage
./start.sh
./imagerm.sh这里要执行的命令我写成了shell脚本去执行脚本如下 start.sh如下
#!/bin/sh
#
# 镜像仓库地址
DOCKER_REPOSITORIES192.168.184.129:5000
# 项目名称
APP_NAMEspringbootdemo
# 初始化版本号
init_version0.0.1
#下一个版本号
nextPlatformTags
#登录到私有仓库
# 处理私服docker镜像版本号 旧的版本号
platformRepoTags$(curl -u jiangbingsong:123456 ${DOCKER_REPOSITORIES}/v2/${APP_NAME}/tags/list |jq .tags |awk -F, {print $NF}|sed s/[][]// |sed /^$/d|sed s/\//g)
echo platformRepoTags: $platformRepoTags
#去掉空格
platformRepoTags${platformRepoTags// /}
if [ $platformRepoTags null ]; then
nextPlatformTags${init_version}
else
OLD_IFS$IFS
IFS.
arryPlatTags($platformRepoTags)
IFS$OLD_IFS
# 处理私服docker镜像版本号 升级版本
nextPlatformTags${arryPlatTags[0]}.${arryPlatTags[1]}.$[arryPlatTags[2]1]
fi
# 构建的命令
APP_NAME_BUILD${DOCKER_REPOSITORIES}/${APP_NAME}:${nextPlatformTags} .
echo 构建的命令 build -t ${APP_NAME_BUILD}
docker build -t ${APP_NAME_BUILD}
#push到镜像仓库
PUSH_APP_NAME${DOCKER_REPOSITORIES}/${APP_NAME}:${nextPlatformTags}
#echo 提交到私有镜像仓库命令 docker push ${PUSH_APP_NAME}
docker login ${DOCKER_REPOSITORIES} -u jiangbingsong -p 123456
docker push ${PUSH_APP_NAME}
#docker logout
kubectl apply -f springbootDeployment.yaml
echo PUSH_APP_NAME: ${PUSH_APP_NAME}
kubectl set image -nwebservice deployment/springbootdeploy $APP_NAME${PUSH_APP_NAME}
echo success !解释下这里主要做的事有生成docker镜像查询仓库内的镜像版本号自动升级版本号使用版本号进行升级然后推送到仓库最后设置deployment的镜像镜像更新。
springbootdeploy 为你depoyment的名字 springbootDeployment.yaml 和dockerfile文章内容前面的文章有可以找找。 同时springbootDeployment.yaml做以下修改。 清理镜像脚本imagerm.sh如下 这个内容不用改直接用就行项目镜像只保留最新的2个版本
#!/bin/bash# 获取所有镜像列表并按照创建时间排序
image_list$(docker image ls --format {{.Repository}}:{{.Tag}}|{{.CreatedAt}} | sort -t | -k2,2)# 获取所有镜像名
image_names$(echo $image_list | awk -F : {print $1} | uniq)# 遍历每个镜像名
for image_name in $image_names; do# 获取特定镜像名的镜像列表filtered_images$(echo $image_list | awk -F : -v name$image_name $1 name)# 获取镜像数量image_count$(echo $filtered_images | wc -l)# 如果镜像数量超过3个则删除旧的镜像只保留最近的两个if [ $image_count -gt 3 ]; thenimages_to_delete$((image_count - 2))images_to_delete_list$(echo $filtered_images | head -n $images_to_delete | cut -d | -f 1)for image in $images_to_delete_list; dodocker image rm $imagedonefi
done2.6 验证
这里我的服务暴露的方式是nodeport也可以用ingress配置成域名登录比较麻烦前面的教程也有弄过这里这是为了集成jenkins就不搞这么多了。
kubectl get svc --all-namespaceshttp://192.168.184.129:30467/hello 返回了200验证成功。
总结
1.jenkins集成可以先不直接集成k8s可以先用jenkins集成java -jar的方式启动这样能先排除jenkins产生的问题我这里就不展示过程了就直接写成了最后的结果。 2.springbootDeployment.yaml文件的镜像拉取设置要修改一下才能拉取到。