[云原生专题-60]:Kubesphere云治理-DevOps-自动化开发与自动化上云部署流程概述
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[云原生专题-60]:Kubesphere云治理-DevOps-自动化开发与自动化上云部署流程概述相关的知识,希望对你有一定的参考价值。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123015489
目录
前言:
前面阐述和实践了通过手工的方式部署微服务应用程序,手工build,手工打包,手工上传文件,手工部署镜像等工作。如果这种部署几个月发布一次,如果是只有少量的微服务应用,这种手工操作是可以接受的,但如果这种部署天天都在发生、时时刻刻都在发生;如果微服务的数量成百上千,这种手工操作就显得力不从心、非常低效,最终导致无法实施。然而基于云原生的软件开发,具备了天然的时刻发布和微服务数据庞大的特点,因此就需要一种更加高效、更加自动化的手段来实现软件的开发和部署,Kubesphere的DevOps应运而生。
第1章 Kubesphere的DevOps功能概述
1.1 Kubesphere概述
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式治理平台,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。
1.2 Kubesphere的四大能力:
(1)kubesphere的运维Ops能力
kubesphere是其他微服务的Ops运维治理平台,可以轻松的实现对非kubesphere的微服务部署、管理、运维、治理,管理在线运行的各种业务应用的微服务。前面的章节就是再参数其运维Ops能力。
(2)kubesphere的软件开发Dev管理能力
kubesphere在云端集成了Jikens等各种其它的微服务软件开的工具套件,可以轻松的实现微服务软件工程的开发流程自动化,包括编译、测试、打包、镜像生成、镜像发布、镜像的部署的全流程化、全自动化。而微服务部署后的微服务的运维与治理,就是kubesphere的运维Ops能力。
kubesphere的运维Ops能力+kubesphere的软件开发Dev管理能力就构成了kubesphere的DevOps能力。
(3)kubesphere自身功能的微服务化能力
kubesphere其自身的各种功能模块本身就是基于微服务构建起来,可以即插即用地部署在云端,kubesphere的DevOps功能能力或功能,也是基于微服务发布和集成进kubesphere系统的。
(4)kubesphere自身行为的微服务化能力
kubesphere的DevOps把整个开发过程中的各种行为,按照流水线pipeline的方式进行了动态的组织和组装,它是如何做到得呢?kubesphere把开发过程中的开发每个行为,都抽象成一个一个的微服务,通过这些微服务的动态部署和删除,就实现了流水线行为的动态组装和定制化功能。
第2章 kubesphere的DevOps功能
2.1 官方文档
KubeSphere DevOps 系统 | KubeSphere Documents
2.2 DevOps功能概述
2.3 kubesphere DevOps功能概述
KubeSphere 针对容器与 Kubernetes 的应用场景,基于 Jenkins 提供了一站式 DevOps 系统,包括丰富的 CI/CD 流水线构建与插件管理功能,还提供 Binary-to-Image(B2I)、Source-to-Image(S2I),为流水线、S2I、B2I 提供代码依赖缓存支持,以及代码质量管理与流水线日志等功能。
内置的 DevOps 系统将应用的开发和自动发布与容器平台进行了很好的结合,还支持对接第三方的私有镜像仓库和代码仓库形成完善的私有场景下的 CI/CD,提供了端到端的用户体验。
可参考如下文档进一步了解 KubeSphere DevOps 系统的功能:
- Binary-to-Image:将 WAR、JAR、Binary 这一类的制品快速打包成 Docker 镜像,并发布到镜像仓库中,最终将服务自动发布至 Kubernetes;
- Source-to-Image:无需写 Dockerfile,仅输入源代码地址即可自动打包成可运行程序到 Docker 镜像的工具,方便构建镜像发布至镜像仓库和 Kubernetes;
- 图形化构建流水线:通过图形化编辑的界面构建流水线,无需写 Jenkinsfile,交互更友好;
- 基于 Jenkinsfile 构建流水线:基于项目仓库中已有的 Jenkinsfile 快速构建流水线;
- 基于 GitLab + Harbor 构建流水线:支持对接第三方的镜像仓库和代码仓库;
2.4 kubesphere DevOps的系统架构
在上述架构中:
(1)微服务治理工具K8S + kubesphere :安装在云端
(2)DevOps套件(包括Jenkins、maven等工具): 与kubesphere一起,安装在云端
(3)微服务应用:与K8S + kubesphere一起,部署在云端
(4)编译、测试服务器:可以与kubesphere部署在一起,并通过名字空间与运维系统加以隔离,也可以是指定的外部服务器,部署的优势是kubesphere已经集成了大量的开发工具。
(5)外部的服务器仓库:github等代码仓库、包制品参考、docker镜像仓库、K8S仓库。
网络上有大量免费、开源、共享的资源,
(6)私有的服务器仓库:私有服务器存放公司核心数据,如公司自己的产品代码、文档、资料等。
可以看出,在云生系统中,几乎所有生成资料(土地、厂房、机器设备、工具、原料),都部署在云端,不受限于物理空间的限制,包括劳动者。
缺点是,需要大量的云服务器资源,云服务器被恶意释放的风险 。
2.5 kubesphere DevOps功能特点
- 自动化:整个流程全自动完成
- 动态组装:在这个流程中,不同的人,有不同的行为需求,需要动态组装各种行为。
- 行为的微服务化:把各种基本行为包装在微服务中
第3章 如何开启安装 DevOps系统
DevOps并不是kubesphere的基础功能,而是一个动态组件,是需要动态的加载。
KubeSphere DevOps 系统 | KubeSphere Documents
开启DevOps的基本方法其实很简单:
(1)先编辑相应的配置文件,devops_enabled: true
(2)然后开始安装kubesphere,在安装kubesphere的过程中安装Deops,如果是已经安装了kubesphere,则直接安装DevOps。
因此,配置文件是关键。
3.1 前置条件
注意:开启可选功能组件之前,请先参考 可插拔功能组件列表,确认集群的可用 CPU 与内存空间是否充足,开启安装前可能需要提前扩容集群或机器配置,否则可能会因为资源不足而导致的机器崩溃或其它问题。
3.2 安装过程-没有按照KubeSphere之前
(1)编译配置文件
安装前,在 installer 目录下编辑 conf/common.yaml
文件,然后参考如下开启。
#DevOps Configuration
devops_enabled: true # 是否安装内置的 DevOps 系统(支持流水线、 S2i 和 B2i 等功能),若机器配置充裕建议安装
jenkins_memory_lim: 8Gi # Jenkins 内存限制,默认 8 Gi
jenkins_memory_req: 4Gi # Jenkins 内存请求,默认 4 Gi
jenkins_volume_size: 8Gi # Jenkins 存储卷大小,默认 8 Gi
jenkinsJavaOpts_Xms: 3g # 以下三项为 jvm 启动参数
jenkinsJavaOpts_Xmx: 6g
jenkinsJavaOpts_MaxRAM: 8g
sonarqube_enabled: true # 是否安装内置的 SonarQube (代码静态分析工具)
#sonar_server_url: SHOULD_BE_REPLACED # 安装支持对接外部已有的 SonarQube,此处填写 SonarQube 服务的地址
#sonar_server_token: SHOULD_BE_REPLACED # 此处填写 SonarQube 的 Token
devops_enabled: true # 是否安装内置的 DevOps 系统(支持流水线、 S2i 和 B2i 等功能),若机器配置充裕建议安装
(2)安装KubeSphere
3.3 安装过程-已经按照KubeSphere之后
(1)启动 ks-installer
通过修改 ks-installer 的 configmap 可以选装组件,执行以下命令(kubectl 命令需要以 root 用户执行)
$ kubectl edit cm -n kubesphere-system ks-installer
(2)修改配置文件
devops:
enabled: True
jenkinsMemoryLim: 2Gi
jenkinsMemoryReq: 1500Mi
jenkinsVolumeSize: 8Gi
jenkinsJavaOpts_Xms: 512m
jenkinsJavaOpts_Xmx: 512m
jenkinsJavaOpts_MaxRAM: 2g
sonarqube:
enabled: True
保存退出,参考 验证可插拔功能组件的安装 ,无需再次执行安装命令 ./install.sh,仅需通过查询 ks-installer 日志或 Pod 状态即可验证功能组件是否安装成功。
感悟:
云原生更本质的目标是: 把从事软件生产,包括嵌入式软件生产的一切生产资料,包括厂房、机器、设备、工具、原材料等都放到云端,把生产出来的产品的销售、运维也放到云端,实现全过程的全自动化,甚至把甚至是生产者自身也是在云端,结合未来的人工智能,编程创作也是由机器完成,系统自动完成生产过程,生产力得到极大的提升,大多数人在整个环节中只是消费者,人存在的意义就只有消费,最终实现共产主义,甚至超越共产主义。以云原生技术为基础生产资料的创业就是轻资产创业。
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123015489
以上是关于[云原生专题-60]:Kubesphere云治理-DevOps-自动化开发与自动化上云部署流程概述的主要内容,如果未能解决你的问题,请参考以下文章
[云原生专题-48]:Kubesphere云治理-操作-多租户概念概述
[云原生专题-46]:Kubesphere云治理-安装-在K8S的基础之上快速安装
[云原生专题-49]:Kubesphere云治理-操作-分步部署基于微服务的业务应用 - 基本过程与步骤
[云原生专题-47]:Kubesphere云治理-安装-在Linux平台上进行单机版安装
[云原生专题-53]:Kubesphere云治理-操作-通过Kubesphere应用商店一键部署微服务应用-消息中间件RabbitMQ的安装与部署