【云原生】4.2 DevOps 精讲篇

简介: 软件开发最开始是由两个团队组成:开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。

  哈喽~ 大家好呀,这篇就来详细介绍 DevOps 以及需要安装什么软件。


一、DevOps 诞生

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

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

这看似两个目标不同的团队需要协同完成一个软件的开发。那么这里就出现了一个问题,假设我在开发一款软件,开发完之后,交给了运维团队,运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。这是开发团队在一直等候,开发人员啥也做不了,这无疑推迟了整个软件开发的周期。为了解决这类问题,诞生出了 DevOps ,专门解决开发团队与运维团队之间的沟通问题与交互问题。

二、DevOps 介绍

DevOps,字面意思是 Development & Operations 的缩写,翻译过来就是开发 & 运维(前面有一篇云原生扩展篇对此有些介绍)。

虽然字面意思只涉及到了开发团队和运维团队,其实QA测试(扩:QA 主要有两方面的工作:1.做过程中的改进 2.做质量的保证工作。)团队也是参与其中的。

百度一下可以查看到 DevOps 的符号类似于一个无穷大的符号

image.png

三、DevOps管理软件生命周期

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

PLAN:开发团队根据客户的需求与目标制定开发计划与开发周期(收到需求,制定计划)

CODE:根据 PLAN 开始编码过程(一般工具用 git 或SVN)。

BUILD:编码完成后,需要将代码构建并且运行(通过 Maven 或 gradle 将他构建成一个可运行的软件)。

TEST:成功构建项目后,需要测试代码是否存在 BUG 或错误(手动测试与自动化测试)。

DEPLOY:代码经过测试后,认定代码已经准备好部署并且交给运维团队(测试无误后 TEST 发到 DEPLOY 上)。

OPERATE:运维团队将代码部署到生产环境中(通过 docker 与 k8s 进行部署)。

MONITOR:项目部署上线后,需要持续的监控产品(部署完成之后通过监控类的软件进行监控)。

INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核 心,即持续集成、持续部署。

image.png

这就是软件开发的一套生命周期,但如果我们还要在执行一遍,我们可以根据 Jenkins 让他继续执行下去,代码啥时候测试?代码啥时候发布到运维?在吗进行部署到 k8s 与docker ?都是我们的 Jenkins来做。

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

image.png

上图就是我们最简单的一个通过 Jenkins 来管理,那么下面我们就要基于这张图来实现功能了。

四、GitLab 与 Maven 安装

1、GitLab 安装

像我们的开发人员使用的是 Git ,这里安装 Git 就不一一列出了,可以自行百度上网安装,我们这里使用 Docker 安装 GitLab。

输入命令

查看 GitLab 镜像

docker search gitlab

image.gif

获取 GitLab 镜像

docker pull gitlab/ gitlab-ce: latest

image.gif

image.png

创建 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'

image.gif

image.png

启动容器

docker-compose up -d

image.gif

安装的时间有点长,请耐心等待,后面再浏览器输入你设置的地址与端口号,就能进入了。

使用默认的用户(root)以及查看密码

docker exec -it gitlab cat /etc/gitlab/initial_root_password

image.gif

image.png

然后记得修改密码,密码至少长度为 8 位。

2、Maven 安装

如何安装 JDK 自行百度搜索安装

安装 Maven 包在官网里面下载需要的版本,下完之后输入指令

tar -zxvf jdk-8u231-Linux-x64.tar.gz -C/usr/local
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C/usr/local

image.gif

注:中间的 jdk 只是版本号,输入时记得要改。设置 Maven 的私服(阿里云或腾讯云都可以),追加 JDK 的插件(可以行百度)

接下来我们需要安装 Docker,这里可以看看之前写的文章,我是文章

五、Jenkins介绍、安装及配置

1、Jenkins 介绍

Jenkins 是一个开源软件项目,是基于Java开发的一种持续集成工具。 Jenkins 应用广泛,大多数互联网公司都采用 Jenkins 配合 GitLab、Docker、K8s 作为实现 DevOps 的核心工具。 Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化 CI/CD 过程中的各种琐碎功 能。

Jenkins 就像一个人,安装完插件后就像穿好了装备一样

image.png

这是官方给的图(官方玩梗,最为致命)

2、Jenkins 安装

获取 Jenkins 镜像

docker pull jenkins/jenkins

image.gif

编写 docker-compose.yml

version: "3.1"
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/

image.gif

注:首次启动会因为数据卷 data 目录没有权限导致启动失败,设置 data 目录写权限即可。

image.gif编辑

我们就可以进行下载了,但下载时间可能有点长,可以配置一下国内的下载镜像地址

# 修改数据卷中的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>
# 清华大学的插件源也可以
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

image.gif

在网址输入地址、账号与密码,就可以访问了。

后面下载插件可能会失败(很正常)我们可以进入 Jenkins 内部进行下载,后面创建用户

image.png

直接下一步,就可以进入了

image.png

在 Dashboard ——> Plugin Manager 里面下载我们安装失败的插件,就可以了

3、Jenkins 配置

由于 Jenkins 需要从 Git 拉取代码、需要本地构建、甚至需要直接发布自定义镜像到 Docker 仓库,所以 Jenkins 需要配置大量内容。

输入命令

mv/usr/local/jdk/ ./
mv/usr/local/maven/ ./

image.gif

image.png

然后在 Dashboard ——> Global Tool Configuration 里面 add 一个 JDK 的地址

image.png

同样的 Maven 也是一样的。连接的方式有很多,可以采用用户名和密码(如何配置自行度娘)


相关文章
|
4月前
|
运维 Cloud Native Devops
云原生 DevOps 自动化运维 概述
【1月更文挑战第7天】云原生 DevOps 自动化运维 概述
|
8月前
|
Cloud Native Devops 持续交付
云原生与 DevOps
云原生与 DevOps
233 0
|
8月前
|
Cloud Native Devops 持续交付
云原生DevOps思考
云原生时代,一些DevOps思考
211 2
云原生DevOps思考
|
8月前
|
敏捷开发 存储 运维
阿里云云原生 DevOps - DevOps 基础概念
阿里云云原生 DevOps - DevOps 基础概念
191 0
阿里云云原生 DevOps - DevOps 基础概念
|
8月前
|
运维 Devops 测试技术
阿里云云原生 DevOps - DevOps 核心组成
阿里云云原生 DevOps - DevOps 核心组成
134 0
阿里云云原生 DevOps - DevOps 核心组成
|
12月前
|
运维 Cloud Native Devops
【云原生|DevOps】DevOps工具精讲
【云原生|DevOps】DevOps工具精讲
143 1
|
敏捷开发 运维 监控
【云原生-白皮书】简章2:深入理解DevOps+微服务
在搞懂DevOps和微服务之前,需要先搞懂什么是单体应用/单体架构。简单来说,就跟在校的一些小项目一样,项目的Demo写好了,找一台服务器安装环境,然后把jar包远程上服务器,然后跑起来服务就可以了。
【云原生-白皮书】简章2:深入理解DevOps+微服务
|
运维 Kubernetes Cloud Native
工具篇:云原生 DevOps 解决方案 | 学习笔记
快速学习工具篇:云原生 DevOps 解决方案
131 0
工具篇:云原生 DevOps 解决方案 | 学习笔记
|
云安全 Kubernetes Cloud Native
【云原生】学习云原生经验分享
【云原生】学习云原生经验分享
297 0
【云原生】学习云原生经验分享
|
Kubernetes Cloud Native Devops
【云原生实战】DevOps基础与实战项目
【云原生实战】DevOps基础与实战项目
439 0
【云原生实战】DevOps基础与实战项目