写点什么

开源框架 Litmus,支持 Kubernetes 混沌工程

作者:K Jonas

  • 2019-06-12
  • 本文字数:1284 字

    阅读完需:约 4 分钟

开源框架 Litmus,支持 Kubernetes 混沌工程

Litmus是一种开源混沌工程框架,用于在 Kubernetes 环境中运行有状态应用。Litmus 项目由MayaData公司推出,支持用户运行测试套件、捕获日志、生成报告并执行混沌测试。Litmus 也支持作为端到端测试方法的组成部分,添加到 CI/CD 流水线中。


Litmus 设计用于捕获难以检测的 Kubernetes 中软件缺陷,这些软件缺陷通常会被单元测试或集成测试遗漏。Litmus 支持运行两类测试:混沌测试和功能测试。混沌测试主要针对应用的可扩展性,框架中提供了多个预置测试,主要针对容器崩溃、磁盘故障、网络延迟和网络包丢失等预期外行为。功能测试则用于确保达到系统需求,其中包括对应用规模可扩展等需求的测试。Litmus 还可用于判定 Kubernetes 部署是否适用于有状态工作负载。


Litmus 在组成上包括四个主要组件。部署组件(Deployments)设置测试所用的 Kubernetes 集群。推进组件(Facilitators)通过运行测试套件、捕获日志和生成报告为测试执行提供支持。测试组件(Test modules)包含了一些容器化的测试,执行测试时在 Kubernetes 集群内触发。第四个组件就是测试本身。


Litmus 测试在Litmus文档中称为“实验”(experiment)。运行 Litmus 实验,需要从 Litmus 的实验目录中选取已有的混沌实验,更新应用,对通过环境变量传递的值进行测试,进而并使用kubectl运行 litmusbook。运行命令如下:


kubectl create -f experiments/chaos/run_litmus_test.yml


测试运行在容器中。在评估测试和环境变量后,Litmus 会编排所需架构,利用Pumba开源软件工具执行实验。在实验执行完成后,Litmus 将基于一些预定义的已有标准,评估实验是否成功。测试结果与测试元数据一并在一种称为“Kubernetes 自定义资源”Kubernetes Custom Resource中存储。进而,运行 Litmus 的 CI/CD 流水线可以过根据自定义资源判定任务的状态。



Litmus 架构(图片来自 Litmus 官方文档)


Litmus 测试可使用 Go 的 Cucumber BDD 框架Godog 等编写类英语的 BDD 形式,也可以使用Ansible Playbooks编写并由 Litmus Test Playbook 组件分组管理。大部分 Litmus 测试采用 Ansible Playbooks,在 Kubernetes 任务控制器管理下在 Kubernetes 的 Pod 中执行。测试可在运行时使用环境变量,并对一些通用的和专门的测试功能任务引入测试软件库。Litmus 还提供了Chaos-Exporter功能,用于向 Prometheus 终端提供混沌度量。


Litmus 的创立者是MayaData。MayaData 也是 Kubernetes 原生开源容器附属存储解决方案OpenEBS的主要提供者。Litmus 项目的初衷是为有状态 Kubernetes 应用提供端到端的验证。Litmus公司的目标是确保有状态的应用程序能够在 Kubernetes 中运行,并确信数据是安全的和可访问的。Litmus 在设计上考虑了可扩展并支持各种持久存储解决方案,目前它支持 Percona MySQL、MongoDB、Apache Cassandra 和 Minio 等多种有状态应用,并覆盖了部署、加载、重调度、扩展、升级和取消服务(de-provision)等多个通用的应用生命周期场景。


想要上手使用 Litmus 的用户,推荐查看Github代码库官方文档中给出的“Getting Started”章节。


查看英文原文: [Chaos Engineering Kubernetes with the Litmus Framework](


2019-06-12 08:008251
用户头像

发布了 391 篇内容, 共 139.0 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

独立显卡市场又一巨头跻入,英特尔锐炬® Xe MAX 独立显卡来了!

E科讯

精解四大集合框架:Set核心知识总结

田维常

程序员 后端

写文档太麻烦,试试这款 IDEA 插件吧!

程序员小航

Java markdown IDEA idea插件 文档

TensorFlow 篇 | TensorFlow 数据输入的最佳实践

Alex

tensorflow keras input pipeline dataset

TypeScript魔法堂:函数类型声明其实很复杂

肥仔John

Java typescript

专利申请其实并不难?四步教你玩转专利申请!

华为云开发者联盟

专利 保护

Forsage矩阵系统开发,智能合约搭建

薇電13242772558

Docker底层技术

混沌畅想

Docker 容器 DevOps 底层技术

当下工作流管理系统的发展趋势

Marilyn

敏捷开发 快速开发 软件架构 企业开发

SpringBoot-技术专题-war包部署读取外部配置Yml

洛神灬殇

华为云的销售凭什么说“赢”了罗振宇?

ToB行业头条

tob

快速掌握并发编程---深入学习ThreadLocal

田维常

试用阿里网盘内测版-不限速、无广告、隐私安全我全都要

郭旭东

阿里云网盘

C++ primer -- 第17章 输入,输出和文件

Dreamer

c++

Caffe 安装踩坑记录

Dreamer

caffe

目标检测综述

Dreamer

在2020年更受关注和追捧的JS框架

葡萄城技术团队

react.js Vue js Svelte

云图说|知道吗?在和你对话的那头,也许是个机器人哦~

华为云开发者联盟

华为 AI 机器人

面试时说Redis是单线程的,被喷惨了!

redis 编程 程序员 计算机

C++ primer -- 第18章 探讨C++新标准

Dreamer

c++

EDA最强攻略,如何为EDA选择存储?

焱融科技

分布式 高性能 存储 半导体 EDA

架构师训练营第 1 期 第 3 周作业

李循律

极客大学架构师训练营

MySQL中事务的持久性实现原理

X先生

MySQL 数据库 sql 数据库事务 事务

SpringBoot-技术专题-war包部署读取外部配置Properties

洛神灬殇

一个研发团队是如何坚持7年技术分享的?

爱吃小舅的鱼

团队管理 程序员 敏捷开发 研发管理 技术分享

架构师训练营 1 期第 6 周作业

木头发芽

基于React+Koa实现一个h5编辑器

徐小夕

Java nodejs H5 React koa

架构师训练营第 1 期 第 5 周作业

李循律

极客大学架构师训练营

接口测试人员需要掌握的知识技能

测试人生路

接口测试

直播预告 | CloudQuery初体验——安装及多数据源连接

BinTools图尔兹

数据库 sql 安全 工具软件 dba

数据结构与算法系列之链表操作全集(二)(GO)

书旅

数据结构 算法 Go 语言

开源框架 Litmus,支持 Kubernetes 混沌工程_开源_InfoQ精选文章