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 系统功能实战的更多相关文章

  1. 安装 KubeSphere DevOps 系统

    1.  安装KubeSphere 安装了一夜,终于看到了期待已久的画面 第一步.硬件配置(PS:VirtualBox虚拟机): 操作系统:Ubuntu 18.04 CPU:4核 内存:8G 磁盘:60 ...

  2. 全球IT管理最佳实践之DevOps Master 认证

    原文:http://soft.chinabyte.com/30/13940030.shtml 作者:国际最佳实践管理联盟 孙振鹏 关键字: DevOps.DevOps认证.DevOpsDays.Dev ...

  3. 一文说清 KubeSphere 容器平台的价值

    KubeSphere 作为云原生家族 后起之秀,开源近两年的时间以来收获了诸多用户与开发者的认可.本文通过大白话从零诠释 KubeSphere 的定位与价值,以及不同团队为什么会选择 KubeSphe ...

  4. Go DevOps大厂运维平台开发进阶实战营

    使用 Jenkinsfile 创建流水线已报名老男孩运维课,见底下评论.enkinsfile 是一个文本文件,它包含 Jenkins 流水线的定义,并被检入源代码控制仓库.Jenkinsfile 将整 ...

  5. 4、kubesphere环境安装

    安装步骤 选择4核8G(master).8核16G(node1).8核16G(node2) 三台机器,按量付费进行实验,CentOS7.9 安装Docker 安装Kubernetes 安装KubeSp ...

  6. 欠你们的 → k8s 集群搭建,除夕奉上!

    开心一刻 有一天,qq收到一个好友申请,验证消息上写的是:哥哥加我,我是妹妹 我以为是性骚扰,就没加,直接回了一句:我喜欢少妇 过了一会儿,姑姑就给我打了个电话:你妹妹qq加你,你怎么不同意,她想问你 ...

  7. dnc开源梦之队2018 开源项目精选集

    dnc开源梦之队2018 dnc开源项目选择标准 dnc = .NET Core.dotnet core 1.支持dnc 2.x,Github star数量100以上,最近2月活跃更新 2.轻量级.示 ...

  8. CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线

    <从头搭建持续集成 DevOps 流水线>由资深敏捷教练.极限编程学院高级讲师.CODING 特邀敏捷顾问李小波老师主讲,将基于 CODING 展示如何编写 Jenkinsfile 搭建 ...

  9. CODING DevOps 代码质量实战系列最后一课,周四发车

    随着 ToB(企业服务)的兴起和 ToC(消费互联网)产品进入成熟期,线上故障带来的损失越来越大,代码质量越来越重要,而「质量内建」正是 DevOps 核心理念之一. <DevOps 代码质量实 ...

  10. CODING DevOps 微服务项目实战系列第一课,明天等你

    CODING DevOps 微服务项目实战系列第一课<DevOps 微服务项目实战:DevOps 初体验>将由 CODING DevOps 开发工程师 王宽老师 向大家介绍 DevOps ...

随机推荐

  1. 【技术积累】如何处理Feign的超时问题

    在使用Feign进行微服务之间的通信时,由于网络延迟等原因,可能会出现请求超时的情况.为了解决这个问题,我们可以对Feign进行配置,设置超时时间. 配置Feign的超时时间 在使用Feign时,我们 ...

  2. idea汉化包安装失败解决方法

    idea安装中文插件时提示: Plugin "Chinese (Simplified) Language Pack / 中文语言包" was not installed: 查看自己 ...

  3. kubernetes中集成istio出现拉取配置中心数据失败导致服务启动失败 荐

    由于在k8s使用了grpc,所以这里我们集成istio来实现http2的自动发现以及负载均衡,但是随着节点增加,istio之前同步配置时间边长导致第一次启动时,服务启动拉取配置时istio却还没初始化 ...

  4. python学习(一)django orm多表查询

    ###多表查询 一般的多表查询都是直接建立一个多对多关系 class Books(models.Model): users = models.ManyToManyField(User, related ...

  5. 老母鸡安装mqtt

    大佬写好了, 按部就班操作一下就行了,在hass中添加mqtt可进行测试 玩客云搭建MQTT服务器 - 崔安兵 - 博客园 (cnblogs.com)

  6. 十五张图带你快速入门 shardingsphere-proxy

    Apache ShardingSphere 是一款分布式的数据库生态系统,它包含两大产品: ShardingSphere-Proxy ShardingSphere-JDBC 很多同学对于 Shardi ...

  7. Python with 语句的用法

    with 语句是Python中用于简化资源管理的一种语法结构,通常与上下文管理器(Context Manager)一起使用.上下文管理器提供了一种机制,用于确保资源在使用完毕后能够被正确释放,例如文件 ...

  8. Go make 介绍

    Go 语言中的 make 函数用于创建和初始化特定类型的对象,主要是用于创建切片(slice).映射(map)和通道(channel).make 函数与 new 函数不同,new 函数是用于分配内存, ...

  9. 为什么要使用Java SPI机制

    Java SPI(Service Provider Interface)最早是在Java SE 6中被引入的,作为一种标准的.用于在运行时发现和加载服务提供者插件的标准机制.以前的程序猿实现JDBC连 ...

  10. windows docker(25.0.3) 运行 1.4.1 nacos 容器

    Docker Desktop 设定图标 -> Docker Engine 设定国内镜像源 添加配置: { "builder": { "gc": { &qu ...