基于python3实现对k8s服务的更新发布

前置条件

1、已安装python3
2、k8s服务已发布
3、将k8s集群的认证配置文件拷贝到当前目录下

实现方法

cat k8s_svc_deploy.py

#!/usr/bin/env python3
# Description:update k8s service
# Author: wangkx
import sys
import subprocess
import yaml
import os
#前置条件,判断输入的参数是否满足脚本传参
if len(sys.argv) != 5:
    print('参数不匹配,请输入合理的参数,格式如下: %s ns_name svc_name image_version pod_replicats_num' % (__file__))
    sys.exit(51)
#传参
ns = str(sys.argv[1])
deploy = str(sys.argv[2])
image = str(sys.argv[3])
rs = int(sys.argv[4])
#导出svc的yaml文件生成模板
def cmd(cmd):
    code,result = subprocess.getstatusoutput(cmd)
    if code != 0:
        print("command not find")
        sys.exit(51)
    return code,result
code,result = cmd('kubectl --kubeconfig ./config  get deployment -n ' + ns + ' ' + deploy + ' -o yaml > deploy.tmp')

#读取yaml文件,根据传入的参数进行替换yaml模板中的参数
with open('deploy.tmp','r') as f:
    datas = yaml.load(f,Loader=yaml.FullLoader)
    datas['spec']['template']['spec']['containers'][0]['image'] = image
    datas['spec']['replicas'] = rs
#    datas['metadata']['namespace'] = ns
#    datas['metadata']['name'] = deploy
#将传入的参数写入到yaml模板中
with open('deploy.tmp','w') as f1:
    yaml.dump(datas,f1)
    
#部署到k8s
codes,result = cmd('kubectl --kubeconfig ./config apply -f  deploy.tmp')
if codes != 0:
    print('部署pod失败,请检查')
else:
    print('部署pod成功')

验证

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44729138/article/details/121042953