一、发布金丝雀版本

 

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 

 

posted @ 2019-08-13 21:50 Assion Yang 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 通过Kubernetes+Istio的流量控制实现灰度发布,主要演示通过流量权重实现蓝绿,通过http自定义头实现金丝雀 准备环境 k8s和istio不想自己装的话可以在云上买个按量付费集群,用完即删,推荐华为云。 项目中用到的代码 用的springboot+springcloud feign做re 阅读全文
posted @ 2019-08-09 13:36 Assion Yang 阅读(9344) 评论(1) 推荐(3) 编辑
摘要: ingressgateway的默认网络类型是LoadBanlancer,在没有外部负载均衡的情况下可以修改为NodePort。 1、修改 2、查看ID与端口 3、访问方式 可通过节点的IP+端口访问,也可以手动挂个LB进来 阅读全文
posted @ 2019-08-09 11:23 Assion Yang 阅读(3374) 评论(0) 推荐(0) 编辑
摘要: 1、环境变量配置项 2、文件挂载配置项,日志文件 3、发布与服务 阅读全文
posted @ 2019-07-30 11:57 Assion Yang 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 一、微服务与SOA “微服务”是一个名词,没有这个名词之前也有“微服务”,一个朗朗上口的名词能让大家产生一个认知共识,这对推动一个事务的发展挺重要的,不然你叫微服务他叫小服务的大家很难集中到一个点上。 业界对微服务与SOA的区别争论比较多大多都是在微观上对比他们的区别什么微服务粒度更细啊、微服务没有 阅读全文
posted @ 2019-07-26 14:21 Assion Yang 阅读(5459) 评论(2) 推荐(6) 编辑
摘要: 一、微服务与SOA “微服务”是一个名词,没有这个名词之前也有“微服务”,一个朗朗上口的名词能让大家产生一个认知共识,这对推动一个事务的发展挺重要的,不然你叫微服务他叫小服务的大家很难集中到一个点上。 业界对微服务与SOA的区别争论比较多大多都是在微观上对比他们的区别什么微服务粒度更细啊、微服务没有 阅读全文
posted @ 2019-07-26 12:39 Assion Yang 阅读(5929) 评论(0) 推荐(3) 编辑
摘要: [PHP]yum install libxml2-develyum install gd-develyum install libmcrypt-develyum install libcurl-develyum install openssl-develyum install php-soap -y 阅读全文
posted @ 2017-12-07 21:47 Assion Yang 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 目标 研发一套独立的消息系统,此系统进行集中配置管理供各业务系统使用,用于支撑站内信、短信通知、短信验证码、邮件、微信消息、APP消息、IM等消息形式。 架构 1) 基于消息队列采用发布、订阅模式。消息的生产者为对外的消息接口,接收业务系统消息后将消息写入到消息队列指定的topic,订阅者对消息进行 阅读全文
posted @ 2017-10-27 09:08 Assion Yang 阅读(3564) 评论(0) 推荐(2) 编辑
摘要: 物流服务合同 甲方: 合同编号: 乙方: 签订时间:年 月 日 根据《中华人民共和国合同法》和有关规定,就甲方委托乙方运输、储存保管货物事宜,经双方协商一致,签订本合同。 第一条 储存货物地点、保管期限 地点: 保管期限:从20年 月 日至20 年 月 日止。若双方无提出终止合同的书面要求,合同顺延 阅读全文
posted @ 2017-09-01 17:29 Assion Yang 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-08-23 10:16 Assion Yang 阅读(4079) 评论(1) 推荐(0) 编辑
点击右上角即可分享
微信分享提示