一、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管理的驻云内部运维平台视图
2、安装 GitLab(代码管理)
GitLab 简介:
Git 是目前世界上最先进的分布式版本控制系统(没有之一), 而 GitLab 是基于 git 协议开发 Web 控制台,Git 命令能操作的大部分功能, 都可以通过gitLab web控制台操作。
GitLab 安装:
请参考:GitLab 安装详情
离线安装示例
环境
系统:rhel 7.2
gitlab版本:11.11.0
离线下载安装包
登录gitlab网站下载想要的安装包
https://packages.gitlab.com/gitlab/gitlab-ce?page=1
下载汉化包
git clone https://gitlab.com/xhang/gitlab.git
安装
- 安装
-
yum -y install gitlab-ce-11.11.0-ce.0.el7.x86_64.rpm
-
yum -y install git
-
- 初始化gitlab
gitlab-ctl reconfigure
- 查看服务
gitlab-ctl status
- 重启、停止或启动服务
gitlab-ctl restart/stop/start
- 访问http://ip 服务刚启动时需要等一下,不然会报502错误,第一次登录需要修改密码,默认管理员为root
汉化
- 停止gitlab服务
gitlab-ctl stop
- 获取当前gitlab的版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
- 进入汉化包目录,比较差异生成补丁
-
cd gitlab/
-
git diff v11.11.0 v11.11.0-zh > ~/v11.11.0-zh.diff
-
- 安装补丁
-
yum -y install patch
-
cd ~
-
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < v11.11.0-zh.diff
-
- 会有如下报错,一路回车即可
- 启动gitlab
gitlab-ctl start
3、安装 Docker(容器服务)
Docker 简介:
Docker 是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。 三大理念:Build(构建)、Ship(运输)、Run(运行) Docker 组成:Docker Client、Docker Server
Docker 安装:
请参考: Docker安装详情
4、安装 Rancher(容器调度)
Rancher 简介:
Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。 Rancher由以下四个部分组成: 基础设施编排、容器编排与调度、应用商店、企业级权限管理 下图展示了Rancher的主要组件和功能:
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命令查看。
b)Gitlab 配置runner, 开启共享runner
c)重新提交代码到gitlab仓库
d)Gitlab CI自动构建镜像
最终,整个过程自动执行, 最终产生可以发布的镜像
6、一键发布
a)创建应用
在浏览器打开Rancher容器管理平台
b)添加服务
c)发布验证
进入webapp应用→选择web服务→选择端口→点击主机IP,此时自动跳转到我们开发的应用程序WEB页面
最终,恭喜你, 你已经成功进入新的领域, 祝你一路顺风。
7、应用升级
a)更新代码
我们继续开发webapp应用程序, 添加新代码进入app.py
b)提交代码
c)自动流程线CI
自动执行编译构建
产生新的docker镜像
d)升级发布
点击升级按钮
点击升级, 升级过程自动下载新镜像并运行, 此时旧版本还存在
点击升级完成。 如果升级失败可以选择旧版本回滚
e)升级验证
最终,恭喜, 你成功了!