魏晓东 发表于 2024-7-17 00:40:52

【DevOps系列】DevOps简介及底子环境安装

作者:后端小肥肠
目录
1. 前言
2. DevOps(具体先容)
3. Code阶段工具
3.1 Git安装
3.2 GitLab安装
4. Build阶段工具
5. Operate阶段工具
5.1 Docker安装
5.2 Docker-Compose安装
6. Integrate工具
6.1 Jenkins先容
6.2 Jenkins安装
6.3 Jenkins入门设置
6.3.1 构建使命
6.3.2 设置源码拉取地址
6.3.3 设置Maven构建代码
6.3.4 设置Publish发布&远程操作
7. 结语

1. 前言

在当代软件开发中,接纳DevOps(Development和Operations的团结)方法已成为提高效率、加速交付和提升产物质量的重要手段。DevOps不仅仅是一种工具或技能的聚集,更是一种文化和理念的融合,旨在通过主动化和协作来消除传统开发与运维之间的隔阂,实现连续交付和连续集成。
本系列文章将深入探究DevOps的各个方面,从底子概念到现实工具的使用,为读者提供全面的指导和实用的建议。我们将具体先容各种工具如Git、GitLab、Docker、Jenkins、Maven等的安装和设置过程,帮助读者快速掌握并应用这些关键技能,从而建立高效的软件开发和交付流程。
2. DevOps(具体先容)

软件开发最开始是由两个团队组成:


[*] 开发操持由开发团队从头开始计划和整体体系的构建。需要体系不停的迭代更新。
[*] 运维团队将开发团队的Code举行测试后部署上线。希望体系稳固安全运行。
这看似两个目标差别的团队需要协同完成一个软件的开发。
在开发团队指定好操持并完成coding后,需要提供到运维团队。
运维团队向开发团队反馈需要修复的BUG以及一些需要返工的使命。
这时开发团队需要常常等待运维团队的反馈。这无疑延长了变乱并推迟了整个软件开发的周期。
会有一种方式,在开发团队等待的时候,让开发团队转移到下一个项目中。等待运维团队为之前的代码提供反馈。
可是这样就意味着一个完整的项目需要一个更长的周期才可以开发出最终代码。
基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。
那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。
DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。
虽然字面意思只涉及到了开发团队和运维团队,着实QA测试团队也是参与其中的。
网上可以检察到DevOps的符号雷同于一个无穷大的符号
DevOps https://img-blog.csdnimg.cn/img_convert/11415408cc4afe980bd7820813215ba5.png
这表明DevOps是一个不停提高效率并且连续不停工作的过程
DevOps的方式可以让公司能够更快地应对更新和市场发展变革,开发可以快速交付,部署也更加稳固。
核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。
整体的软件开发流程包括:


[*] PLAN:开发团队根据客户的目标制定开发操持
[*] CODE:根据PLAN开始编码过程,需要将差别版本的代码存储在一个库中。
[*] BUILD:编码完成后,需要将代码构建并且运行。
[*] TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
[*] DEPLOY:代码颠末手动测试和主动化测试后,认定代码已经准备好部署并且交给运维团队。
[*] OPERATE:运维团队将代码部署到生产环境中。
[*] MONITOR:项目部署上线后,需要连续的监控产物。
[*] INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心,即连续集成、连续部署。
为了包管整体流程可以高效的完成,各个阶段都有比较常见的工具,如下图:
软件开发过程&涉及工具 https://img-blog.csdnimg.cn/img_convert/3c0b0b359c231931d6853b2bbc9fac1b.png
最终可以给DevOps下一个定义:DevOps 夸大的是高效构造团队之间如何通过主动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳固的软件。
3. Code阶段工具

在code阶段,我们需要将差别版本的代码存储到一个堆栈中,常见的版本控制工具就是SVN或者Git,这里我们接纳Git作为版本控制工具,GitLab作为远程堆栈。
3.1 Git安装

https://git-scm.com/(傻瓜式安装)
3.2 GitLab安装

单独准备服务器,接纳Docker安装


[*] 检察GitLab镜像
docker search gitlab
[*] 拉取GitLab镜像
docker pull gitlab/gitlab-ce
[*] 准备docker-compose.yml文件
version: '3.1'
services:
gitlab:
 image: 'gitlab/gitlab-ce:latest'
 container_name: gitlab
 restart: always
 environment:
   GITLAB_OMNIBUS_CONFIG: |
     external_url 'http://192.168.11.11:8929'
     gitlab_rails['gitlab_shell_ssh_port'] = 2224
 ports:
   - '8929:8929'
   - '2224:22'
 volumes:
   - './config:/etc/gitlab'
   - './logs:/var/log/gitlab'
   - './data:/var/opt/gitlab'
[*] 启动容器(需要稍等一小会……)
docker-compose up -d
[*] 访问GitLab首页
首页 https://img-blog.csdnimg.cn/img_convert/c5ca09aa995d4ff66c22aaa138377603.png
https://img-blog.csdnimg.cn/img_convert/b1abcbb44986399e0ac86d7ac51a6f37.png


[*] 检察root用户初始暗码
docker exec -it gitlab cat /etc/gitlab/initial_root_password
初始暗码 https://img-blog.csdnimg.cn/img_convert/cf72a5a4222c40564012408984f627a6.png


[*] 登录root用户
登录成功后跳转页面 https://img-blog.csdnimg.cn/img_convert/dcef24baed62c91a166fe5ce17813e0a.png


[*] 第一次登录后需要修改暗码
修改暗码 https://img-blog.csdnimg.cn/img_convert/419a9e4d162befe7f8bbb6acb99bf663.png
搞定后,即可像Gitee、GitHub一样使用。
4. Build阶段工具

构建Java项目的工具一样平常有两种选择,一个是Maven,一个是Gradle。
这里我们选择Maven作为项目的编译工具。
具体安装Maven流程不做阐述,但是需要确保设置好Maven堆栈私服以及JDK编译版本。
5. Operate阶段工具

部署过程,会接纳Docker举行部署,临时只安装Docker即可,后续还需安装Kubenetes
5.1 Docker安装



[*] 准备测试环境&生产环境
[*] 下载Docker依赖组件
yum -y install yum-utils device-mapper-persistent-data lvm2
[*] 设置下载Docker的镜像源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[*] 安装Docker服务
yum -y install docker-ce
[*] 安装成功后,启动Docker并设置开机自启
# 启动Docker服务
systemctl start docker
# 设置开机自动启动
systemctl enable docker
[*] 测试安装成功
docker version
效果 https://img-blog.csdnimg.cn/img_convert/0e99ade8092cb43ce9bb643f403853c0.png
5.2 Docker-Compose安装



[*] 下载Docker/Compose:GitHub - docker/compose: Define and run multi-container applications with Docker
[*] 将下载好的docker-compose-Linux-x86_64文件移动到Linux操作体系
[*] 设置docker-compose-Linux-x86_64文件权限,并移动到$PATH目录中
# 设置文件权限
chmod a+x docker-compose-Linux-x86_64
# 移动到/usr/bin目录下,并重命名为docker-compose
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
[*] 测试安装成功
docker-compose version
效果 https://img-blog.csdnimg.cn/img_convert/e9dfa818e3cbf98bfeec14ff0b1ab10d.png
6. Integrate工具

连续集成、连续部署CI、CD的工具很多,其中Jenkins是一个开源的连续集成平台。
Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的使命,并且还涉及到了构建项目等使命。
Jenkins需要大量的插件包管工作,安装成本较高,下面会基于Docker搭建Jenkins。
6.1 Jenkins先容

Jenkins是一个开源软件项目,是基于Java开发的一种连续集成工具
Jenkins应用广泛,大多数互联网公司都接纳Jenkins配合GitLab、Docker、K 作为实现DevOps的核心工具。
Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来主动化CI/CD过程中的各种噜苏功能。
https://img-blog.csdnimg.cn/img_convert/0f4227059bb3bab1ecd63e69a1f4f353.png
https://img-blog.csdnimg.cn/img_convert/a31fec3a03d4809511376b9d45354f3d.png
Jenkins最重要的工作就是将GitLab上可以构建的工程代码拉取并且举行构建,再根据流程可以选择发布到测试环境或是生产环境。
一样平常是GitLab上的代码颠末大量的测试后,确定发行版本,再发布到生产环境。
CI/CD可以明确为:


[*] CI过程便是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试。

[*] 连续集成:让软件代码可以连续的集成到主干上,并主动构建和测试。

[*] CD过程便是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。

[*] 连续交付:让颠末连续集成的代码可以举行手动部署。
[*] 连续部署:让可以连续交付的代码随时随地的主动化部署。

CI、CD https://img-blog.csdnimg.cn/img_convert/ab4afbcbcd70be35ed78b8e0c4388866.png
6.2 Jenkins安装



[*] 拉取Jenkins镜像
docker pull jenkins/jenkins
[*] 编写docker-compose.yml
version: "3.1"
services:
jenkins:
 image: jenkins/jenkins:2.319.1-lts
 container_name: jenkins
 ports:
   - 8080:8080
   - 50000:50000
 volumes:
   - ./data/:/var/jenkins_home/
[*] 初次启动会因为数据卷data目录没有权限导致启动失败,设置data目录写权限
错误日志 https://img-blog.csdnimg.cn/img_convert/8df33b545278c710ac3cd3c875440f46.png
chmod -R a+w data/

[*] 重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站
# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
 <id>default</id>
 <url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
 <id>default</id>
 <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
</site>
</sites>
[*] 再次重启Jenkins容器,访问Jenkins(需要稍微等会)
Jenkins首页 https://img-blog.csdnimg.cn/img_convert/3f4d20759c488db877e544d5639db39d.png
https://img-blog.csdnimg.cn/img_convert/f124217d8f4b9f3ef5ef433e3819ba44.png


[*] 检察暗码登录Jenkins,并登录下载插件
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
登录并下载插件 https://img-blog.csdnimg.cn/img_convert/db0360fa2fca1aa8426386a3dbb70fa8.png
https://img-blog.csdnimg.cn/img_convert/c43d206f7e78d1c189d87837205d02ac.png


[*] 选择需要安装的插件
选择需要安装的插件 https://img-blog.csdnimg.cn/img_convert/db1d3f6bdc37d78ce9f004833c06d7d7.png
https://img-blog.csdnimg.cn/img_convert/4e04781f9274790633252a7d582ccd24.png
https://img-blog.csdnimg.cn/img_convert/6e15c4d7ea3c10b17b765d6bfaa34416.png


[*] 下载完毕设置信息进入首页(可能会出现下载失败的插件)
https://img-blog.csdnimg.cn/img_convert/bc2326620a1bbc56fcf1029cbf842e84.png
https://img-blog.csdnimg.cn/img_convert/f03bea66394fc897dfe3eef76cdbc000.png
https://img-blog.csdnimg.cn/img_convert/49b8cceba52d97708ddf45d598f4cbee.png
6.3 Jenkins入门设置

由于Jenkins需要从Git拉取代码、需要本地构建、乃至需要直接发布自定义镜像到Docker堆栈,所以Jenkins需要设置大量内容。
6.3.1 构建使命

准备好GitLab堆栈中的项目,并且通过Jenkins设置项目的实现当前项目的DevOps根本流程。


[*] 构建Maven工程发布到GitLab(Gitee、Github均可)
[*]   GitLab检察项目 https://img-blog.csdnimg.cn/img_convert/d170d3620a9b4bba2fc8296726849703.png

[*] Jenkins点击左侧导航新建使命
[*]   新建使命 https://img-blog.csdnimg.cn/img_convert/27e3ce6c74ea800f8c941a4d54a5a3af.png

[*] 选择自由风格构建使命
[*]   构建使命 https://img-blog.csdnimg.cn/img_convert/3c879a9f3a6a80643c7b1474b9f0b0de.png

6.3.2 设置源码拉取地址

Jenkins需要将Git上存放的源码存储到Jenkins服务地点磁盘的本地


[*] 设置使命源码拉取的地址
源码管理 https://img-blog.csdnimg.cn/img_convert/98b62619297589b4e065cb9ad1032b7a.png


[*] Jenkins立即构建
点击使命test中的立即构建 https://img-blog.csdnimg.cn/img_convert/9e8e736c60d7d9bb698782388c32964f.png


[*] 检察构建工程的日志,点击上述③的使命条即可
检察使命拉取Git源码日志 https://img-blog.csdnimg.cn/img_convert/0f5f5c986700853734fb9ec998b9ae2d.png
可以看到源码已经拉取带Jenkins本地,可以根据第三行日志信息,检察Jenkins本地拉取到的源码。


[*] 检察Jenkins容器中/var/jenkins_home/workspace/test的源码
源码存放位置 https://img-blog.csdnimg.cn/img_convert/0c01f15a47e9285320490fa9de452ee3.png
6.3.3 设置Maven构建代码

代码拉取到Jenkins本地后,需要在Jenkins中对代码举行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDK和Maven,并且设置到Jenkins服务。


[*] 准备JDK、Maven压缩包通过数据卷映射到Jenkins容器内部
[*]   数据卷存放位置 https://img-blog.csdnimg.cn/img_convert/477f7c4976f66410031f0c29c0e8ae62.png

[*] 解压压缩包,并设置Maven的settings.xml
<!-- 阿里云镜像地址 -->
<mirror>  
 <id>alimaven</id>  
 <name>aliyun maven</name>  
 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 <mirrorOf>central</mirrorOf>  
</mirror>
<!-- JDK1.8编译插件 -->
<profile>
 <id>jdk-1.8</id>
 <activation>
     <activeByDefault>true</activeByDefault>
     <jdk>1.8</jdk>
 </activation>
 <properties>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
     <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
 </properties>  
</profile>
[*]   Jenkins设置JDK&Maven并保存 https://img-blog.csdnimg.cn/img_convert/41007261dbb7b0e32ec54fe35e9f3e9b.png
https://img-blog.csdnimg.cn/img_convert/c9c18f214e93f101a845915b130d4abf.png

[*] 设置Jenkins使命构建代码
[*]   设置Maven构建代码 https://img-blog.csdnimg.cn/img_convert/478e2f2bd714dc95b0b037338491e74d.png
https://img-blog.csdnimg.cn/img_convert/2f55e38207243a243f1b4092d3b76529.png

[*] 立即构建测试,检察target下的jar包
[*]   构建源码 https://img-blog.csdnimg.cn/img_convert/3ebfd2ac1db77aa477abed9403b5d8ab.png
https://img-blog.csdnimg.cn/img_convert/0afb45e5eb220e34d8d5bda89864077c.png

6.3.4 设置Publish发布&远程操作

jar包构建好之后,就可以根据环境发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH。


[*] 设置Publish Over SSH毗连测试、生产环境
[*]   Publish Over SSH设置 https://img-blog.csdnimg.cn/img_convert/bb72e5c9a5a945bb361b6ec8b4625408.png

[*] 设置使命的构建后操作,发布jar包到目标服务
[*]   设置构建后操作 https://img-blog.csdnimg.cn/img_convert/2159305b53521de59110859bfe4b40d3.png
https://img-blog.csdnimg.cn/img_convert/f0b65a44b7d0a9a22a67e79fb3117320.png
https://img-blog.csdnimg.cn/img_convert/b59ddb24a12a7317985c73fde71a7ab5.png

[*] 立即构建使命,并去目标服务检察
[*]   立即构建 https://img-blog.csdnimg.cn/img_convert/25376918791e05666004115838679baf.png
https://img-blog.csdnimg.cn/img_convert/5c1ecb1f89afc608faad0a1e265acfee.png

7. 结语

本文对DevOps的根本概念举行了先容,同时展示了底子环境搭建步调,下篇文章将对CI/CD如何闭环实现举行更进一步的讲解,如本文对你有帮助,请动动小手三连一下哦~
https://i-blog.csdnimg.cn/direct/d68fcf2ea0d74435ab2bdbcf42c57d16.jpeg


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【DevOps系列】DevOps简介及底子环境安装