James,Java 工程师,喜欢学习和记录当下热门技术并验证其优势和缺点,以及当下火热的云原生解决方案的实施与推广。前言 基于 Jenkins 的 KubeSphere DevOps 系统是专为 Kubernetes 中的 CI/CD 工作流设计的,它提供了一站式的解决方案,帮助开发和运维团队用非常简单的方式构建、测试和发布应用到 Kubernetes。它还具有插件管理、Binary-to-Image (B2I)、Source-to-Image (S2I)、代码依赖缓存、代码质量分析、流水线日志等功能。
DevOps 系统为用户提供了一个自动化的环境,应用可以自动发布到同一个平台。它还兼容第三方私有镜像仓库(如 Harbor)和代码库(如 GitLab/GitHub/SVN/BitBucket)。它为用户提供了全面的、可视化的 CI/CD 流水线,打造了极佳的用户体验,而且这种兼容性强的流水线能力在离线环境中非常有用。
【KubeSphere DevOps 系统功能实战】简而言之,DevOps 可以帮助我们拉取代码、项目编译、构建镜像、推送镜像、项目部署全自动一条龙服务。
关于如何安装 DevOps 功能请参照:https://kubesphere.io/zh/docs...
创建 DevOps 工程 && 创建流水线 创建 DevOps 工程:企业空间—>DevOps 工程—>创建;
填入工程名称,点击确定即可;
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/b6124b13478843bbae61e6dea15a37ba.jpg)
文章图片
创建流水线:点击刚才创建好的 DevOps 工程,找到流水线菜单,点击创建,输入流水线名称;
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/38f76182d2dd4708a2a504d8771ca967.jpg)
文章图片
代码仓库可以填也可以不填,现在填写的话到时候会有一个 webhook 地址,这个地址可以到 Git(或者其他仓库)仓库设置有代码提交的时候自动运行我们的流水线,相当于是一个回调,这样就可以代码提交到项目部署完全是一个全自动的过程。
那么这里我们先演示不填的情况,填写流水线名称之后点击下一步,点击创建就行了。
编辑流水线 点击刚才创建的流水线进入,点击编辑流水线:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/8793169739b54f00976c86910a89e5ab.jpg)
文章图片
可以看到,有两套模板,这里我们选择第二套,然后点击保存:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/881dc872ea964290bff9b274df6ddcae.jpg)
文章图片
可以看到效果,然后我们点击编辑流水线:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/0baaf60c8eb046acaaf479cebcd740ab.jpg)
文章图片
进来之后可以看到右边有一个代理,下边有代理 type 和 lable。代理类型这里我们选择 node。下边这个 lable 有四个选项:base、go、maven、nodejs:
- 如果我们是 java 相关的项目打包,那么我们可以选择 maven;
- 如果是前端项目可以使用 nodejs;
- 如果是 go 语言开发可以选择 go;
- 如果是其他的那么可以选择 base;
这里小编是部署 java 项目,所以我选择了 maven;
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/b9351ee632894a04ad6323d5cd82eb72.jpg)
文章图片
1. 拉取代码
- 步骤 1:点击,可以看到右边的窗口;
- 步骤 2:填写该阶段的名称
- 步骤 3:将指定的 base 容器删除,因为我们要使用 maven 容器
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/0f5323f314cf49dbadb9987bb35c49b6.jpg)
文章图片
点击添加步骤:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/fdb25869007a4e109e7df6db0fb95900.jpg)
文章图片
选择指定容器:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/853c3d7a4ad74cef9d0a7c3e68c0e664.jpg)
文章图片
填写容器名称,点击确定:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/93f566ca9c6e4b84aabd9e8309458259.jpg)
文章图片
点击添加嵌套步骤:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/d168d384e9d843478fa6bc12b807e383.jpg)
文章图片
选择通过 git 拉取代码,当然如果你是 svn,可以选择下面一个 checkout。小编使用的是 git。
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/52c3d73a831d4d0cbb53873330361f91.jpg)
文章图片
填写 gie 仓库 Url,以及分支,然后点击新建凭证:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/18a9fdcd6e2c43d7832c268b1d839e87.jpg)
文章图片
- 输入凭证 id:这个随便起名;
- 类型:选择账户凭证;
- 用户名:git 的用户名
- token/密码:git 的密码
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/b75b29aab58c4ee38effcc97466e0273.jpg)
文章图片
然后点击确定,确定。
若是想显示拉取下来的代码目录,可以添加嵌套步骤:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/8450cb35b356412bb78b1ed46fe99ba2.jpg)
文章图片
然后点击确定、保存。
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/267c370bc47d4dadb3b188bb27e717fd.jpg)
文章图片
完了之后可以点击运行,看一下效果。
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/09d2f265e0624a299e04dc0fa0697e1e.jpg)
文章图片
2. 项目编译
运行完之后我们再次点击编辑流水线,点击第二个步骤,填写名称:项目编译。
同样的指定 maven 容器,添加嵌套步骤:shell 脚本,输入 maven 的打包命令:
$ mvn clean package -Dmaven.test.skip=true
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/f21d01b70225476994cfb5ff0188817f.jpg)
文章图片
点击确认,点击保存,同样可以运行看一下效果,是否成功。
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/cfc2492214974ed4b2687d6ccfbccd15.jpg)
文章图片
3. 构建镜像
运行完之后我们再次点击编辑流水线,点击第三个步骤,填写名称:构建镜像;代理类型选择:none。
同样的指定 maven 容器,添加嵌套步骤:shell 脚本,输入命令,显示目录下文件:
ls isee-gateway/target
输入 docker 构建镜像命令:
$ docker build -t isee-gateway:latest -f isee-gateway/Dockerfile isee-gateway/
参数说明:
isee-gateway:latest:镜像名称已经标签
-f:指定 Dockerfile 文件进行构建
isee-gateway/:在这个目录
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/7d70480acafe455092c6da7ce0aa1f1e.jpg)
文章图片
在实际运用中,我们不可能一次构建一个镜像,我们可能有多个、几十个微服务需要构建镜像,所以这里我们还可以添加并行步骤,然后接着上述步骤进行构建就行了:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/e26072ba334e4e75b36d599065275649.jpg)
文章图片
4. 推送镜像
运行完之后我们再次点击编辑流水线,点击第四个步骤,
- 填写名称:推送镜像;(我们要将镜像推送至阿里云镜像仓库,当然你也可以推送到其他仓库或者私有仓库)
- 代理类型选择:none
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/5205149e266141b18d789d31dd4d35ed.jpg)
文章图片
点击确定,创建完之后选择我们刚才创建的凭证,填写用户名、密码变量(意思是将用户名、密码作为一个变量,之后登录阿里云仓库、推送镜像等操作就可以使用这个变量,这样的话就不用手动输入用户名密码了)
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/2d220868bb8c4b9d91ecc3e694e2aa0f.jpg)
文章图片
【登录阿里云仓库】添加嵌套步骤,选择 shell 脚本,输入以下内容(这里我们就使用到了用户名密码变量):
$ echo "$DOCKER_PWD_VAR" | docker login $REGISTRY -u "$DOCKER_USER_VAR" --password-stdin
【给镜像打标签】添加嵌套步骤,选择 shell 脚本,输入以下内容:
$ docker tag isee-gateway:latest $REGISTRY/$DOCKERHUB_NAMESPACE/isee-gateway:SNAPSHOT-$BUILD_NUMBER
【推送镜像】添加嵌套步骤,选择 shell 脚本,输入以下内容:
$ docker push $REGISTRY/$DOCKERHUB_NAMESPACE/isee-gateway:SNAPSHOT-$BUILD_NUMBER
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/1f1ef352ba16489eaa739775336a03fc.jpg)
文章图片
当然,这里也是可以添加并行步骤的,同时推送多个镜像至仓库。
到这里你会有个疑惑,上面不止使用到 DOCKER_PWD_VAR、DOCKER_USER_VAR 这两个变量,还是用到了 REGISTRY 变量,那么这个变量是什么呢?在哪里有定义呢?
保存流水线之后,点击编辑 Jenkinsfile 文件:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/ed2a44a9218942908df1d53041b14597.jpg)
文章图片
最下面可以看到有定义 REGISTRY 变量,我们只需要将 REGISTRY 变量值改为自己阿里云仓库的地址就行了
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/e6aa940ae947420484ccf4f7d531bc40.jpg)
文章图片
完成之后保存,可以运行看一下是否成功。
5. 部署
老规矩,按步骤执行:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/8255fd4028884f6599a24b5998b2a016.jpg)
文章图片
按照步骤继续执行:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/dd8a6edbb4314aabb3b7685cc298c1eb.jpg)
文章图片
新建凭证:
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/b2115c67e1e94222b094081be5beca30.jpg)
文章图片
上面有一个凭证 ID 需要填写,这个怎么填呢?
先保存流水线,点击编辑 Jenkinsfile,最下面有个变量名叫:KUBECONFIG_CREDENTIAL_ID,变量值是:demo-kubeconfig 我们填写这个值便可。
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/2473330cb3d64427bcc70bfc243968cd.jpg)
文章图片
创建完凭证,点击确定就完成啦。
![KubeSphere DevOps 系统功能实战](https://img.it610.com/image/info9/35c84be7482c491dbd1aea1614e91bca.jpg)
文章图片
保存流水线,点击运行,至此,一整套的流水线就编辑完成啦!
本文由博客一文多发平台 OpenWrite 发布!
推荐阅读
- 在企业中采用多云战略的最佳实践
- 安全|一份人人都能看懂的 Authing 介绍
- 写给小白的保姆级教程|保姆级教程从零搭建云服务器(小彩蛋,请大家看烟花秀)
- 云管理平台成功要素——强大的自动化集成
- 市场调研|中国智慧水务行业“十四五”规划及前景展望报告2022~2028年
- 企业在2022 年应避免这 6 大云成本优化问题
- 两个半月零事故割接!我爱我家全业务顺利迁移华为云
- 青云企业级容器平台 QKCP 迎来重磅升级
- 混合云——企业的最佳解决方案()