当先锋百科网

首页 1 2 3 4 5 6 7

一、DevOps介绍

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

  • 开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。
  • 运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。

这看似两个目标不同的团队需要协同完成一个软件的开发。在开发团队指定好计划并完成coding后,需要提供到运维团队。运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。

这时开发团队需要经常等待运维团队的反馈。这无疑延长了事件并推迟了整个软件开发的周期。

会有一种方式,在开发团队等待的时候,让开发团队转移到下一个项目中。等待运维团队为之前的代码提供反馈。可是这样就意味着一个完整的项目需要一个更长的周期才可以开发出最终代码。

基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。

那么 如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。

DevOps,字面意思是Development &Operations的缩写,也就是开发&运维。虽然字面意思只涉及到了开发团队和运维团队,其实QA测试团队也是参与其中的。

DevOps
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wJqS3SY7-1661737294480)(Pictures/image-20211124130409521.png)]

这表明DevOps是一个不断提高效率并且持续不断工作的过程。

DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。

整体的软件开发流程包括:

为了保证整体流程可以高效的完成,各个阶段都有比较常见的工具,如下图:

软件开发过程&涉及工具
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kfgzuRsQ-1661737294481)(Pictures/2021-11-23_175935.png)]

最终可以给DevOps下一个定义:DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。

自动化的工具协作和沟通来完成软件的生命周期管理。

二、Code阶段工具

code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。

2.1 Git安装

https://git-scm.com/

2.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:2224'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'

启动容器:

docker-compose up -d

访问GitLab首页:

首页
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UxSHuuQC-1661737294482)(Pictures/image-20211124182140596.png)]

查看root用户初始密码:

docker exec -it gitlab cat /etc/gitlab/initial_root_password
初始密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XMqrqZMG-1661737294483)(Pictures/image-20211124182921234.png)]

登录root用户:

登录成功后跳转页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g73wB01A-1661737294484)(Pictures/image-20211124183003858.png)]

第一次登录后需要修改密码:

修改密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PrBblciq-1661737294485)(Pictures/image-20211124193444561.png)]

搞定后,即可像Gitee、GitHub一样使用。

三、Build阶段工具

构建Java项目的工具一般有两种选择,一个是Maven,一个是Gradle。这里我们选择Maven作为项目的编译工具。

Maven的安装与配置流程:

  1. 安装Maven
  2. 配置环境变量
  3. 配置本地仓库
  4. 配置镜像
  5. 配置JDK

具体的安装配置流程后面会做一个详细的讲解,这里必须确保配置好Maven仓库私服以及JDK编译版本。

四、Operate阶段工具

部署过程,会采用Docker进行部署,暂时只安装Docker即可,后续还需安装Kubenetes。

4.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
效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jD9WR23v-1661737294485)(Pictures/image-20211124200317795.png)]

4.2 Docker-Compose安装

下载Docker/Compose:https://github.com/docker/compose

将下载好的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
效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sx6CibBa-1661737294486)(Pictures/image-20211124200658107.png)]