48
开源力量公开课主题分享

Open stack在企业持续集成中的实战

Embed Size (px)

Citation preview

Page 1: Open stack在企业持续集成中的实战

开源力量公开课主题分享

Page 2: Open stack在企业持续集成中的实战
Page 3: Open stack在企业持续集成中的实战

持续集成回顾

持续集成系统实施面临难题

云计算对持续集成带来的好处

OpenStack介绍

企业案例分享

几点建议

Page 4: Open stack在企业持续集成中的实战

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而

尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

http://martinfowler.com/articles/continuousIntegration.html

Page 5: Open stack在企业持续集成中的实战

统一的代码库

自动构建

自动测试

每个人每天都要向代码库主干提交代码

每次代码递交后都会在持续集成服务器上触发一次构建

保证快速构建

模拟生产环境的自动测试

每个人都可以很容易的获取最新可执行的应用程序

每个人都清楚正在发生的状况

自动化的部署

Page 6: Open stack在企业持续集成中的实战

所有的变更必须本地构建成功才提交

开发人员每天至少向版本控制库中提交一次代码

开发人员每天至少需要从版本控制库中更新一次代码到本地机器

需要有专门的集成服务器来执行集成构建,每天要执行多次构建

每次构建都要100%通过

每次构建都可以生成可发布的产品

修复失败的构建是优先级最高的事情

Page 7: Open stack在企业持续集成中的实战

检出代码 编译 单元测试

质量检查

构建安装包 发布 部署组件测试环境

组件验收测试

部署系统测试环境

系统验收测试

CI 报表

开发人员提交变更发布

Page 8: Open stack在企业持续集成中的实战

我们要改变工作方式,敏捷还是敏捷!

Page 9: Open stack在企业持续集成中的实战

建设持续集成系统

Page 10: Open stack在企业持续集成中的实战

代码复查

静态、动态代码检查

构建

包仓库管理

配置管理

自动部署

自动化测试

报表与提醒

Page 11: Open stack在企业持续集成中的实战

构建、部署很慢

资源申请周期长

难扩容

失败后修复时间长

开发和CI环境有差异

Page 12: Open stack在企业持续集成中的实战

统一的基础设施(IaaS)

快速资源申请

强大的弹性运算能力

基础设施版本管理(Infrastructure as a Code)

提供资源管理API

Page 13: Open stack在企业持续集成中的实战

网络速度

安全性

控制力

技术积累

Page 14: Open stack在企业持续集成中的实战

传统软件兼容性

隔离基本的要求

构建、部署类型

Page 15: Open stack在企业持续集成中的实战
Page 16: Open stack在企业持续集成中的实战

Havana

Page 17: Open stack在企业持续集成中的实战
Page 18: Open stack在企业持续集成中的实战

实例生命周期管理

提供基于REST API

Hypervisor 屏蔽,支持KVM,Xen,Hyper-v,Docker e.g.

支持大规模水平伸缩

Page 19: Open stack在企业持续集成中的实战

虚拟网络管理

面向租户的网络管理(SDN)

高度可配置的plug-in架构

基于 REST 的API

Page 20: Open stack在企业持续集成中的实战

认证与授权

用户,租户和角色管理

服务目录管理

支持多认证机制(MySQL, Ldap, AD e.g)

Page 21: Open stack在企业持续集成中的实战

镜像注册、查询

基于角色的访问控制

支持多格式的镜像(raw,qcow2 e.g.)

支持多种后端存储(S3, Swift,File system e.g.)

Page 22: Open stack在企业持续集成中的实战

用户自助管理界面

Page 23: Open stack在企业持续集成中的实战

提供类似EBS 的块存储

减少Nova的复杂性,降低Nova的负载

支持多种后端存储

Page 24: Open stack在企业持续集成中的实战

可靠对象存储

没有容量限制

无单点故障

支持 S3 API

Page 25: Open stack在企业持续集成中的实战

模板定义环境

云资源拓扑与编排服务

兼容AWS CloudFormation

Page 26: Open stack在企业持续集成中的实战

资源监控与度量

Page 27: Open stack在企业持续集成中的实战
Page 28: Open stack在企业持续集成中的实战

工程师>100

传统电信项目,包括Oracle,JBoss

开发语言覆盖C, C++, Python, Java

组件比较多,支持产品SA/HA 部署

组件相互依赖

测试用例>1000

Page 29: Open stack在企业持续集成中的实战

构建时间长

构建老是失败

部署场景复杂,失控

开发环境和CI环境不一致

失败原因排除难,问题不易重现

老板说,CI太费钱

Page 30: Open stack在企业持续集成中的实战

获取构建结果不要等太久

资源获取能自动、快速、弹性

环境能版本控制

环境能回滚

.. Docker

KVMPuppet

OpenStack

Page 31: Open stack在企业持续集成中的实战

源码版本管理仓库

7.冒烟测试10.组件测试

13.系统测试

16.手工测试

4.构建

制品管理仓库15.性能测试

1.提交

2.复查

3.检出

5.预发布6.部署

9.部署12.部署

15.部署

18.部署

8.晋升11.晋升

14.晋升

17.晋升

19.发布

收集测试覆盖率

收集流水线状态 拉取测试用例列表

代码质量面板

CI 仪表盘

测试用例库

开发人员

评审委员会

配置仓库

Page 32: Open stack在企业持续集成中的实战

iSCSI / SAN

OpenStack HA部署

自动化部署环境

Object Storage

消息集群

AMQP

用户界面和管理平台(Dashboard)

负载均衡

NTP

计算节点

NovaCompute

AMQP

KeyStone集群

KeyStone KeyStone

Swift & Proxy01

模版库

Glance

弹性卷存储

CinderDB集群

MySQL

网络节点

NeutronNetwork

Monitor

Swift & Proxy05

API

计算节点

NovaCompute

Monitor

API

计算节点

NovaCompute

Monitor

APIGlance

MySQL

CinderVolume

PXE/TFTP/DHCP

监控节点

MonitorServer

网络节点

NeutronNetwork

控制节点

Novacontroller

控制节点

Novacontroller

Page 33: Open stack在企业持续集成中的实战

独立的OpenStack 集群

CI 引擎

容量瓶颈

规避风险

测试开发

Page 34: Open stack在企业持续集成中的实战

构建尽可能的快速<10分钟◦ 多任务并行执行,无需排队

◦ 弹性创建构建server

Page 35: Open stack在企业持续集成中的实战

与OpenStack无缝集成

启动足够快

执行效率高

Runtime隔离

Page 36: Open stack在企业持续集成中的实战

Jenkins Slave管理◦ 使用Jenkins plugin :jclouds-jenkins

◦ 构建开始生产VM,结束删除

https://wiki.jenkins-ci.org/display/JENKINS/JClouds+Plugin

Page 37: Open stack在企业持续集成中的实战

API方式资源管理,尽可能自动化,可版本控制◦ 调用Nova CLI

◦ Python-novaclient

Page 38: Open stack在企业持续集成中的实战

弹性、分时利用资源◦ 白天开发人员使用,晚上CI使用

◦ 测试虚拟机定期删除

Page 39: Open stack在企业持续集成中的实战

镜像分级策略,提高部署效率◦ OS 做进Base Image

◦ 3PP 定期更新

◦ APP 实时安装

OS

3PP

KVM

APP3PP

裸机ISO

VM

VM

VM

RPM Repo.

Base image

VMVM

3PP image

每次部署自动做

3PP变更时自动做

手工做一次

上传

快照

Page 40: Open stack在企业持续集成中的实战

部署高度自动化,一键部署◦ 部署框架

◦ Python fabric 库

◦ 系统无侵入性

部署模板

获取资源

安装包准备

安装组件

应用配置

启动服务

服务检查

Page 41: Open stack在企业持续集成中的实战

测试分组、并行执行,缩短时间◦ 容易弹性

◦ 测试系统水平扩展

Target Node

Test Agent

Simulator Node

Testing Cluster 4

Target Node

Test Agent

Simulator Node

Testing Cluster 3

Target Node

Test Agent

Simulator Node

Testing Cluster 2

Target Node

Test Agent

Simulator Node

Testing Cluster 1

1.分发测试用例

3.收集测试用例

2.多机器并行测试

Page 42: Open stack在企业持续集成中的实战

现场保留,方便问题排查◦ VM自动挂起

Page 43: Open stack在企业持续集成中的实战

◦ OpenStack 编排服务 (Heat)

部署脚本解耦合

不用负责资源申请

基于模板

逻辑更简单

Page 44: Open stack在企业持续集成中的实战

云化步骤:先易后难,先构建再测试◦ 收益:构建 >单元测试>功能测试 >系统测试 >性能测试

◦ 成本:性能测试>系统测试>功能测试>单元测试>构建

Page 45: Open stack在企业持续集成中的实战

指导思想:CI其实是面向开发的运维◦ OpenStack HA

◦ 多OpenStack集群环境

Page 46: Open stack在企业持续集成中的实战

不只是技术,观念转变更重要◦ 弹性

◦ 自动化

◦ 敏捷

◦ …

Page 47: Open stack在企业持续集成中的实战
Page 48: Open stack在企业持续集成中的实战

Email:[email protected]

Blog : http://yongluo.blog.com

WeiBo :@warrior_罗勇

WeiXin:@嗨皮