一、jenkins使用官方镜像(官方镜像默认是jenkins用户,权限太低)

  因此通过dockerfile重新改为root启动

  

FROM         jenkins/jenkins:lts
MAINTAINER dwy COPY get-pip.py /tmp/
# if we want to install via apt
USER root
RUN python /tmp/get-pip.py \
&& pip install requests RUN apt-get update && apt-get install -y apt-transport-https \
&& curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \
&& chmod +x ./kubectl \
&& mv ./kubectl /usr/local/bin/kubectl \
&& mkdir /root/.kube \
&& touch /root/.kube/config \
&& apt-get install vim -y # drop back to the regular jenkins user - good practice
#USER jenkins

二、容器启动后,创建/root/.kube/config文件

然后在k8s集群里面下载对应kubeconfig.json,将文件内容复制到/root/.kube/config里面

三、jenkins安装python插件

具体代码如下

 #!/usr/bin/env python
# -*- coding: utf-8 -*- import requests
import json,sys
from subprocess import Popen,PIPE image_tag_list = [
["hlike","nginx","201804h2_0721"],
["hlik","slm",""],
] for n,li in enumerate(image_tag_list,1):
print "num %s execute: ******************************************************************" %n
namespace = li[0]
repository = li[1]
tag = li[2] #文件读取出
uri="swr-api.cn-north-1.myhuaweicloud.com" #北京swr-api
url = "https://%s/v2/manage/namespaces/%s/repos/%s/tags" %(uri,namespace,repository) #根据官方容器镜像仓库api获取对应image:tag
res = requests.get(url, headers=headers).json() #这里我没写token,具体仓库,具体自己分析一下api如何获取信息,
tag_exist = False if type(res) == dict and res.has_key("errors"):
print "log: %s/%s is wrong!!!!!" %(namespace,repository)
sys.exit(1)
for line in res: #循环返回的结果,得到镜像对应信息
if line["Tag"] == tag :#比较返回tag和文件里面的tag是否有相等,若相等,说仓库存在对应镜像
tag_exist = True
print "%s/%s %s is exist!!!!!!!!!" % (namespace, repository, tag)
updated = line["updated"]
path = line["path"]
cmd1 = "kubectl set image deployment/%s %s=%s" %(repository,repository,path)
print "log: now is setting image,cmd: ",cmd1
ret = excute(cmd1)
print ret
if not tag_exist:
print "log: %s/%s %s is not exist" %(namespace,repository,tag)
sys.exit(1)

jenkins+python+kubectl实现批量更新k8s镜像的更多相关文章

  1. 更新k8s镜像版本的三种方式

    一.知识准备 更新镜像版本是在k8s日常使用中非常常见的一种操作,本文主要介绍更新介绍的三种方法 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-c ...

  2. 利用pip批量更新python库

    如果python库比较旧,需要更新到最新版本,可以利用pip工具. DOS命令行下,输入pip -V查看pip版本,可以先把pip更新到新版本. 查看系统里过期的python库 pip list #列 ...

  3. python安装包及批量更新包

    python安装包 # pip安装 pip install pyecharts # 源码安装 - linux git clone https://github.com/pyecharts/pyecha ...

  4. 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷

    利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined

  5. 微软在MSDN中更新了Win8.1批量授权版镜像(中文版更新完毕&版本说明)

    微软在MSDN中更新了Win8.1大客户专业版和企业版镜像,零售版镜像(即专业版+核心版二合一镜像)没有更新,依然是9月份发布的版本.已证实,新的批量授权版镜像是集成了GA Rollup A更新,并且 ...

  6. pip --upgrade批量更新过期的python库

    pip --upgrade批量更新过期的python库 python pip 转载请标明出处:marsggbo网易博客http://blog.163.com/hexin_mars_blog/blog/ ...

  7. PIP 批量更新改为清华这边的镜像更新

    之前pip批量更新的时候发现有些包无法更新,而且速度也特别慢,今天尝试了下清华的镜像,速度是真快 # coding=utf-8import pipfrom subprocess import call ...

  8. Python批量更新模块的方法【面试必学】

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:ranchlin      小编的环境为win10+python 3. ...

  9. 使用Python批量更新服务器文件【新手必学】

    买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的h ...

随机推荐

  1. SpringMVC 拦截器实现原理和登录实现

    SpringMVC 拦截器的原理图 springMVC拦截器的实现一般有两种方式 第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口 第二种方 ...

  2. Vue源码解析之数组变异

    力有不逮的对象 众所周知,在 Vue 中,直接修改对象属性的值无法触发响应式.当你直接修改了对象属性的值,你会发现,只有数据改了,但是页面内容并没有改变. 这是什么原因? 原因在于: Vue 的响应式 ...

  3. bzoj1654 / P2863 [USACO06JAN]牛的舞会The Cow Prom

    P2863 [USACO06JAN]牛的舞会The Cow Prom 求点数$>1$的强连通分量数,裸的Tanjan模板. #include<iostream> #include&l ...

  4. web.xml配置详解之listener

    web.xml配置详解之listener 定义 <listener> <listener-class>nc.xyzq.listener.WebServicePublishLis ...

  5. 20145318《网络对抗》Web安全基础实践

    20145318<网络对抗>Web安全基础实践 基础问题回答 1.SQL注入原理,如何防御 SQL注入 就是通过把SQL命令插入到“Web表单递交”或“输入域名”或“页面请求”的查询字符串 ...

  6. 20145334赵文豪 WEB基础实践

    实验问题回答 1.什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上传框等 表单 ...

  7. Java 多线程中的任务分解机制-ForkJoinPool,以及CompletableFuture

    ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行:当多个“小任务”执行完成之后,再将这些执行结果 ...

  8. github上的markdown如何换行

    https://gist.github.com/shaunlebron/746476e6e7a4d698b373 1.普通的换行 在文本结束后面,加2个空格 2.段落之间的换行 使用反斜杠\

  9. 封装TeeChart控件

    public class MyChart { //字段 private TChart tChart; /// <summary> /// 构造函数,默认不是3D效果 /// </su ...

  10. [BZOJ 2200][Usaco2011 Jan]道路和航线 spfa+SLF优化

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...