KubeSphere DevOps 系统功能实战
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 流水线,打造了极佳的用户体验,而且这种兼容性强的流水线能力在离线环境中非常有用。
简而言之,DevOps 可以帮助我们拉取代码、项目编译、构建镜像、推送镜像、项目部署全自动一条龙服务。
关于如何安装 DevOps 功能请参照:https://kubesphere.io/zh/docs/pluggable-components/devops/
创建 DevOps 工程 && 创建流水线
创建 DevOps 工程:企业空间—>DevOps 工程—>创建;
填入工程名称,点击确定即可;
创建流水线:点击刚才创建好的 DevOps 工程,找到流水线菜单,点击创建,输入流水线名称;
代码仓库可以填也可以不填,现在填写的话到时候会有一个 webhook 地址,这个地址可以到 Git(或者其他仓库)仓库设置有代码提交的时候自动运行我们的流水线,相当于是一个回调,这样就可以代码提交到项目部署完全是一个全自动的过程。
那么这里我们先演示不填的情况,填写流水线名称之后点击下一步,点击创建就行了。
编辑流水线
点击刚才创建的流水线进入,点击编辑流水线:
可以看到,有两套模板,这里我们选择第二套,然后点击保存:
可以看到效果,然后我们点击编辑流水线:
进来之后可以看到右边有一个代理,下边有代理 type 和 lable。代理类型这里我们选择 node。下边这个 lable 有四个选项:base、go、maven、nodejs:
- 如果我们是 java 相关的项目打包,那么我们可以选择 maven;
- 如果是前端项目可以使用 nodejs;
- 如果是 go 语言开发可以选择 go;
- 如果是其他的那么可以选择 base;
官网解释:https://kubesphere.io/zh/docs/devops-user-guide/how-to-use/choose-jenkins-agent/
这里小编是部署 java 项目,所以我选择了 maven;
1. 拉取代码
- 步骤 1:点击,可以看到右边的窗口;
- 步骤 2:填写该阶段的名称
- 步骤 3:将指定的 base 容器删除,因为我们要使用 maven 容器
点击添加步骤:
选择指定容器:
填写容器名称,点击确定:
点击添加嵌套步骤:
选择通过 git 拉取代码,当然如果你是 svn,可以选择下面一个 checkout。小编使用的是 git。
填写 gie 仓库 Url,以及分支,然后点击新建凭证:
- 输入凭证 id:这个随便起名;
- 类型:选择账户凭证;
- 用户名:git 的用户名
- token/密码:git 的密码
然后点击确定,确定。
若是想显示拉取下来的代码目录,可以添加嵌套步骤:
然后点击确定、保存。
完了之后可以点击运行,看一下效果。
2. 项目编译
运行完之后我们再次点击编辑流水线,点击第二个步骤,填写名称:项目编译。
同样的指定 maven 容器,添加嵌套步骤:shell 脚本,输入 maven 的打包命令:
$ mvn clean package -Dmaven.test.skip=true
点击确认,点击保存,同样可以运行看一下效果,是否成功。
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/:在这个目录
在实际运用中,我们不可能一次构建一个镜像,我们可能有多个、几十个微服务需要构建镜像,所以这里我们还可以添加并行步骤,然后接着上述步骤进行构建就行了:
4. 推送镜像
运行完之后我们再次点击编辑流水线,点击第四个步骤,
- 填写名称:推送镜像;(我们要将镜像推送至阿里云镜像仓库,当然你也可以推送到其他仓库或者私有仓库)
- 代理类型选择:none
同样的指定 maven 容器,添加嵌套步骤:添加凭证
点击确定,创建完之后选择我们刚才创建的凭证,填写用户名、密码变量(意思是将用户名、密码作为一个变量,之后登录阿里云仓库、推送镜像等操作就可以使用这个变量,这样的话就不用手动输入用户名密码了)
【登录阿里云仓库】添加嵌套步骤,选择 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
当然,这里也是可以添加并行步骤的,同时推送多个镜像至仓库。
到这里你会有个疑惑,上面不止使用到 DOCKER_PWD_VAR、DOCKER_USER_VAR 这两个变量,还是用到了 REGISTRY 变量,那么这个变量是什么呢?在哪里有定义呢?
保存流水线之后,点击编辑 Jenkinsfile 文件:
最下面可以看到有定义 REGISTRY 变量,我们只需要将 REGISTRY 变量值改为自己阿里云仓库的地址就行了
完成之后保存,可以运行看一下是否成功。
5. 部署
老规矩,按步骤执行:
按照步骤继续执行:
新建凭证:
上面有一个凭证 ID 需要填写,这个怎么填呢?
先保存流水线,点击编辑 Jenkinsfile,最下面有个变量名叫:KUBECONFIG_CREDENTIAL_ID,变量值是:demo-kubeconfig 我们填写这个值便可。
创建完凭证,点击确定就完成啦。
保存流水线,点击运行,至此,一整套的流水线就编辑完成啦!
本文由博客一文多发平台 OpenWrite 发布!
KubeSphere DevOps 系统功能实战的更多相关文章
- 安装 KubeSphere DevOps 系统
1. 安装KubeSphere 安装了一夜,终于看到了期待已久的画面 第一步.硬件配置(PS:VirtualBox虚拟机): 操作系统:Ubuntu 18.04 CPU:4核 内存:8G 磁盘:60 ...
- 全球IT管理最佳实践之DevOps Master 认证
原文:http://soft.chinabyte.com/30/13940030.shtml 作者:国际最佳实践管理联盟 孙振鹏 关键字: DevOps.DevOps认证.DevOpsDays.Dev ...
- 一文说清 KubeSphere 容器平台的价值
KubeSphere 作为云原生家族 后起之秀,开源近两年的时间以来收获了诸多用户与开发者的认可.本文通过大白话从零诠释 KubeSphere 的定位与价值,以及不同团队为什么会选择 KubeSphe ...
- Go DevOps大厂运维平台开发进阶实战营
使用 Jenkinsfile 创建流水线已报名老男孩运维课,见底下评论.enkinsfile 是一个文本文件,它包含 Jenkins 流水线的定义,并被检入源代码控制仓库.Jenkinsfile 将整 ...
- 4、kubesphere环境安装
安装步骤 选择4核8G(master).8核16G(node1).8核16G(node2) 三台机器,按量付费进行实验,CentOS7.9 安装Docker 安装Kubernetes 安装KubeSp ...
- 欠你们的 → k8s 集群搭建,除夕奉上!
开心一刻 有一天,qq收到一个好友申请,验证消息上写的是:哥哥加我,我是妹妹 我以为是性骚扰,就没加,直接回了一句:我喜欢少妇 过了一会儿,姑姑就给我打了个电话:你妹妹qq加你,你怎么不同意,她想问你 ...
- dnc开源梦之队2018 开源项目精选集
dnc开源梦之队2018 dnc开源项目选择标准 dnc = .NET Core.dotnet core 1.支持dnc 2.x,Github star数量100以上,最近2月活跃更新 2.轻量级.示 ...
- CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线
<从头搭建持续集成 DevOps 流水线>由资深敏捷教练.极限编程学院高级讲师.CODING 特邀敏捷顾问李小波老师主讲,将基于 CODING 展示如何编写 Jenkinsfile 搭建 ...
- CODING DevOps 代码质量实战系列最后一课,周四发车
随着 ToB(企业服务)的兴起和 ToC(消费互联网)产品进入成熟期,线上故障带来的损失越来越大,代码质量越来越重要,而「质量内建」正是 DevOps 核心理念之一. <DevOps 代码质量实 ...
- CODING DevOps 微服务项目实战系列第一课,明天等你
CODING DevOps 微服务项目实战系列第一课<DevOps 微服务项目实战:DevOps 初体验>将由 CODING DevOps 开发工程师 王宽老师 向大家介绍 DevOps ...
随机推荐
- 论文写作:“et al.”和“etc.”在英语中的区别
"et al."和"etc."在英语中有不同的用法和含义.以下是它们的区别和具体用法: et al. "et al."是拉丁短语" ...
- 鹏程实验室,启智平台,openI平台,积分兑换新标准
2024-02-13 11:12:21 星期二 地址: https://openi.pcl.ac.cn/reward/point/rule
- Google在放弃Tensorflow后推出Google版本的Pytorch框架 —— Jax
相关: 谷歌放弃TensorFlow了 虽然在某种上来说,Google已经放弃了Tensorflow框架,但是由于Tensorflow的历史地位所造成的遗留应用,因此Tensorflow框架已经处于维 ...
- 9组-Beta冲刺-3/5
一.基本情况(15分) 队名:不行就摆了吧 组长博客:9组-Beta冲刺-3/5 GitHub链接:https://github.com/miaohengming/studynote/tree/mai ...
- 零基础学虚幻4(UE4):蓝图+VR 丁树凯教程
本人正在学习中,需要资料或者讨论问题的加Q:1241642375
- worktree的路径的文件夹自己重命名后发现没有git
1. worktree title: worktree的路径的文件夹自己重命名(修改名称)后发现没有git了 keyword: git worktree repair prune 快速方法 问题:父级 ...
- 一口Linux公众号粉丝破万了!
0.楔子 终于万粉了! 总算熬过了冷启动阶段. 一万这个小目标看着很简单, 但是实际做的时候,发现远没有自己想的那么容易. 亿万粉丝,其实并不是很多,一度犹豫要不要写这个万份总结, 和嵌入式领域内的一 ...
- layui表格中格式化日期
layui表格中格式化日期 //1.引入 util layui.use(['table', 'admin'], function () { var util = layui.util; //2.表格内 ...
- SpringMVC:注解配置SpringMVC
目录 创建初始化类,代替web.xml 创建SpringConfig配置类,代替spring的配置文件 创建WebConfig配置类,代替SpringMVC的配置文件 测试功能 使用配置类和注解代替w ...
- JS的可选链操作符(?.)与双问号(??),你用到了吗?
可选链操作符(?.) 以前一般这样使用: let nestedProp = obj.first && obj.first.second; 或者这样: let temp = obj.fi ...