jenkins 集成Rancher一键部署

Last updated on September 15, 2024 pm

🧙 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需要记录一下

20220917142432

20220917142654

配置rancher免密登录

因为需要通过scp将jenkins中的jar传到rancher的服务器上,所以需要配置免密登录

# 登录jenkins服务器,切换jenkins用户
su jenkins
ssh-copy-id ispong@rancher

创建pipline

20220917142842

20220917142938

构建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

20220917144352

rancher创建容器

20220917144425

20220917144554

20220917144634

20220917144705

启动测试容器

20220917144835

申请rancher api token

20220917160726

20220917160752

20220917160814

20220917160855

修改部署脚本 deploy.sh (api的方式)

20220917145113

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

20220917145513

20220917145615

测试成功


jenkins 集成Rancher一键部署
https://ispong.isxcode.com/kubernetes/jenkins/jenkins 集成Rancher一键部署/
Author
ispong
Posted on
December 20, 2020
Licensed under