![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fchaos-mesh%2Fchaos-mesh.svg?type=shield)
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:
![Watch the video](https://github.com/chaos-mesh/chaos-mesh/raw/v1.2.3/static/demo.gif)
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](https://github.com/chaos-mesh/chaos-mesh/raw/v1.2.3/static/chaos-mesh.svg)
Chaos Operator uses Custom Resource Definition (CRD) to define chaos objects.
The current implementation supports a few types of CRD objects for fault injection, namely DNSChaos, PodChaos, PodIoChaos, PodNetworkChaos, 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.
- dns chaos: The selected pod will be injected with dns errors, such as error, random.
Quick start
Deploy and use
See Docs.
Adopters
See ADOPTERS.
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:
Contribute
See the contributing guide and development guide.
Please reach out for bugs, feature requests, and other issues via:
-
Following us on Twitter @chaos_mesh.
-
Joining the #project-chaos-mesh channel in the CNCF Slack workspace.
-
Filing an issue or opening a PR against this repository.
On the fourth Friday 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:
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.
![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fchaos-mesh%2Fchaos-mesh.svg?type=large)
Trademark
Chaos Mesh® is a trademark of The Linux Foundation. All rights reserved.