前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jenkins Redeploy Rancher2.x Workload插件实现CI/CD

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

作者头像
py3study
发布2020-07-07 15:15:17
1.4K0
发布2020-07-07 15:15:17
举报
文章被收录于专栏:python3python3

一、概述

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

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

1.png
1.png

添加key

1.png
1.png

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

请根据实际情况来原则

1.png
1.png

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

1.png
1.png

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

代码语言:javascript
复制
API访问地址:
https://10.212.82.86/v3

Bearer Token:
token-96p7n:d8sw4vlff68kqspcwnflbwpptt565c5cszltwbhgb4wcz9w6k5fxmj

下面会重点介绍

三、jenkins配置

插件安装

Redeploy Rancher2.x Workload

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

1.png
1.png

Environment Injector

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

1.png
1.png

添加凭据

点击凭据

1.png
1.png

点击进去

1.png
1.png

再点击

1.png
1.png

 添加凭据

1.png
1.png

类型选择rancher2.x API Keys

1.png
1.png

说明:

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

描述: 随便填写

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

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

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

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

最后点击保存。

新建job

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

1.png
1.png

通用配置

1.png
1.png

参数化构建

1.png
1.png

源码管理

1.png
1.png

执行shell脚本

1.png
1.png

完整代码如下:

代码语言:javascript
复制
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环境的。

注入环境变量

1.png
1.png

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

1.png
1.png

重新部署Rancher2.x工作负载

1.png
1.png

内容如下:

1.png
1.png

说明:

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

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

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

1.png
1.png

跳转的url为:

代码语言:javascript
复制
https://10.212.82.86/v3/project/c-l5nxb:p-dghs7/workloads/statefulset:default:admin-master
1.png
1.png

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

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

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

表示镜像的版本!

最后点击保存

1.png
1.png

四、测试发布和回滚

发布

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

1.png
1.png

登录jenkins,发布一下。

点击Build with Parameters

1.png
1.png

点击开始构建

1.png
1.png

查看控制台输出:

代码语言:javascript
复制
+ 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服务器,查看环境变量文件

代码语言:javascript
复制
# cat /var/lib/jenkins/workspace/test_admin_rancher/env.txt
BUILD_ID=1

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

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

1.png
1.png

回滚

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

选择回滚,输入32

1.png
1.png

查看控制台输出:

代码语言:javascript
复制
+ 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服务器,查看环境变量文件

代码语言:javascript
复制
# cat /var/lib/jenkins/workspace/test_admin_rancher/env.txt
BUILD_ID=32

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

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

1.png
1.png

总结

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、概述
  • 二、Rancher创建api key
  • 三、jenkins配置
    • 插件安装
      • Redeploy Rancher2.x Workload
    • Environment Injector
      • 添加凭据
        • 新建job
        • 四、测试发布和回滚
          • 发布
            • 回滚
              • 总结
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档