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. 寻路数据集 —— PathFinding数据集 —— Moving AI Lab. 实验室

    好几个做pathfinding的论文都是引用这个网站的数据集,不过这个网站的数据集的地图都是 .map 格式,这个类型的格式该如何打开还不知道. Moving AI Lab. 实验室的工作 地址: h ...

  2. C# 命名空间和程序集 小记

    前言 本文只是为了复习,巩固,和方便查阅,一些知识点的详细知识会通过相关链接和文献标记出来. 命名空间 1.1 概念 可以把命名空间看做字符串,他加在类名或类型名前面并且通过点进行分割 既然看做是字符 ...

  3. php日常收获

    php 1.sprintf 用法(晚上写成blog w3cschool可查) 2.使用thinkphp getfield 方法时只查询一个字段默认返回第一条数据, 如果想要返回数组需要写成: $thi ...

  4. 使用Packer构建镜像

    什么是Packer Packer 是一个强大的工具,它可以帮助我们轻松地构建各种类型的镜像,如虚拟机镜像.Docker 镜像等. Packer 的工作原理是通过定义一个配置文件,该文件描述了要构建的镜 ...

  5. 使用FModel提取黑神话悟空的资产

    目录 前言 设置 效果展示 闲聊 可能遇到的问题 没有相应的UE引擎版本选项 前言 黑神话悟空昨天上线了,解个包looklook. 本文内容比较简洁,仅介绍解包黑神话所需的专项配置,关于FModel的 ...

  6. 使用Golang的协程竟然变慢了|100万个协程的归并排序耗时分析

    前言 这篇文章将用三个版本的归并排序,为大家分析使用协程排序的时间开销(被排序的切片长度由128到1000w) 本期demo地址:https://github.com/BaiZe1998/go-lea ...

  7. Java多线程并发编程中并发容器第二篇之List的并发类讲解

    Java多线程并发编程中并发容器第二篇之List的并发类讲解 概述 本文我们将详细讲解list对应的并发容器以及用代码来测试ArrayList.vector以及CopyOnWriteArrayList ...

  8. SpringMVC初体验

    目录 SpringMVC简介 MVC介绍 什么是SpringMVC SpringMVC的特点 入门案例 创建maven工程 配置web.xml 默认配置方式 扩展配置方式 url-pattern标签中 ...

  9. OData – Routing

    前言 以前我都是把 ODataController 和普通 API Controller 分开做. (因为 OData 实在多 Bug, 好东西尽量不要掺和它) Read 的部分用 OData, CU ...

  10. ComfyUI 基础教程(五) —— 应用 IP-Adapter 实现图像风格迁移

    中秋假期,又可以玩玩 AI 了.前面介绍了 ComfyUI 的 Lora 模型以及 ControlNet,本文介绍另一个非常重要且使用的节点,IP-Adapter. 一. IP-Adapter 概念 ...