Note:
This readme and related documentation are Work in Progress.
Chaos Mesh® is a Cloud Native Computing Foundation (CNCF) hosted project. It is a cloud-native Chaos Engineering platform that orchestrates chaos on Kubernetes environments. At the current stage, it has the following components:
- Chaos Operator: the core component for chaos orchestration. Fully open sourced.
- Chaos Dashboard: a Web UI for managing, designing, monitoring Chaos Experiments; under development.
See the following demo video for a quick view of Chaos Mesh:
Chaos Operator
Chaos Operator injects chaos into the applications and Kubernetes infrastructure in a manageable way, which provides easy, custom definitions for chaos experiments and automatic orchestration. There are three components at play:
Controller-manager: used to schedule and manage the lifecycle of CRD objects
Chaos-daemon: runs as daemonset with privileged system permissions over network, Cgroup, etc. for a specific node
Chaos Operator uses Custom Resource Definition (CRD) to define chaos objects. The current implementation supports six types of CRD objects for fault injection, namely PodChaos, NetworkChaos, IOChaos, TimeChaos, StressChaos, and KernelChaos, which correspond to the following major actions (experiments):
- pod-kill: The selected pod is killed (ReplicaSet or something similar may be needed to ensure the pod will be restarted).
- pod-failure: The selected pod will be unavailable in a specified period of time.
- container-kill: The selected container is killed in the selected pod.
- netem chaos: Network chaos such as delay, duplication, etc.
- network-partition: Simulate network partition.
- IO chaos: Simulate file system faults such as I/O delay, read/write errors, etc.
- time chaos: The selected pod will be injected with clock skew.
- cpu-burn: Simulate the CPU of the selected pod stress.
- memory-burn: Simulate the memory of the selected pod stress.
- kernel chaos: The selected pod will be injected with (slab, bio, etc) errors.
Quick start
Deploy and use
See Docs.
Adopters
This is a list of known adopters of Chaos Mesh. Some have already gone into production, and others are at various stages of testing.
Blogs
Blogs on Chaos Mesh design & implementation, features, chaos engineering, community updates, etc. See Chaos Mesh Blogs. Here are some recommended ones for you to start with:
- Chaos Mesh - Your Chaos Engineering Solution for System Resiliency on Kubernetes
- Run Your First Chaos Experiment in 10 Minutes
- Simulating Clock Skew in K8s Without Affecting Other Containers on the Node
- Building an Automated Testing Framework Based on Chaos Mesh® and Argo
- Chaos Mesh 1.0: Chaos Engineering on Kubernetes Made Easier
Contribute
See the contributing guide and development guide.
Community
Please reach out for bugs, feature requests, and other issues via:
- Following us on Twitter at @chaos_mesh.
- Joining the #project-chaos-mesh channel in the CNCF Slack workspace.
- Filing an issue or opening a PR against this repository.
Community meeting
On the fourth Thursday of every month (unless otherwise specified), the Chaos Mesh community holds a monthly meeting by video conference to discuss the status of Chaos Mesh.
Quick links:
Community blog
- Integrate your Reliability Toolkit with Your World, Part 2
- Streake: Chaos Mesh によるカオスエンジニアリング
- Chaos Mesh : un générateur de chaos pour Kubernetes
- K8s Chaos Dive: Chaos-Mesh Part 1
- K8s Chaos Dive: Chaos-Mesh Part 2
Media coverage
- CodeZine: オープンソースのカオステストツール「Chaos Mesh 1.0」、一般提供を開始
- @IT atmarkit: Kubernetes向けカオスエンジニアリングプラットフォーム「Chaos Mesh 1.0」が公開
- Publickey: KubernetesのPodやネットワークをわざと落としまくってカオスエンジニアリングのテストができる「Chaos Mesh」がバージョン1.0に到達
FAQs
See FAQs.
Roadmap
See ROADMAP.
License
Chaos Mesh is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Trademark
Chaos Mesh® is a trademark of The Linux Foundation. All rights reserved.