什么是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 流水线(工具链)
image.png
三、DevOps环境部署
备注: 按照 DevOps 流水线顺序部署
先部署,后续实战中简介如何把流水线打通,实现通过平台一键发布功能

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

JIRA 使用:
以下是通过JIRA管理的驻云内部运维平台视图
image.png

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

image.png

Docker 安装:
请参考: Docker安装详情

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

image.png

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)环境安装:

image.png

c)创建应用

image.png

d)添加代码:

image.png

e)启动测试:

image.png

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

image.png

2、容器化
a)编写Dockerfile

image.png

b)构建镜像

docker build -f dockerfile -t webapp .

image.png

c)查看本地镜像列表

image.png

d)启动构建后的容器

image.png

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

image.png

3、添加镜像到镜像仓库
a)创建项目
b)上传镜像

image.png

4、代码托管
a)登录已经安装好的Gitlab
image.png

b)创建项目
image.png

c)关联本地代码
image.png

image.png

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

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

5、CI配置(CI流水线)
a)创建gitlab CI配置文件

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

image.png

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

image.png

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

d)Gitlab CI自动构建镜像
image.png

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

6、一键发布
a)创建应用

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

b)添加服务
image.png

c)发布验证

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

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

7、应用升级
a)更新代码
我们继续开发webapp应用程序, 添加新代码进入app.py
image.png

b)提交代码
image.png

c)自动流程线CI
自动执行编译构建
image.png

产生新的docker镜像
image.png

d)升级发布
点击升级按钮
image.png

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

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

e)升级验证
image.png

最终,恭喜, 你成功了!
image.png

相关文章
|
存储 消息中间件 负载均衡
深入理解RocketMQ广播消费
这篇文章我们聊聊广播消费,因为广播消费在某些场景下真的有奇效。笔者会从基础概念、实现机制、实战案例、注意事项四个方面一一展开,希望能帮助到大家。
深入理解RocketMQ广播消费
|
存储 Java 测试技术
【通用行业开发部】阿里开源TransmittableThreadLocal使用经验记录
本文章主要记录我在一次业务优化中,使用线程池带来的子父线程值传递问题,及使用TransmittableThreadLocal来解决该问题的经验,并对TransmittableThreadLocal原理做些梳理。
|
资源调度 运维 监控
如何通过任务调度实现百万规则报警
报警是一个公司的日常需求,常见的形态除了满足运维过程中的基础设施监控报警(CPU/内存/磁盘等)之外,部分公司也会在应用指标(如 QPS、RT 等)及业务指标(如 GMV/日活 等)上有相应的报警需求。
4459 86
如何通过任务调度实现百万规则报警
|
关系型数据库 MySQL 数据库
mysql 不需要使用密码就可以登录
最近发现一个问题, 就是我等了mysql客户端可以不输入密码. 直接输入mysql -u root 回车 或者 输入一个错的密码,都可进入到下面的界面. 在Navicat不用输入密码, 或者数据错的密码都可以连接数据库, 这比较愁人.
791 0
mysql 不需要使用密码就可以登录
|
Java
Java通过HttpClient从外部url下载文件到本地
该Java程序旨在通过URL将外部网络文件(如图片)下载至本地,并解决防盗链问题。首先,它通过`HttpGet`请求获取远程文件,并通过设置`Referer`头防止防盗链。然后,根据响应内容类型确定文件后缀并保存至指定路径。测试表明,程序能够成功下载文件。
1550 8
Java通过HttpClient从外部url下载文件到本地
|
11月前
|
移动开发 前端开发 JavaScript
Foundation 起步1
Foundation 是一个免费且移动优先的前端框架,旨在加速网站开发。它包含 HTML、CSS 设计模板及多种 UI 组件和 JavaScript 插件,适合各水平开发者使用。许多知名公司如 Facebook、eBay 等均采用 Foundation。响应式设计使其能适应不同设备。可通过官网或阿里云 CDN 获取。Modernizr 的集成确保了跨浏览器兼容性。
|
存储 Java 数据库连接
Spring Boot 配置主从数据库实现读写分离
Spring Boot 配置主从数据库实现读写分离
1506 0
|
SQL 分布式计算 Java
DataGrip 配置 HiveServer2 远程连接访问(含账号密码验证)
该文档介绍了如何为HiveServer2配置账号密码鉴权。提供了一个名为`CustomPasswdAuthenticator`的Java类实现`PasswdAuthenticationProvider`接口,用于验证HiveServer2的用户名和密码。此外,还给出了相关依赖的Maven配置,并说明了如何将编译后的Jar包放入Hive的库中。在Hive的`hive-site.xml`和Hadoop的`core-site.xml`中需配置相应的参数以启用自定义认证。文档还列举了可能遇到的问题及解决方法,包括权限问题、数据插入错误和JVM内存溢出。
1126 3
|
监控 流计算
Flink 指标参数源码解读(读取数量、发送数量、发送字节数、接收字节数等)(上)
Flink 指标参数源码解读(读取数量、发送数量、发送字节数、接收字节数等)(上)
260 1
|
数据可视化 IDE Java
PlanUML和Mermaid哪个好?
PlanUML和Mermaid哪个好?
3110 0
下一篇
oss云网关配置