混沌工程平台 Gremlin 发布了原生 Kubernetes 支持,可用于识别、定位和测验 Kubernetes 对象,以便主动识别服务弱点。由于自动发现可以跨主机编排容器,所以它可以在 Kubernetes 基础设施上运行实验。
Gremlin 是一个平台服务,它可以为 Kubernetes、云环境、裸机和无服务器(Serverless )提供混沌实验。混沌工程是一种研究复杂系统在压力下是如何运行的测试方法,其目标是在故障发生之前就能识别出故障。Gremlin 提供了一个攻击框架,可将故障注入到系统中,例如限制关键资源或模拟不可靠的网络。攻击可以按场景分组,且这些场景可运行并记录攻击的结果。
Gremlin 的原生 Kubernetes 支持通过 Gremlin 用户界面或 API 提供对 Kubernetes 对象的测试。在此版本之前,要对 Kubernetes 中的服务进行 Gremlin 攻击,需要定位该服务的容器。由于 Kubernetes 对容器编排进行了抽象,并定期销毁和创建容器,因此尝试定位特定服务的容器可能会比较困难。现在 Gremlin 允许在服务级别而不是容器级别对指定的 Kubernetes 应用程序进行混沌测试。Gremlin 首席技术官(CTO)兼联合创始人 Matthew Fornaciari 表示:
我们的目标是为正在构建和部署现代应用程序的 SRE(Site Reliability Engineer ,网站可靠性工程师)和 DevOps 团队提供必要的工具和流程,以帮助他们在故障影响客户和业务之前,就可以了解系统是如何处理故障的。
Gremlin 的 Kubernetes 测试框架自动化了识别并定位 Kubernetes 原语(例如,node和Pod)的过程。配置了网络攻击的用户还可以控制他们想要中断的 Kubernetes 服务流量。
要启用 Kubernetes 测试,用户必须首先通过 helm chart 升级他们的 Gremlin 客户端。Gremlin 客户端升级后,就可以通过 UI 创建攻击,在 UI 中可以使用一个新的 Kubernetes 选项。提供了 Kubernetes 集群和命名空间的列表,可用于过滤要测试的 Kubernetes 对象。这些对象按Deployment、DaemonSet、ReplicaSet、StatefulSet 和 Pod 进行细分,可以精确定位混沌实验的目标。选择对象后,Gremlin 将提供集群地图,并会突出显示受该实验影响的区域。
来自 Gremlin 博客 Gremlin 攻击用户界面
定义好实验后,Gremlin 将定位底层容器。测试运行时,受影响的容器将会体现在测试结果报告中,并按其所属的 Kubernetes 对象分组。容器的详细信息和日志也会作为实验结果的一部分被提供。
随着 Netflix 的混沌猴子(Chaos Monkey)的出现, 混沌工程开始流行起来。混沌猴子通过随机终止线上的实例来测试服务是如何处理故障的。kube-monkey,一个社区驱动的 Kubernetes 实现工具,同样可以删除集群中的 Kubernetes pod。开源工具 Litmus 提供了一个比 Gremlin 框架更容易配置的测试套件。Litmus 允许用户在 Kubernetes 环境中运行测试套件、捕获日志、生成报告及执行混沌测试。Litmus 还可以作为端到端测试方法的一部分添加到 CI/CD 管道中。
Gremlin 与 Kubernetes 的集成可用于免费版和专业版用户。在某个场景中定位 Kubernetes 还不可用。有关在 Gremlin 中使用 Kubernetes 的更多信息,请查看 Gremlin 文档。
原文链接:
领取专属 10元无门槛券
私享最新 技术干货