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. 网站的备案信息更改后是否需要及时更新 —— ICP 备案巡检

    引自: https://developer.qiniu.com/kodo/8556/set-the-custom-source-domain-name ICP 备案巡检 自2022年6月8日起,执行 ...

  2. python多进程multiprocessing模块的变量传递问题:父进程中的numpy.array对象隐式序列化到子进程后的inplace操作的问题

    参考: https://docs.python.org/zh-cn/3/library/multiprocessing.html cloudpickle -- Python分布式序列化的专用模块   ...

  3. [学习笔记] LCA - 图论

    [NOIP2013 提高组] 货车运输 最大生成树+LCA+倍增 好家伙,这道题我写了一个晚上,调了两个晚上,对于这道题我颇有感触.但这道题确实好,实实在在的蓝题,让我发现了许多关于LCA的问题. 首 ...

  4. EF Core 索引器属性(Indexer property)场景及应用

    EF Core 索引器属性(Indexer property)场景及应用 简介 EF Core 中的索引器属性(Indexer Property)是指通过一个特殊的属性来访问实体类中的数据,而不必明确 ...

  5. cloud compare PCA插件开发详细步骤(二)附代码

    在上一节 https://blog.csdn.net/csy1021/article/details/141200135 我们已经完成了 具体开发前的准备工作,包括 各级 CMakelists.txt ...

  6. [Linux]yum下载慢!!

    有全局代理,但是yum下载特别慢,怎么办? 确保/etc/yum.conf文件中代理配置的语法正确,包括代理服务器的地址和端口号,如下所示: proxy=http://your_proxy_serve ...

  7. 【已解决】如果将MySQL数据库中的表生成PDM

    数据库表PDM关系图 |  原创作者/编辑:凯哥Java |  分类:经验分享 有时候,我们需要MySQL数据库中的表生成对应的PDM文件,这里凯哥就讲讲第一种将MySQL数据库的表生成对应的PDM文 ...

  8. 【YashanDB知识库】含有NUL字节的varchar字符串查询时出现截断

    [问题分类]功能使用 [关键字]NUL字符 [问题描述]数据库中插入一条含有NUL字符(\00)的字符串,使用yasql在终端进行查询,字符串从NUL处被截断,未能完整展示全部字符. [问题原因分析] ...

  9. C#|.net core 基础 - 如何判断连续子序列

    前两天同事遇到了一个小需求,想判断一个集合是不是在另一个集合中存在,并且要求顺序一致,然后一起讨论了下应该怎么做,有没有什么比较好的方式?下面分享一下我们想到的方法,如果你也有不同的想法也可以分享给我 ...

  10. SQL无法解决排序规则 Chinese_PRC_CI_AS 和 Latin1_General_CI_AS 的冲突

    最近在执行一些跨库关联查询语句的时候提示了 "Cannot resolve the collatior conflict between "Chinese_PRC_Ci As&qu ...