KubeSphere DevOps 初体验,内置 Jenkins 引擎 4年前

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

解读 KubeSphere Devops

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

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

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

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

安装 KubeSphere 开启 Devops 组件

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

// 前提条件 //

// 安装 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

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

确认 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,则说明存储安装成功。

// 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

// 验证访问 //


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

$ 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的安装 //


通过修改 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 系统的功能:

活动预告

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

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源创计划”,欢迎正在阅读的你也加入,一起分享。

image
YueDaren
多情只有春庭月,犹为离人照落花。
3
发布数
0
关注者
1197
累计阅读

热门教程文档

10.x
88小节
Objective-C
29小节
Typescript
31小节
Redis
14小节
Djiango
17小节
广告