KubeSphere DevOps 初体验,内置 Jenkins 引擎

Stella981
• 阅读 1203

KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 提供了运维友好的向导式操作界面,帮助企业快速构建一个强大和功能丰富的容器云平台。KubeSphere 支持部署在任何基础设施环境,提供在线与离线安装,支持一键升级与扩容集群,并且各功能组件支持模块化和可插拔的安装。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

解读 KubeSphere Devops

KubeSphere DevOps 作为 KubeSphere 容器平台的一个可插拔功能组件,内置了 Jenkins 作为在 Kubernetes 之上的 CI/CD 引擎。借助 Jenkins 丰富的插件体系和易于进行扩展开发的特性,帮助 DevOps 团队在一个统一的平台中,打通开发、测试、构建、部署、监控、日志与通知等流程。KubeSphere 为 DevOps 团队打造了以容器为载体的端到端的应用交付平台,实现从应用开发、持续集成、单元测试、制品构建到应用的生产交付,所有的流程都是一个完整的闭环。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 充分利用和释放 Kubernetes 动态扩展的能力。例如,KubeSphere 在内置的 DevOps 系统使用了 Jenkins Kubernetes 的动态 Agent,这样的方案相较于传统虚拟机上的 Jenkins 要更加灵活敏捷。同时,在 KubeSphere DevOps 中内置了常用的 Agent 类型,例如 Maven、Node.js、Go 等,并且还支持自定义与扩展的 Agent 类型。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

除了基于 Jenkins 引擎打造的 CI/CD 流水线,KubeSphere 还为业务开发者提供了自动化打包部署的工具集。业务开发者即使还没有深入了解 Docker 与 Kubernetes 的机制,也可以借助 KubeSphere 内置的自动化 CD 工具,如 Binary to Image 和 Source to Image。用户只需要提交一个仓库地址,或上传 JAR/WAR/Binary 等二进制文件,即可快速将制品打包成 Docker 镜像并发布到镜像仓库,最终将服务自动发布至 Kubernetes 中,无需编写一行 Dockerfile。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

关于 KubeSphere DevOps 更多的介绍,可以参考 KubeSphere 官网获得更进一步的了解。

https://kubesphere.io/devops/

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

安装 KubeSphere 开启 Devops 组件

以下步骤将基于 Kubernetes 集群演示如何安装 KubeSphere v2.1.1,并开启 KubeSphere DevOps 组件。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

// 前提条件 //

① 已有 Kubernetes 集群,并且 Kubernetes 版本: 1.15.x ≤ K8s version ≤ 1.17.x。若没有 K8s 环境可参考文档(https://kubesphere.com.cn/docs/zh-CN/installation/all-in-one/)在 Linux 环境安装;

② 集群能够访问外网,若无外网请参考 在 Kubernetes 离线安装 KubeSphere,地址 https://kubesphere.com.cn/docs/installation/install-on-k8s-airgapped/

KubeSphere DevOps 初体验,内置 Jenkins 引擎

// 安装 Helm 和 Tiller //

提示:若集群已有 Helm 和 Tiller,可跳过本节操作。

  1. 从 Helm 的 GitHub https://github.com/helm/helm/releases/tag/v2.16.3 下载 helm-v2.16.3-linux-amd64.tar.gz。

  2. 上传到服务器,解压移动 Helm、Tiller 到 /usr/local/bin/:

    [root@k8s-node1 linux-amd64]# cp helm /usr/local/bin/

    验证 Helm 的安装:

    helm help

创建权限:创建一个新的文件 helm_rbac.yaml,内容如下:

apiVersion: v1

然后使用 kubectl 使其创建生效。

[root@k8s-node1 k8s]# kubectl apply -f helm_rbac.yaml

初始化 Helm,这里用的国内的镜像源。

helm init --service-account=tiller --tiller-image=registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.3 --history-max 300

验证 Helm Tiller。如果状态是 ImagePullBackOff,表示镜像未拉取成功,需要手动拉取。

kubectl -n kube-system get pods|grep tiller

检查 Tiller 是否部署到 Kubernetes:

[root@k8s-node1 local]# kubectl get pod -n kube-system -l app=helm

KubeSphere DevOps 初体验,内置 Jenkins 引擎

// 安装持久化存储与 Storageclass //

提示:- 若您的集群已有持久化存储与 StorageClass,可跳过本小节 - OpenEBS 将使用 LocalPV 作为存储卷,仅建议用作开发测试环境,生产环境建议使用如 Ceph、GlusterFS 等独立的分布式存储服务 - 安装之前,请确保 master 节点没有 Taints (待安装完 KubeSphere 之后再添加 Taints)

确认 master 节点是否有 Taint,如下看到 master 节点有 Taint。

$ kubectl describe node master | grep Taint

掉 master 节点的 Taint:

$ kubectl taint nodes master node-role.kubernetes.io/master:NoSchedule-

创建 OpenEBS 的 namespace,OpenEBS 相关资源将创建在这个 namespace 下:

$ kubectl create ns openebs

安装 OpenEBS

helm init

安装 OpenEBS 后将自动创建 4 个 StorageClass,查看创建的 StorageClass:

$ kubectl get sc

如下将 openebs-hostpath 设置为 默认的 StorageClass:

$ kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

至此,OpenEBS 的 LocalPV 已作为默认的存储类型创建成功。可以通过命令 kubectl get pod -n openebs 来查看 OpenEBS 相关 Pod 的状态,若 Pod 的状态都是 running,则说明存储安装成功。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

// Kubectl 安装 KubeSphere //

当 Kubernetes 集群满足前提条件,实际上安装 KubeSphere 的步骤非常简单,仅一条命令。根据集群资源情况,使用 kubectl 安装 KubeSphere。


若集群可用 CPU > 1 Core 且可用内存 > 2 G,可以使用以下命令最小化安装 KubeSphere:

kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml

提示:若您的服务器提示无法访问 GitHub,可将 kubesphere-minimal.yaml 从 GitHub 地址 https://github.com/kubesphere/ks-installer/ 拷贝文件保存到本地作为本地的静态文件,再参考上述命令进行安装。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

// 验证访问 //


查看滚动刷新的安装日志,请耐心等待安装成功。

$ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

说明:安装过程中若遇到问题,也可以通过以上日志命令来排查问题。

通过 kubectl get pod --all-namespaces 查看 KubeSphere 相关 namespace 下所有 Pod 状态是否为 Running。确认 Pod 都正常运行后,可使用 IP:30880 访问 KubeSphere UI 界面,默认的集群管理员账号为 admin/P@88w0rd。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

登录控制台首页,查看集群状态。

KubeSphere DevOps 初体验,内置 Jenkins 引擎


KubeSphere DevOps 初体验,内置 Jenkins 引擎

// 开启 KubeSphere Devops的安装 //


通过修改 ks-installer 的 ConfigMap 可以选装可插拔的功能组件,执行以下命令开启 KubeSphere DevOps 系统:

$ kubectl edit cm -n kubesphere-system ks-installer

参考如下修改 ConfigMap

devops:

保存退出,安装任务将自动在后台执行。等待几分钟,若看到 ks-installer 日志返回安装成功的日志,即可通过以下命令来验证 KubeSphere DevOps 系统下相关 Pod 与 Job 的状态:

kubectl get pod -n kubesphere-devops-system

若 Pod 状态都是 Running,并且在 KubeSphere 控制台的服务组件看到 DevOps 相关

服务都是 健康 状态,说明 KubeSphere DevOps 系统已成功开启安装。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

可参考如下文档进一步上手 KubeSphere DevOps 系统的功能:

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

活动预告

KubeSphere 将在七月份重磅发布 v3.0!欢迎大家关注和报名参加 6 月 30 日 (本周二下午 14:00) 的 KubeSphere 线上发布会的直播,提前知晓 v3.0 的重大更新。

KubeSphere DevOps 初体验,内置 Jenkins 引擎

KubeSphere DevOps 初体验,内置 Jenkins 引擎

Jenkins CLI 命令行 v0.0.28

CI/CD 哪家强 - 主流开源 CI 工具对比

征集用户故事- Jenkins is the Way

Tekton 流水线发布首个官方 Beta 版本

Jenkins流水线与k8s的持续集成落地分享

使用 Prometheus 和 Grafana 监控 Linux 进程

本文分享自微信公众号 - Jenkins(Jenkins-Community)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这