jenkins传统模式发布istio应用
Posted assion
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins传统模式发布istio应用相关的知识,希望对你有一定的参考价值。
一、发布金丝雀版本
Pre Setps
cd /var/lib/jenkins/workspace/istio-service-user-canary/istio-service-user # 旧版本号验证 if [ "$oldVersion" == "" ];then echo "旧版本号不能为空" return 0 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 0 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-1.myhuaweicloud.com/mk-develop/istio-service-user:$gittag docker push swr.ap-southeast-1.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 0 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 0 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 0 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 0 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
以上是关于jenkins传统模式发布istio应用的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:Jenki(