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}'")


浙公网安备 33010602011771号