坐井观天说Devops--1--情况总体说明

news/2024/7/12 2:21:16 标签: devops, 运维

坐井观天说Devops--1--情况总体说明

  • 一.介绍
  • 二.Devops流程说明
  • 三.环境说明
    • 1.k8s集群搭建
      • a.主机规划说明
      • b.主件规划说明
    • 2.网站搭建说明
    • 3.Jenkins的主节点和子节点镜像和系统规划
  • 四.实验规划
    • 1.实验准备
    • 2.持续集成实验
  • 五.涉及到的工具和技术
  • 六.投资收益
  • 七.遗留问题
  • 八.参考资料

一.介绍

虽然从事IT行业已过10年,但是一直从事传统软件的测试工作。对于目前互联网流行的技术devops,我没有较好的资历、背景以及实践经历,只是根据自己的学习研究和一定的实践经历,坐井观天聊一聊devops

关于devops概念,我觉得这篇文章写的挺好的-----什么是 DevOps?一篇读懂!。

DevOps 是一种文化理念、工具与实践的结合,目的是更快更可靠地向用户持续交付价值,为了能够快速的持续集成集成,持续交付,持续部署,我们需要将开发,运维,测试的琐碎的事,全部自动化,能自动不手动,能容器不虚拟机(物理机),不断的优化,提高交付效率。

devops技术,能够将开发,运维以及测试融为一体,极大的提高开发效率和质量。
因为我是测试工程师,我更多的是站在测试工程师的角度,来说一下devops技术,我们测试也是需要devops技术的,能够给我们测试带来那些好处?
devops技术,有3个比较核心的技术,k8s集群技术,jenkins持续集成技术以及docker容器技术。
1.能够为性能测试赋能,对于电商中的秒杀或者抢火车票,测试时,需要模拟千万级别(甚至更多)的并发,一台测试电脑,是远远不够的,可能需要100台测试服务器甚至更多。k8s集群技术,能够轻松的做到,对于集群电脑的统一调度,管理,监控等等。
2.利用jenkins技术和k8s技术,搭建测试平台管理系统,目前应用搭载的设备和系统众多,比如,不同型号的手机平板(安卓,苹果)以及他们还存在不同版本的系统,不同的电脑系统(windows,mac,linux),还有不同的手机和电脑浏览器(chrome,edge,firefox,safari)等等,面对如此繁杂的设备,系统,浏览器等,自动化的测试脚本和工具也会很繁杂,我们需要一个平台,能够统一的管理不同硬件,系统,能够统一的管理不同的自动化脚本和工具。目前jenkins可以做到这些。比如,开发版本发布后,我们能够选择不同的硬件,系统,自动化脚本脚本进行测试(ui自动化,接口自动化,兼容行测试自动化),当然整个过程, 也可以全程自动化的。
3.资源共享。比如我们的测试集群有100台服务器,如果仅仅只是用来做性能测试,有点浪费,可以在这个集群上,做ui自动测试,接口自动测试,兼容性自动化测试等等,当然也可以把我们的测试相关的系统部署上去,比如jira,禅道,testlink等等
4.提高测试效率,开发运维需要devops技术,进行全程自动化。对于我们自动化测试而言,我们也有很多类型的测试代码,我们也需要对测试代码进行版本管理,持续集成等等。我们也可以将这些东西放在我们的测试集群上去。
我写了几篇博客,也做了相关实验,有兴趣可以一块看看。

坐井观天说Devops—1–情况总体说明,该篇主要介绍的整体的流程、实验环境以及实验规划等内容

坐井观天说Devops–2–实验环境准备,该篇主要讲的是搭建实验环境,搭建harbor,搭建k8s集群,在k8s集群上,搭建gitlab,jenkins,sonarqube,prometheus,grafana,metrics server,StorageClass,nginx-ingress等等

坐井观天说Devops–3–开发CICD之k8s部署springboot分布式持续集成持续交付,该篇主要讲的是,站在开发的角度,多个开发项目是springboot项目的整个CICD流程,里面有使用k8s容器化部署jenkins是节点,并且容器里面能够使用docker命令和kubectl命令等内容

坐井观天说Devops–4–测试CICD之k8s部署selenium分布式自动化持续集成,该篇用时最长,里面讲的有UI自动化的PO设计模式,将3种浏览器(chrome,edge,Firefox)容器化并且k8s动态部署,整合selenium,pytest,allure,k8s,jenkins,gitlab,shell,python等技术,实现seleniumui自动化测试脚本分布式自动化持续集成

坐井观天说Devops–5–测试CICD之k8s部署selenium grid分布式自动化持续集成,该篇主要将的是selenium grid部署到k8s集群的两种方式,以及测试脚本分布式部署到k8s集群中去。

二.Devops流程说明

整体的流程图,第一次使用dia软件画的流程图,效果很不好(字体不是太清楚),凑合看,大致的流程如下:

1.开发工程师和测试工程师通过git提交代码到gitlab代码仓库(测试工程师提交的是自动化相关的代码)
2.jenkins的子节点自动去抓取代码
3.自动的通过sonarqube对代码进行静态检测
4.自动的将代码打包编译,自动的做成docker镜像
5.自动的应用镜像推送到harbor仓库
6.进入到k8s master节点,读取和启动应用部署的yaml文件
7.自动的通过k8s主节点将应用部署,到k8s的测试集群中去
8.自动的去从harbor中拉取部署的镜像
9.自动的启动自动化测试(ui自动测试,接口自动化测试,性能或者压力自动化,兼容性自动化测试等等,根据实际需要来设置自动化测试)
10.自动的去从harbor拉取自动化测试的镜像
11.自动化测试完成后,自动的出测试报告
12.自动的将测试报告通知给相关的人员,然后根据测试结果,做出对应的动作
这样,就将很多琐碎的事情,全部流程化和自动化掉了,能够比较大的提高工作效率

在这里插入图片描述

三.环境说明

1.k8s集群搭建

a.主机规划说明

K8S集群搭建主机规划

序列主机IP系统主机功能软件
1k8s-master1192.168.100.200Ubuntu server22.04k8s主节点k8s相关容器,harbor,docker
2k8s-node1192.168.100.201Ubuntu server22.04部署基础网站k8s相关容器,gitlab,jenkins,allure,grafana等web网站,docker
3k8s-node2192.168.100.202Ubuntu server22.04持续集成的的各个子节点和prometheusk8s相关容器,docker

b.主件规划说明

K8S集群搭建,主件规划

序列主件节点用途
1kube-apiservermaster提供了HTTP Rest接口的关键服务进程,是K8S里所有资源的增删改查等操作的唯一入口,也是集群控制的入口进程
2kube-controller-managermasterK8S里所有资源对象的自动化控制中心,集群内各种资源Controller的核心管理者,针对每一种资源都有相应的Controller,保证其下管理的每个Controller所对应的资源始终处于期望状态
3kube-schedulermaster负责资源调度(Pod调度)的进程,通过API Server的Watch接口监听新建Pod副本信息,并通过调度算法为该Pod选择一个最合适的Node
4corednsmastercoredns在K8S中的用途,主要是用作服务发现,也就是服务(应用)之间相互定位的过程。
5etcdmasterK8S里的所有资源对象以及状态的数据都被保存在etcd中
6pausemaster/slave在 pod 中担任 Linux 命名空间共享的基础,启用 pid 命名空间,开启 init 进程,回收僵尸进程
7kube-proxymaster/slave实现Kubernetes Service的通信与负载均衡机制的重要组件
8flannelmaster/slave提供集群网络
9ingress-nginx-controllerslave实现反向代理及负载均衡的程序,对ingress定义的规则进行解析,根据配置的规则来实现请求转发
10kube-prometheusmaster/slavekube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:The Prometheus Operator,Highly available Prometheus,Highly available,Alertmanager,Prometheus node-exporter,Prometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter),kube-state-metrics,Grafana
11kubeletmaster/slave负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能
12kubeadmmaster/slave用来安装和部署k8s
13kubectlmaster操作k8s集群的命令行工具
14docker enginemaster/slaveDocker引擎,负责本机的容器创建和管理工作
15cri-dockerdmaster/slave为Docker Engine提供一个能够支持到CRI规范的垫片,从而能够让Kubernetes基于CRI控制Docker

2.网站搭建说明

CICD网站搭建规划

序列域名主机名称系统用途备注
1harbor.xusanduo.comk8s-master1harbor系列docker容器管理镜像通过docker-compose方式部署
2gitlab.xusanduo.comk8s-node1gitlabdocker容器管理代码k8s deployment方式部署,ingress-nginx方式访问
3jenkins.xusanduo.comk8s-node1jenkinsdocker容器cicd调度平台k8s deployment方式部署,ingress-nginx方式访问
4grafana.xusanduo.comk8s-node1grafanadocker容器监控整个集群的状态k8s deployment方式部署,ingress-nginx方式访问
5prometheus.xusanduo.comk8s-node1prometheusdocker容器监控整个集群k8s deployment方式部署,ingress-nginx方式访问
6sonar.xusanduo.comk8s-node1sonarqubedocker容器代码静态检测k8s deployment方式部署,ingress-nginx方式访问

3.Jenkins的主节点和子节点镜像和系统规划

Jenkins的主节点和子节点镜像和系统规划

序列主机名称系统用途备注
1k8s-node1Jenkins-masterdocker容器Jenkins主节点网站k8s deployment方式部署,ingress-nginx方式访问
2k8s-node2Jenkins-node-mavendocker容器打包Java应用程序打包
3k8s-node2Jenkins-node-nodeJsdocker容器打包nodeJs应用程序打包
4k8s-node2Jenkins-node-seleniumHubdocker容器用来分布式测试和兼容性测试UI自动化测试
5k8s-node2Jenkins-node-seleniumchromenodedocker容器用来分布式测试和兼容性测试UI自动化测试,chrome浏览器
6k8s-node2Jenkins-node-seleniumfirefoxnodedocker容器用来分布式测试和兼容性测试UI自动化测试,firefox浏览器
7k8s-node2Jenkins-node-seleniumedgenodedocker容器用来分布式测试和兼容性测试UI自动化测试,edge浏览器
8k8s-node2Jenkins-node-seleniumchromedocker容器用来分布式测试和兼容性测试UI自动化测试,chrome浏览器,序列5的镜像,无法单独使用,需要修改或者自己制作,才能使用(目前是单独制作)
9k8s-node2Jenkins-node-seleniumfirefoxdocker容器用来分布式测试和兼容性测试UI自动化测试,firefox浏览器,序列6的镜像,无法单独使用,需要修改或者自己制作,才能使用(目前是单独制作)
10k8s-node2Jenkins-node-seleniumedgedocker容器用来分布式测试和兼容性测试UI自动化测试,edge浏览器,序列7的镜像,无法单独使用,需要修改或者自己制作,才能使用(目前是单独制作)
11k8s-node2Jenkins-node-requestdocker容器使用Python的request做接口测试接口自动化测试
12k8s-node2Jenkins-node-jmeter-masterdocker容器性能测试自动化测试性能测试自动化测试–主节点
13k8s-node2Jenkins-node-jmeter-slavedocker容器性能测试自动化测试性能测试自动化测试–子节点,根据实际需要,可以在k8s集群启动很多个
14k8s-nodeXJenkins-node-windows/linux/mac-Xwindows/linux/mac安卓系统自动化测试(UI自动化,Monkey,CTS,兼容,性能等)该电脑连接安卓手机,根据实际需要,类似这种电脑可以有很多台
15k8s-nodeXJenkins-node-windows/linux/mac-Xwindows/linux/macIOS系统自动化测试(UI自动化,兼容,性能等)该电脑连接苹果手机,根据实际需要,类似这种电脑可以有很多台

四.实验规划

1.实验准备

1.docker-compose部署harbor
2.k8s环境集群搭建
3.k8s集群搭建helm
4.k8s集群搭建nfs类型的StorageClass
5.k8s集群部署nginx-ingress
6.k8s集群部署metrics server
7.k8s集群部署kube-prometheus
8.k8s集群部署gitlab
9.k8s集群部署jenkins
10.k8s集群部署sonarqube

2.持续集成实验

1.坐井观天说Devops–2–实验环境准备
2.坐井观天说Devops–3–开发CICD之k8s部署springboot分布式持续集成持续交付
3.坐井观天说Devops–4–测试CICD之k8s部署selenium分布式自动化持续集成
4.坐井观天说Devops–5–测试CICD之k8s部署selenium grid分布式自动化持续集成
5.坐井观天说Devops–6–测试CICD之python接口自动化持续集成(暂时未完成)
6.坐井观天说Devops–7–测试CICD之jmeter接口自动化持续集成(暂时未完成)
7.坐井观天说Devops–8–测试CICD之jmeter分布式性能自动化持续集成(暂时未完成)
8.坐井观天说Devops–9–开发和测试CICD整合(暂时未完成)

五.涉及到的工具和技术

编程语言编码环境系统集群技术自动化技术代码和镜像管理持续集成工具打包工具容器代码静态检测工具
python,shellpycharm,condaubuntuk8sselenium,request,jmeter,allure,pytestgitlab,harborjenkinsmavendockersonarqubegrafana,prometheus,ssh,webhook,tomcat,NFS,VMvare,helm

六.投资收益

站在测试的角度

七.遗留问题

1.kube-prometheus中的adapter无法获取cpu和内存
2.gitlab的使用上,还有很多功能,后面要添加上去

八.参考资料

VMvare官方地址
https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
Ubuntu系统下 VMware tools安装
https://blog.csdn.net/MR_lihaonan/article/details/125479384
重新开机后,vmvare的虚拟机硬盘无法打开
https://blog.csdn.net/o396032767/article/details/84805532

k8s学习笔记2-搭建harbor私有仓库
https://blog.csdn.net/weixin_43501172/article/details/125937610

Ubuntu 20.04 Server 安装nfs
https://www.jianshu.com/p/391822b208f0
mount.nfs: access denied by server while mounting
https://blog.csdn.net/ding_xc/article/details/123183499
如何在Ubuntu上配置NFS(着重看权限配置)
http://www.manongjc.com/detail/51-yuyinvlieoydurz.html
https://gitee.com/thinkgem/jeesite4#https://gitee.com/link?target=http%3A%2F%2Fdemo.jeesite.com%2F
https://github.com/princeqjzh/JeeSite4


http://www.niftyadmin.cn/n/1166382.html

相关文章

坐井观天说Devops--2--实验环境准备

坐井观天说Devops--2--实验环境准备一.实验说明二.实验环境准备1.docker-compose部署harbor2.k8s环境集群搭建3.k8s集群搭建helm4.k8s集群搭建nfs类型的StorageClassa.nfs的安装b.StorageClass的部署5.k8s集群部署nginx-ingress6.k8s集群部署metrics server7.k8s集群部署kube-p…

坐井观天说Devops--3--开发CICD之k8s部署springboot分布式持续集成持续交付

坐井观天说Devops--3--开发CICD之k8s部署springboot分布式持续集成持续交付一.介绍二.开发CICD整体流程三.环境准备1基础环境准备a.gitlab配置b.创建仓库2.开发环境准备a.IntelliJ IDEA环境安装b.创建springboot项目c.maven打包springboot项目d.idea关联gitlabe.提交多个版本到…

坐井观天说Devops--4--测试CICD之k8s部署selenium分布式自动化持续集成

坐井观天说Devops--4--测试CICD之k8s部署selenium分布式自动化持续集成一.介绍二.解决的问题场景三.测试CICD整体流程四.UI自动化架构设计1.脚本开发环境准备2.PO设计模式a.关于ui自动化框架的设计思路和具体实施b.基于博客基础上的设计,我优化了那些:c.…

坐井观天说Devops--5--测试CICD之k8s部署selenium grid分布式自动化持续集成

坐井观天说Devops--5--测试CICD之k8s部署selenium grid分布式自动化持续集成一.介绍二.解决问题的场景三.测试CICD整体流程四.实验环境准备1.k8s部署selenium-grida.方式1:hub-node模式b.方式2:distributed模式2.制作测试脚本docker基础镜像五.实验1.git…

一个测试工程师的学习总结

从2012年大学毕业,到如今,已经走过9个年头,一直从事软件测试方面的工作。把自己会的和准备学习的东西梳理一下。墨迹了好一阵子,今天是2021年3月24日,终于动笔了。哈哈,提纲先列出来,后面每个提…

fpga如何约束走线_详解FPGA的四大设计要点

来源:嵌入式ArmFPGA的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单元(LE)。早期的FPGA相对比较简单,所有的功能单元仅仅由管脚、内部buffer、LE、RAM构建而成,LE由LUT(…

直系同源基因ks_徐鹏教授课题组与云南大学等单位合作研究揭示硬骨鱼类异源多倍体亚基因组演化动态历史...

近日,我院徐鹏教授与云南大学等单位合作完成的题为“From asymmetrical to balanced genomic diversification during rediploidization: subgenomic evolution in allotetraploid fish”的研究论文在国际知名期刊《Science Advances》在线发表。多倍化现象在脊椎动…

verilog将100mhz分频为1hz_音箱分频器的秘密

当大家拆解音箱时,内部除了会有厂商用于调音的材料外,还会发现里面有一块电路板夹在输出端子与发声单元之间,而这块电路板很可能就是分频器,它的功能相当于音箱中的"枢纽",将模拟信号分离成高、中、低音等不同部分送入对应的发声单元,从而达到更好的回放效…