README

chaos_logo

Build Status codecov LICENSE Language Go Report Card GoDoc

Note:

This readme and related documentation are Work in Progress.

Chaos Mesh 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 visualized panel that shows the impacts of chaos experiments on the online services of the system; under development; curently only supports chaos experiments on TiDB(https://github.com/pingcap/tidb).

See the following demo video for a quick view of Chaos Mesh:

Watch the video

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 specifc node

Sidecar: a special type of container that is dynamically injected into the target Pod by the webhook-server, which can be used for hijacking I/O of the application container.

Chaos Operator

Chaos Operator uses Custom Resource Definition (CRD) to define chaos objects. The current implementation supports three types of CRD objects for fault injection, namely PodChaos, NetworkChaos, IOChaos, and TimeChaos, 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 clock skew.
  • kernel chaos: The selected pod will be injected with (slab,bio,etc) errors.

Quick start

Deploy and use

See Docs

FAQs

See FAQs.

Blogs

Contribute

See Development Guide.

Community

Please reach out for bugs, feature requests, and other issues via:

  • Following us on Twitter at @chaos_mesh.
  • The #sig-chaos-mesh channel in the TiDB Community slack workspace.
  • Filing a issue or opening a PR against this repo.

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 Beijing PingCap Xingchen Technology and Development Co., Ltd. © 2020 Beijing PingCap Xingchen Technology and Development Co., Ltd. All rights reserved.

Expand ▾ Collapse ▴

Directories

Path Synopsis
api
v1alpha1
Package v1alpha1 contains API Schema definitions for the chaosmesh v1alpha1 API group +kubebuilder:object:generate=true +groupName=pingcap.com
Package v1alpha1 contains API Schema definitions for the chaosmesh v1alpha1 API group +kubebuilder:object:generate=true +groupName=pingcap.com
cmd
pkg
pidfile
Package pidfile provides structure and helper functions to create and remove PID file.
Package pidfile provides structure and helper functions to create and remove PID file.
e2e