专栏首页python3jenkins Redeploy Rancher2.x Workload插件实现CI/CD

jenkins Redeploy Rancher2.x Workload插件实现CI/CD

一、概述

在上一篇文章,链接如下:

https://www.cnblogs.com/xiao987334176/p/13074198.html

已经实现了基于Jenkins+Gitlab+Harbor+Rancher+k8s CI/CD,但是有一个问题,需要jenkins ssh登录到k8s master节点执行kubectl修改镜像地址。

但是由于安全问题,不允许jenkins  ssh登录到k8s master节点。这个时候,可以通过Redeploy Rancher2.x Workload插件来完成修改镜像地址。

这样就避免了ssh登录问题。

二、Rancher创建api key

这个是给Jenkins来使用的。

点击用户右上角-->API & Keys

添加key

输入描述,选择永不过期,这里不指定作用范围。

请根据实际情况来原则

创建成功后,一定要保存。它只会显示一次 

对于Redeploy Rancher2.x Workload Plugin而言,它只需要用到2个参数。

API访问地址:
https://10.212.82.86/v3

Bearer Token:
token-96p7n:d8sw4vlff68kqspcwnflbwpptt565c5cszltwbhgb4wcz9w6k5fxmj

下面会重点介绍

三、jenkins配置

插件安装

Redeploy Rancher2.x Workload

这个插件是专门针对Rancher2.x版本的,1.x版本的插件为Rancher

Environment Injector

这个插件是用来修改jenkins 环境变量用的。

添加凭据

点击凭据

点击进去

再点击

 添加凭据

类型选择rancher2.x API Keys

说明:

ID:  这个是唯一的,随便填写。

描述: 随便填写

Endpoint:Rancher api地址,上面Rancher api keys里面的信息

Trust certification:信任证书,这里一定要勾选。

Bearer Token:不记名token,,上面Rancher api keys里面的信息

填写完成后,点击Test Connection按钮,出现Connect Succeed!,表示连接成功。

最后点击保存。

新建job

名称为:test_admin_rancher,选择自由风格。

通用配置

参数化构建

源码管理

执行shell脚本

完整代码如下:

export HARBOR_PROJECT='10.212.82.86:1180/java/admin-master'

case $Status  in
  Deploy)
    echo "Status:$Status"
    cd ${WORKSPACE}
    mvn -f pom.xml clean package
    cp dockerfile target
    cd target
    docker build -t ${HARBOR_PROJECT}:${BUILD_NUMBER} .
    docker push ${HARBOR_PROJECT}:${BUILD_NUMBER}
    docker rmi ${HARBOR_PROJECT}:${BUILD_NUMBER}
    echo "BUILD_ID=${BUILD_NUMBER}" > ${WORKSPACE}/env.txt
    echo "Completing!"
    ;;
  Rollback)
      echo "Status:$Status"
      echo "Version:${BUILD_ID}"
      echo "BUILD_ID=${BUILD_ID}" > ${WORKSPACE}/env.txt
      ;;
  *)
  exit
      ;;
esac

 这里有2个步骤,分别是发布和回滚。在最后一步时,写入了一个env.txt,它就是用来修改jenkins环境的。

注入环境变量

写入路径 ${WORKSPACE}/env.txt

重新部署Rancher2.x工作负载

内容如下:

说明:

第一行显示乱码的,就是上面jenkins创建的凭证

Workload API Path:工作api路径,注意:必须是以/project开头的。先来登录Rancher后台,查看工作负载

先找到我需要发布的应用admin-master-->api查看

跳转的url为:

https://10.212.82.86/v3/project/c-l5nxb:p-dghs7/workloads/statefulset:default:admin-master

那么Workload API Path的值,就是:以/project/开头,一直到后面部分。也就是上面我截图显示的。

Always Pull Image:这里表示总是拉取镜像

Update Images:更新的镜像地址。10.212.82.86:1180/java/admin-master:${BUILD_ID},注意:这里有一个变量BUILD_ID。发布和回滚时,都会用到此变量。

表示镜像的版本!

最后点击保存

四、测试发布和回滚

发布

先来看目录运行的镜像版本,显示是32

登录jenkins,发布一下。

点击Build with Parameters

点击开始构建

查看控制台输出:

+ export HARBOR_PROJECT=10.212.82.86:1180/java/admin-master
+ HARBOR_PROJECT=10.212.82.86:1180/java/admin-master
+ case $Status in
+ echo Status:Deploy
Status:Deploy
+ cd /var/lib/jenkins/workspace/test_admin_rancher
+ mvn -f pom.xml clean package
...
+ echo BUILD_ID=1
+ echo 'Completing!'
Completing!
[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path '/var/lib/jenkins/workspace/test_admin_rancher/env.txt'
[EnvInject] - Variables injected successfully.
set image tag from "10.212.82.86:1180/java/admin-master:32" to "10.212.82.86:1180/java/admin-master:1"
redeploy Rancher2.x workload succeed!
Finished: SUCCESS

可以看到镜像更新为:10.212.82.86:1180/java/admin-master:1

登录jenkins服务器,查看环境变量文件

# cat /var/lib/jenkins/workspace/test_admin_rancher/env.txt
BUILD_ID=1

注意:此文件定义的环境会覆盖jenkins的环境变量,因此镜像版本为1。

刷新Rancher页面,发现地址已经更改过来了。

回滚

假设我需要回滚版本到32,请确保harbor仓库中,此镜像存在。

选择回滚,输入32

查看控制台输出:

+ export HARBOR_PROJECT=10.212.82.86:1180/java/admin-master
+ HARBOR_PROJECT=10.212.82.86:1180/java/admin-master
+ case $Status in
+ echo Status:Rollback
Status:Rollback
+ echo Version:32
Version:32
+ echo BUILD_ID=32
[EnvInject] - Injecting environment variables from a build step.
[EnvInject] - Injecting as environment variables the properties file path '/var/lib/jenkins/workspace/test_admin_rancher/env.txt'
[EnvInject] - Variables injected successfully.
set image tag from "10.212.82.86:1180/java/admin-master:1" to "10.212.82.86:1180/java/admin-master:32"
redeploy Rancher2.x workload succeed!
Finished: SUCCESS

可以看到镜像更新为:10.212.82.86:1180/java/admin-master:32

登录jenkins服务器,查看环境变量文件

# cat /var/lib/jenkins/workspace/test_admin_rancher/env.txt
BUILD_ID=32

注意:此文件定义的环境会覆盖jenkins的环境变量,因此镜像版本为32。

刷新Rancher页面,发现地址已经更改过来了。

总结

通过jenkins Redeploy Rancher2.x Workload插件,调用Rancher api,修改镜像地址,完成了应用服务的发布和回滚。

在上篇文章中,用到了Pipeline。但是这篇文章中,用的是自由风格。

其实我也想用Pipeline,但是我不知道如何在Pipeline中调用Redeploy Rancher2.x Workload插件,所以只能用自由风格了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python day 02

    py3study
  • 使用python3.x实现打印99乘法表

    6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 

    py3study
  • Python之指数与E记法

    py3study
  • virink的web题

    这里发现服务器是用OpenResty服务器,这里pcat科普下:OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库...

    ChaMd5安全团队
  • Selenium2+python自动化46-js解决click失效问题

    前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应。这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了。 本篇用2种方法解决...

    上海-悠悠
  • A Tutorial on Network Embeddings

    NE 的中心思想就是找到一种映射函数,该函数将网络中的每个节点转换为低维度的潜在表示

    超然
  • 对网络嵌入的隐私攻击

    原文题目: Privacy Attacks on Network Embeddings

    吴亚芳
  • 降低PNG图片存储大小方法、图片压缩方法

    降低PNG图片存储大小方法,图片压缩方法,如何降低PNG图片存储大小?前提是分辨率和尺寸大小不变,图形的透明部分不变。请看如下办法,亲测可用。 1. 将PNG图...

    王小雷
  • 如何制作U盘启动器?

    下面,在Windows 操作系统上,以制作一个 Centos 版本的 U盘启动器为例, 进行说明。

    云雀叫了一整天
  • Android 远程调试 WebView 加载缓慢

    事情的缘由,因为老韩某天贱嗖嗖的说,来,你搜下那个课程,现在免费,原价好几百,请你看。

    HLQ_Struggle

扫码关注云+社区

领取腾讯云代金券