jenkins传统模式发布istio应用
2024-09-01 16:09:24
一、发布金丝雀版本
Pre Setps
cd /var/lib/jenkins/workspace/istio-service-user-canary/istio-service-user # 旧版本号验证 if [ "$oldVersion" == "" ];then
echo "旧版本号不能为空"
return
fi
/usr/local/bin/kubectl get virtualservice istio-service-user -o yaml > k8s/vsold.yaml
vsold=$(cat k8s/vsold.yaml)
if [[ $vsold =~ $oldVersion ]];then
echo "旧版本包含"
else
echo "旧版本不包含"
return
fi
maven
-pl istio-service-user -am clean package
Post Steps
cd /var/lib/jenkins/workspace/istio-service-user-canary/istio-service-user # 使用GitTag作为版本打docker镜像并上传至镜像仓库
docker build -t istio-service-user:${gittag} .
docker tag istio-service-user:${gittag} swr.ap-southeast-.myhuaweicloud.com/mk-develop/istio-service-user:${gittag}
docker push swr.ap-southeast-.myhuaweicloud.com/mk-develop/istio-service-user:${gittag} # 使用GitTag作为版本部署实例
sed -i "s/gittag/${gittag}/g" k8s/istio-service-user-deployment.yaml
mv -f k8s/istio-service-user-deployment.yaml k8s/istio-service-user-deployment-${gittag}.yaml
/usr/local/bin/kubectl apply -f k8s/istio-service-user-deployment-${gittag}.yaml # 目标规则加入新GitTag版本
/usr/local/bin/kubectl get destinationrules istio-service-user -o yaml > k8s/istio-service-user-destinationrule.yaml
destrule=$(cat k8s/istio-service-user-destinationrule.yaml)
if [[ $destrule =~ $gittag ]];then
echo "目标规则包含"
else
sed -i "\$a\ - name: ${gittag}" k8s/istio-service-user-destinationrule.yaml
sed -i "\$a\ labels:" k8s/istio-service-user-destinationrule.yaml
sed -i "\$a\ version: ${gittag}" k8s/istio-service-user-destinationrule.yaml
fi
/usr/local/bin/kubectl apply -f k8s/istio-service-user-destinationrule.yaml # 服务路由加入新版本金丝雀
sed -i "s/jsqVersion/${gittag}/g" k8s/istio-service-user-virtualservice-jsq.yaml
sed -i "s/currentVersion/${oldVersion}/g" k8s/istio-service-user-virtualservice-jsq.yaml
/usr/local/bin/kubectl apply -f k8s/istio-service-user-virtualservice-jsq.yaml
二、切换为生产版本(上线)
Pre Steps
cd /var/lib/jenkins/workspace/istio-service-user-canary/istio-service-user # 生产版本号验证
if [ "$proVersion" == "" ];then
echo "生产版本号不能为空"
return
fi
/usr/local/bin/kubectl get virtualservice istio-service-user -o yaml > k8s/vspro.yaml
vspro=$(cat k8s/vspro.yaml)
if [[ $vspro =~ $proVersion ]];then
echo "生产版本存在"
else
echo "生产版本不存在"
return
fi #替换生产版本号
sed -i "s/proVersion/${proVersion}/g" k8s/istio-service-user-virtualservice-pro.yaml
mv -f k8s/istio-service-user-virtualservice-pro.yaml k8s/istio-service-user-virtualservice-${proVersion}.yaml
/usr/local/bin/kubectl apply -f k8s/istio-service-user-virtualservice-${proVersion}.yaml
rm -rf k8s/istio-service-user-virtualservice-${oldVersion}.yaml if [ "$oldVersion" == "" ];then
echo "未下线旧版本"
else
/usr/local/bin/kubectl delete -f k8s/istio-service-user-deployment-${oldVersion}.yaml
rm -rf k8s/istio-service-user-deployment-${oldVersion}.yaml
fi
三、下线已上线金丝雀(回滚)
Pre Steps
cd /var/lib/jenkins/workspace/istio-service-user-canary/istio-service-user # 金丝雀版本号验证
if [ "$jsqVersion" == "" ];then
echo "金丝雀版本号不能为空"
return
fi
/usr/local/bin/kubectl get virtualservice istio-service-user -o yaml > k8s/vspro.yaml
vspro=$(cat k8s/vspro.yaml)
if [[ $vspro =~ $proVersion ]];then
echo "金丝雀版本号存在"
else
echo "金丝雀版本号不存在"
return
fi #替换生产版本号
/usr/local/bin/kubectl apply -f k8s/istio-service-user-virtualservice-${rollbackVersion}.yaml #删除金丝雀版本发布
/usr/local/bin/kubectl delete -f k8s/istio-service-user-deployment-${jsqVersion}.yaml
rm -rf k8s/istio-service-user-deployment-${jsqVersion}.yaml
最新文章
- Mock方法介绍
- Mono addin 学习笔记 4 再论数据扩展点(Data only extension point)
- kafka的推和拉的问题
- 解决在 MVC 局部视图中加载 ueditor 编辑器时, 编辑器加载不出的 bug
- C# 连接SQL数据库 常用连接字符串
- javascript模拟title提示效果
- Java 中字两个字符串判断是否相等(转载)
- 捋一捋js面向对象的继承问题
- netcore中的缓存介绍
- 【5】学习C++之类的概念
- 创建自己的library类库包并使用webpack4.x打包发布到npm
- python-写入excel(xlswriter)
- 抓取mooc中国随笔
- netcore的Session使用小记
- vbs常用函数
- SQLite的升级(转)
- 【洛谷 P2783】 有机化学之神偶尔会做作弊 (双联通分量)
- PHP练习题二
- selenium webdriver——鼠标事件
- 201621123016《Java程序设计》第二周学习总结
热门文章
- PHP 字符串大全
- jQuery淡入淡出轮播图实现
- Python读字节某一位的值,设置某一位的值,二进制位操作
- Git仓库分支管理
- 华为hcnp r&;s考试一共有三门,R&;S-IERS,R&;S-IENP,R&;S-IEEP
- 设计模式-工厂模式(Factory)(创建型模式)
- PHP程序执行的过程原理
- 50行Python代码实现视频中物体颜色识别和跟踪
- Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类
- Git错误:error:failed to push some refs to 'git@gitee.com:name/project.git'