jenkins 集成Rancher一键部署
Last updated on November 20, 2024 am
🧙 Questions
实现jenkins一键build,自动发布应用到rancher中。
此方案针对,没有harbor等镜像仓库工具,且jenkins与rancher不在同一台服务器上。
思路:
jenkins拉取指定分支代码,然后用maven打包成app.jar,通过jenkins脚本用scp将app.jar传递到指定服务器,并执行服务器上的发布脚本deploy.sh触发rancher重新发布。
☄️Ideas
创建git凭证
Dashboard –> Manage Jenkins –> Manage Credentials
注意:ID需要记录一下
配置rancher免密登录
因为需要通过scp将jenkins中的jar传到rancher的服务器上,所以需要配置免密登录
# 登录jenkins服务器,切换jenkins用户
su jenkins
ssh-copy-id ispong@rancher
创建pipline
构建pipeline脚本
credentialsId 为gitlab凭证的id
注意:
先注释掉,最后一行 sh ‘ssh ispong@172.0.0.1 'bash ~/deploy.sh'‘,然后一键build测试一下
node {
stage('checkout') {
git branch: 'master',url: 'http://git.dfy.definesys.cn/ispong/ispong-project.git',credentialsId: 'ispong-gitlab-key'
}
stage('package') {
sh 'mvn clean package -DskipTests'
}
stage('deploy') {
sh 'scp ./target/demo-0.0.1-SNAPSHOT.jar ispong@172.0.0.1:~/app.jar'
sh 'ssh ispong@172.0.0.1 \'bash ~/deploy.sh\''
}
}
编写Dockerfile脚本
上一步执行成功后,是否在服务器中出现app.jar文件,在同级目录新建文件Dockerfile
vim Dockerfile
FROM openjdk:8
ADD app.jar app.jar
ENV TZ=Asia/Shanghai
EXPOSE 8080
CMD java -jar app.jar --server.port=8080
编写deploy.sh部署脚本
vim deploy.sh
docker build -t ispong/demo:0.0.1 .
执行部署脚本
chmod a+x deploy.sh
bash deploy.sh
rancher创建容器
启动测试容器
申请rancher api token
修改部署脚本 deploy.sh (api的方式)
https://${ip}:${port}/v3/project/${cluster}/workloads/deployment:${namespace}:${podName}
# rancher 容器减1
curl -X PUT 'https://127.0.0.1:4443/v3/project/c-j5d24:p-7cfgg/workloads/deployment:ispong-dev:ispong-project' -H 'Content-Type: application/json' -H 'Authorization: Bearer token-k9k87:xxxxxxxxxxxxxxxxx65zm7krrrq9zntzj4ptht7chqr' -d '{"scale":0}' --insecure
# 重新打包镜像
docker build -t ispong/demo:0.0.1 .
# rancher 容器加1
curl -X PUT 'https://127.0.0.1:4443/v3/project/c-j5d24:p-7cfgg/workloads/deployment:ispong-dev:ispong-project' -H 'Content-Type: application/json' -H 'Authorization: Bearer token-k9k87:xxxxxxxxxxxxxxxxx65zm7krrrq9zntzj4ptht7chqr' -d '{"scale":1}' --insecure
修改部署脚本 deploy.sh (命令的方式)
# rancher 容器减1
kubectl scale deployment ispong-container --replicas=1 -n ispong-dev
# 重新打包镜像
docker build -t ispong/demo:0.0.1 .
# rancher 容器加1
kubectl scale deployment ispong-container --replicas=1 -n ispong-dev
测试
重新提交代码 将hello1改为hello2
测试成功
🔗 Links
jenkins 集成Rancher一键部署
https://ispong.isxcode.com/kubernetes/jenkins/jenkins 集成Rancher一键部署/