将研发流程搬到Kubernetes之上
如果无法正常显示,请先停止浏览器的去广告插件。
1. 将研发流程搬到 Kubernetes
之上
刘磊
七牛云CDN业务质量保障负责人,测试开发专家
ECUG Meetup 第 3 期
2. C
ECUG Meetup 第 3 期
目
录
01 背景
02 方案
03 收获
3. 背景
ECUG Meetup 第 3 期
4. 研发流程
工程效率:
质量
效率
ECUG Meetup 第 3 期
5. 环境先行
ECUG Meetup 第 3 期
研发 联调环境 – 稳定
QA 测试环境 – 稳定、避免不预期
依赖 Beta环境 – 稳定
6. 环境现状
200+过保
机器
无专职
SRE
环境不稳定,测试5分钟,排查2小时
多人共用环境,互相冲突
随手改动不入库,消极对待,缺乏敬畏之心
功能不健全,导致验证不充分,遗留缺陷
服务分布
混乱
ECUG Meetup 第 3 期
资源利用
不均衡
7. 测试环境本质诉求
使用者:
企业:
想用 不用
就有 等待
低维护
ECUG Meetup 第 3 期
高效率
高稳定
低成本
8. 解决方向
云原生是天然选择:
自动化
可借鉴
可扩展
随起随用
一人一套
隔离,稳定
ECUG Meetup 第 3 期
自动化
免运维
9. 方案
ECUG Meetup 第 3 期
10. 云原生社区现状
云原生开源社区很早就意识到了云原生背景下,环境
容器化以及代码->环境的姿势问题
ECUG Meetup 第 3 期
11. 整体方案
ECUG Meetup 第 3 期
12. 第一步 – 环境容器化,模板化,可编排
服
务
容
器
化
服
务
模
板
化
,
可
编
排
ECUG Meetup 第 3 期
13. 落地姿势 – 一键启环境
本地一键部署环境
devspace run $CLUSTER –namespace $ENV_NAME
3min ~ 10min
ECUG Meetup 第 3 期
14. 落地姿势 – 一键增量更新环境
研发阶段
本地一键增量更新
10s+内部署+运行
ECUG Meetup 第 3 期
devspace run $SERVICE_NAME --namespace $ENV_NAME
15. 调试更方便
本地直连容器内部
kubectl exec –it $POD_NAME --namespace $ENV_NAME
CLI/Web
devspace / devspace ui
本地直连PodIP/ClusterIP
ECUG Meetup 第 3 期
16. 环境自我更新
QA
Cloud Env
By PR
pull
auto trigger
submit
Pull Request
auto trigger
merge
Dev
deploy
master
ECUG Meetup 第 3 期
Env Version Upgrade
upload
pull
Cloud Env
Env Deploy Check
Helm Charts
Repo
17. 隔离问题
没有隔离就很难谈稳定
• 硬件隔离
• 网络隔离
• 权限限制
• 资源限制
• 测试场景下,隔离其实不用很彻底
• 基于Rancher的权限限制
• 按实际需要采用LimitRange机制
ECUG Meetup 第 3 期
18. 资源使用率优化
• 测试环境容器化的一大副作用就是
环境泛滥,资源被不合理占用
•
Kubernetes Qos机制是把双刃
剑,容易存在资源已申请,但利用
率不高的情况
• 超卖有用,但只是权宜之计
• 测试稳定性三板斧-用完即抛
•
kubefree - Auto sleep/delete
namespace
ECUG Meetup 第 3 期
19. 收获
ECUG Meetup 第 3 期
20. 支撑专项测试
例子: 云存储的可靠性测试,验证在任何场景下数据
不丢失,不被破坏,最终可下载
• 以往痛点
• 环境数量少,可复制性差,没法兼顾更多的需求
• 当环境脏了,数据乱了时,没法快速推倒重来
• 基础设施不灵活,可观测性不够
• 云原生化后
• 灵活复制环境
• 轻松重建环境
• 完善的可观测体系
ECUG Meetup 第 3 期
21. 更高阶的玩法
不发布服务,也能在本地随时联调,把效率的优化做到了极致
ECUG Meetup 第 3 期
22. 谢谢
ECUG Meetup 第 3 期