devops
部分实施大纲和约定
【传统软件,云原生等可参考】
基础
开发、测试和运维
自动化软件功能的持续交付、持续集成
CI CD
构建
背景
- 主要针对研发流程自动形成输出物
- 这个过程使用git流程和签入策略等进行控制
- 单元测试、API测试
工具
- 使用现有的jennkis构建约定和项目
- 依托开发工具类
输出物
- 软件安装包
- OS依赖独立包
- OS 快速安装iso镜像
镜像
背景
- 针对"构建"的输出物进行干净的镜像制作
工具
输出物
- 虚拟机
- 针对virtualbox的box文件
- 概要: 场景:在单机上快速的原型验证和功能测试
【使用起来更简单高效】
- 虚拟化
- 针对vsphere的vmx文件
- 针对docker的镜像
- 针对kvm的box文件
https://hub.fastgit.org/goffinet/packer-kvm - 针对云的部署镜像【现官方已支持直接在阿里、腾讯、京东、UCloud上部署镜像构建云主机应用】
- 概要: 场景:真实的部署
性能测试
部署
背景
- 对镜像或者对构建的输出物进行自动部署
工具
- terraform
- vagrant
- 针对单个物理机上进行虚拟机的测试
输出物
- vagrant
- virtualbox
- kvm
- 概要: 单物理机上使用
- terraform
- 私有云,如vsphere
- 公有云
- alicloud
- Tencentcloud
测试
开发单元测试
- xunit
- cypress
https://gitee.com/wushifeng/cypressKit
开发集成、性能测试
- 使用vagrant或terraform的部署环境
- 额外的软件等依赖通过ansible进行应用部署
- 测试数据的导入
- 不同的性能场景修改配置文件
- 监控数据
- 推荐njmon,这个数据更小,更方便
易于归档和追踪
https://gitee.com/wushifeng/centosKit/tree/master/sys/nmon/njmon - 涉及应用等的更多诊断,还是promethus + grafana
- 推荐njmon,这个数据更小,更方便
- 关键点
- 测试主机环境性能
- CPU:核数、主频
- 磁盘:顺序、随机读写
- 网络:双工、大小包
- 内存:大小、频率、交换区
- 概要: https://gitee.com/wushifeng/centosKit/tree/master/perf
- 测试软件版本和配置
- OS和系统软件和配置
- 应用系统和配置
- 不同场景的差异配置
- 测试数据
- 场景覆盖
- 数据规模
- 运行日志
- Warmup Colddown的时间
- 持续时间
- 多次连续测试的间隔
- 监测数据
- 优先主机的资源使用情况
- 应用的深入监控找瓶颈:比如GC回收、哪个线程最忙等
- 版本控制
- 每次的结果分析和受控
- 多次的结果可比较,迭代提升
- 测试主机环境性能
集成测试
- 测试依赖环境
- 数据库
- 后台服务系统
- WEB站点
- 产品部署环境
- UI测试
- cypress
分发安装包
独立物理主机
- iso PXE模式自动安装
- clonezilla(再生龙)
- iso刻成引导光盘或U盘安装
虚拟化
- 文件ova/ovf 导出
- workstation导出
- ESXi Server导出
- 概要: ovftool命令行工具
- 云镜像部署
开发使用
- vagrant box导出
- virtualbox
- kvm (libvirtd)
结果
从OS安装到各种软件和配置的部署,完全干净的安装
整个过程通过各种工具的配置文件和脚本可以受控管理
IaC的几个比较关键的步骤
参考
- vagrant相关
https://www.cnblogs.com/2018/p/13862033.html - ansible相关
https://www.cnblogs.com/2018/p/14410580.html - packer相关
TODO - Terrform相关
TODO - vsphere相关
TODO
XMind: ZEN - Trial Version
明细脑图