k8s切换Svc-selector(蓝绿环境切换脚本)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/12/22 13:53

#输入服务名:Quality.Service
#deployment 名称格式为:	cbc-qualityinspection-service-blue
#svc Selector 格式为:cbc-qualityinspection-service-blue/green
import os
ServiceName=raw_input("请输入服务名,例:Nginx.Service")

ns = ['cbc','cbe','common']
'''
暂未启用 def SvcnameStr(value): str_format=value.split('-') end_list = [] for i in str_format: if i == 'service': continue else: end_list.append(i) result = ",".join(end_list).replace(',', '-') return result ''' for namespaces in ns : SvcName = "".join( [n.strip() for n in os.popen("kubectl -n %s get svc |grep -iE %s | awk '{print $1}'"%(namespaces,ServiceName)).readlines()]) print SvcName if SvcName == "": continue else: # 检测当前服务运行环境 RunSvcname = "".join([n.strip() for n in os.popen( "kubectl describe svc -n %s %s | grep Selector | awk -F '=' '{print $2}'" % (namespaces,SvcName)).readlines()]) if "blue" in RunSvcname: print "%s,当前运行环境(%s),切换绿色环境" % (SvcName, RunSvcname) #SvcStr= SvcnameStr(SvcName) #print SvcStr "".join([n.strip() for n in os.popen( "kubectl patch svc %s -n %s --type='json' -p '[{\"op\":\"replace\",\"path\":\"/spec/selector/app\",\"value\":\"%s-green\"}]'" % ( SvcName,namespaces,SvcName)).readlines()]) green = "".join([n.strip() for n in os.popen( "kubectl describe svc -n %s %s | grep Selector | awk -F '=' '{print $2}'" % (namespaces,SvcName)).readlines()]) print "切换环境为 %s" %(green) else: print "%s,当前运行环境(%s),切换蓝色环境" % (SvcName, RunSvcname) #SvcStr = SvcnameStr(SvcName) #print SvcStr # cmd = "kubectl patch svc cbc-nginx-service -n cbc --type='json' -p '[{\"op\":\"replace\",\"path\":\"/spec/selector/app\",\"value\":\"cbc-nginx-green\"}]'" "".join([n.strip() for n in os.popen( "kubectl patch svc %s -n %s --type='json' -p '[{\"op\":\"replace\",\"path\":\"/spec/selector/app\",\"value\":\"%s-blue\"}]'" % ( SvcName,namespaces,SvcName)).readlines()]) blue = "".join([n.strip() for n in os.popen( "kubectl describe svc -n %s %s | grep Selector | awk -F '=' '{print $2}'" % (namespaces,SvcName)).readlines()]) print "切换环境为 %s" % (blue) # print RunSvcname # os.popen("kubectl describe svc -n cbc cbc-webv3-service-ingress | grep Selector | awk -F '=' '{print $2}'") # os.popen("kubectl get svc -A |grep -iE QualityInspection-Service | awk '{print $2}'")

 

 

posted @ 2021-12-23 11:32  NeilyoX  阅读(313)  评论(0)    收藏  举报