将相本无种,男儿当自强。这篇文章主要讲述k8s在jenkins构建,如何回滚和升级23相关的知识,希望能为你提供帮助。
在自动化发布的时候,会遇到升级和回滚,生产一旦出现异常需要回滚到上一个版本
这里使用pipline来实现,但是需要input做判断,才可以
大概思路是
gitlab拉取代码,然后mvn编译,dockerbuild构建镜像,push到harbor仓库,完成之后开始启动yaml,这里会有个判断是升级还是跳过,y表示升级,n表示跳过,在然后有个判断是回滚,y表示回滚上个版本,n表示跳过
接下来看看配置如下
node(\'haimaxy-jnlp\'){
stage(\'Clone\') {
echo "1.Clone Stage"
git credentialsId: \'5789c68f-ebf6-45b8-b9e5-5648c1a3eb09\', url: \'http://139.155.71.51/root/tomcat.git\'
script {
//获取comment id
env.imageTag = sh (script: \'git rev-parse --short HEAD ${GIT_COMMIT}\', returnStdout: true).trim()
}
}
stage(\'build\') {
echo "2.mvn clean"
sh "cd /home/jenkins/agent/workspace/bbs/solo-master &
&
mvn clean -Dmaven.test.skip=trueinstall -s /home/jenkins/settings/settings.xml"
}
stage(\'build dockerfile\') {
echo "3.build dockerfile"
sh \'\'\'
cd /home/jenkins/agent/workspace/bbs/solo-master/target
REPOSITORY=10.4.7.52/cnych/jenkins-demo:${imageTag}
cat >
>
Dockerfile <
<
EOF
FROM tomcat:7
RUN mkdir /usr/local/tomcat/webapps/ROOT
ADD ./solo.war /usr/local/tomcat/webapps/ROOT
USER root
EOF
docker build -t $REPOSITORY .
\'\'\'
}
stage(\'docker push\') {
echo "docker run"
sh \'\'\'
REPOSITORY=10.4.7.52/cnych/jenkins-demo:${imageTag}
docker login http://10.4.7.52 -u admin -p Harbor12345
docker push $REPOSITORY
\'\'\'
}
stage(\'kubectl apply\'){
echo "kubectl apply"
echo "是否需要需要升级?"
def userInput = input(
id: \'userInput\',
message: \'是否需要升级?\',
parameters: [
[
$class: \'ChoiceParameterDefinition\',
choices: "N\\nY",
name: \'升级?\'
]
]
)
if (userInput == "Y") {
sh \'\'\'
REPOSITORY=10.4.7.52/cnych/jenkins-demo:${imageTag}
cat >
>
tomcat.yaml <
<
EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-deployment
labels:
app: tomcat
spec:
replicas: 3
selector:
matchLabels:
app: tomcat
minReadySeconds: 5
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: \\$REPOSITORY
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tomcat-service
labels:
app: tomcat
spec:
ports:
- port: 8080
targetPort: 8080
nodePort: 31305
selector:
app: tomcat
type: NodePort
EOF
kubectl set image deployment/tomcat-deployment tomcat=$REPOSITORY -n kube-ops
\'\'\'
}
}
stage(\'rollout\') {
echo "是否需要快速回滚?"
def userInput = input(
id: \'userInput\',
message: \'是否需要快速回滚?\',
parameters: [
[
$class: \'ChoiceParameterDefinition\',
choices: "N\\nY",
name: \'回滚?\'
]
]
)
if (userInput == "Y") {
sh "kubectl rollout undo deployment tomcat-deployment -n kube-ops"
}
}
}
文章图片
文章图片
接下来我们验证一下,原来镜像是这个,10.4.7.52/cnych/jenkins-demo:34f2191
文章图片
文章图片
接下来我们开始升级一下镜像
首先需要给gitlab更新一下配置,保证gitlab的配置变化一下
文章图片
文章图片
上传完成,然后gitlab看一下
文章图片
接下来开始构建镜像自动化流程
文章图片
文章图片
文章图片
完成之后我们看看镜像是否有升级
文章图片
和原来的对比已经升级了
【k8s在jenkins构建,如何回滚和升级23】
接下来我们测试回滚
比如这个新镜像有问题,要回退
文章图片
回退直接构建就行,啥也不用动
kubectl rollout undo deployment tomcat-deployment -n kube-ops这个命令是直接回退上个版本,
如果其他版本要使用version指定版本号
文章图片
文章图片
接下来我们看看镜像
文章图片
说明已经回退完成,这里是滚动更新,每次增加一个新的,删掉一个旧的,不能一下都删除访问出现不能访问
好了演示到这里,有啥问题可以评论反馈沟通
推荐阅读
- 快速集成Citrix ADC与Istio,实现微服务应用内的流量优化!
- 如何使用Electron Framework执行.bat文件,接收数据和错误
- WuMgr(一个开放源代码工具,用于管理Windows OS上的Microsoft产品更新)
- 如何在Windows中使用Electron框架为桌面(html,css和javascript)创建混合应用程序
- Android Log Viewer(一个日志查看器工具,可简化实时对Android日志的分析)
- 如何将相机与Electron Framework一起使用(创建快照)并将图像保存在系统上
- Electron框架的语音命令(语音识别)和语音合成
- 如何在Electron Framework中使用node.js(SSH2)创建sftp客户端
- 如何使用Electron框架获取操作系统和硬件信息