基于kubernetes Api完成更新镜像版本

kubernetes Api python client 相关内容信息 Github地址:
https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md

目前公司才用的镜像更新的方式为,jenkins服务器执行一个镜像更新shell脚本,脚本中通过使用ansible从而达到从kubernetes master执行更新命令,从而达到镜像版本的更新,后期需考虑逐步通过python得到需更新的镜像,与版本以及deployment直接通过调用kubernetes Api完成对更镜像的版本更新。

所以特此学习Kubernetes Api 熟悉该Api的调用

代码如下:


# !/usr/bin/python3
# -*- coding: utf-8 -*-
'''replace_namespace_deployment,快速替换deployment需要升级或回滚的镜像'''

import os
from kubernetes import client, config
from kubernetes.client.rest import ApiException


def read_deployment(name, namespace, update_image):
    body = api_instance.read_namespaced_deployment(name, namespace)
    # 修改镜像版本为指定
    body.spec.template.spec.containers[0].image = update_image
    return body


def replace_deployment(name, namespace, body):
    try:
        api_response = api_instance.replace_namespaced_deployment(name, namespace, body)
        print("\033[0;32m{} 中deployment : {} {}更新完成\033[0m".format(namespace, name, update_image))
    except ApiException as e:
        print("Exception when calling AppsV1Api->replace_namespaced_deployment: %s\n" % e)


if __name__ == "__main__":
    # kubernetes生成时/root目录下.kube目录下的认证配置文件
    kube_conf = os.path.join('F:\\', 'k8s', 'config2')
    config.load_kube_config(kube_conf)
    api_instance = client.AppsV1Api()

    # 传入参数配置
    name = 'nginx'
    namespace = 'default'
    update_image = 'nginx:1.12'

    # 调用函数
    body = read_deployment(name, namespace, update_image)
    replace_deployment(name, namespace, body)


亦余心之所善兮,虽九死其尤未悔。
抒发下情感,希望在技术这条路上继续努力,抵制住游戏的诱惑,少玩游戏。

发布了11 篇原创文章 · 获赞 7 · 访问量 1720

猜你喜欢

转载自blog.csdn.net/weixin_44956450/article/details/101160820