signed

QiShunwang

“诚信为本、客户至上”

DevOps平台

2021/4/26 16:16:51   来源:

一、DevOps 简介

DevOps 一词的来自于 Development 和 Operations 的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。DevOps 其实包含了三个部分:开发、测试和运维。换句话 DevOps 希望做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。

二、DevOps 工具链

  • 项目管理(PM):Jira
  • 代码管理:GitLab
  • 持续集成(CI):GitLab CI
  • 镜像仓库:VMware Harbor
  • 容器:Docker
  • 容器平台: Rancher
  • 镜像扫描:Clairctl
  • 编排:Kubernetes
  • 服务注册与发现:etcd
  • 脚本语言:python
  • 日志管理:EFK
  • 系统监控:prometheus
  • Web服务器:Nginx
  • 数据库:MySQL redis

三、DevOps 架构

DevOps 流水线(工具链)

 

四、DevOps环境部署

备注: 按照 DevOps 流水线顺序部署
先部署,后续实战中简介如何把流水线打通,实现通过平台一键发布功能

1、安装JIRA(项目管理)

JIRA简介:

JIRA 是 Atlassian 公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 JIRA 中配置灵活、功能全面、部署简单、扩展丰富,其超过150项特性得到了全球115个国家超过19,000家客户的认可。

安装配置过程请参考:官方网站

JIRA 使用:

以下是通过JIRA管理的驻云内部运维平台视图

1

2、安装 GitLab(代码管理)

GitLab 简介:

Git 是目前世界上最先进的分布式版本控制系统(没有之一), 而 GitLab 是基于 git 协议开发 Web 控制台,Git 命令能操作的大部分功能, 都可以通过gitLab web控制台操作。

GitLab 安装:

请参考:GitLab 安装详情

3、安装 Docker(容器服务)

Docker 简介:

Docker 是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。 三大理念:Build(构建)、Ship(运输)、Run(运行) Docker 组成:Docker Client、Docker Server

1

Docker 安装:

请参考: Docker安装详情

4、安装 Rancher(容器调度)

Rancher 简介:

Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。 Rancher由以下四个部分组成: 基础设施编排、容器编排与调度、应用商店、企业级权限管理 下图展示了Rancher的主要组件和功能:

1

Rancher 安装:

请参考: Rancher安装部署

5、安装 Harbor(镜像仓库)

Harbor 简介:

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。 Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

Harbor 安装:

请参考:安装详情

6、安装 Clair(镜像扫描)

Clair 简介:

Clair 的功能通过 Restful API 实现,但是每个 API 参数很多,而且上传镜像时还有很多复杂的处理。所以 CoreOS 为我们提供了 Clairctl 这款工具。Clairctl 是一个 Clair 客户端, 让用户可以通过简单的命令就能实现镜像的上传、扫描、输出报告等等。

Clair 安装:

请参考:安装详情

五、应用实战篇(部署验证)

1、创建应用

备注:​ 以Python Flask为例

a) 环境准备:​ CentOS7.+​ Python 2.7.0+​ Flask 0.11 +

b)环境安装:

c)创建应用

d)添加代码:

e)启动测试:

最终实现,打开浏览器输入 http://localhost:5000/

2、容器化

a)编写Dockerfile

b)构建镜像

docker build -f dockerfile -t webapp .

c)查看本地镜像列表

d)启动构建后的容器

最终实现,打开浏览器输入 http://localhost:5000/, 容器化成功,此时你可以把该容像迁移至任何docker环境运行。

3、添加镜像到镜像仓库

a)创建项目

b)上传镜像

4、代码托管

a)登录已经安装好的Gitlab

b)创建项目

c)关联本地代码 

d)确认Gitlab仓库代码已提交

刷新浏览器, 选择 Repository → 文件

5、CI配置(CI流水线)

a)创建gitlab CI配置文件

注意: 此文件属于隐藏文件, 在当前目录可以通过 ls -a命令查看。

1

b)Gitlab 配置runner, 开启共享runner

1

c)重新提交代码到gitlab仓库

1

d)Gitlab CI自动构建镜像

1

最终,整个过程自动执行, 最终产生可以发布的镜像

1

6、一键发布

a)创建应用

在浏览器打开Rancher容器管理平台

1

b)添加服务

1

c)发布验证

进入webapp应用→选择web服务→选择端口→点击主机IP,此时自动跳转到我们开发的应用程序WEB页面

1

最终,恭喜你, 你已经成功进入新的领域, 祝你一路顺风。

1

7、应用升级

a)更新代码

我们继续开发webapp应用程序, 添加新代码进入app.py

1

b)提交代码

1

c)自动流程线CI

自动执行编译构建

1

产生新的docker镜像

1

d)升级发布

点击升级按钮

点击升级, 升级过程自动下载新镜像并运行, 此时旧版本还存在

点击升级完成。 如果升级失败可以选择旧版本回滚

e)升级验证

最终,恭喜, 你成功了!