Litmus

Open Source Chaos Engineering Platform

Overview

LitmusChaos is an open source Chaos Engineering platform that enables teams to identify weaknesses & potential outages in infrastructures by
inducing chaos tests in a controlled way. Developers & SREs can practice Chaos Engineering with Litmus as it is easy to use, based on modern
chaos engineering principles & community collaborated. It is 100% open source & a CNCF project.

Litmus takes a cloud-native approach to create, manage and monitor chaos. The platform itself runs as a set of microservices and uses Kubernetes
custom resources to define the chaos intent, as well as the steady state hypothesis.

At a high-level, Litmus comprises of:

  • Chaos Control Plane: A centralized chaos management tool called chaos-center, which helps construct, schedule and visualize Litmus chaos workflows
  • Chaos Execution Plane Services: Made up of a chaos agent and multiple operators that execute & monitor the experiment within a defined
    target Kubernetes environment.

architecture summary

At the heart of the platform are the following chaos custom resources:

  • ChaosExperiment: A resource to group the configuration parameters of a particular fault. ChaosExperiment CRs are essentially installable templates
    that describe the library carrying out the fault, indicate permissions needed to run it & the defaults it will operate with. Through the ChaosExperiment, Litmus supports BYOC (bring-your-own-chaos) that helps integrate (optional) any third-party tooling to perform the fault injection.

  • ChaosEngine: A resource to link a Kubernetes application workload/service, node or an infra component to a fault described by the ChaosExperiment.
    It also provides options to tune the run properties and specify the steady state validation constraints using 'probes'. ChaosEngine is watched by the
    Chaos-Operator, which reconciles it (triggers experiment execution) via runners.

The ChaosExperiment & ChaosEngine CRs are embedded within a Workflow object that can string together one or more experiments in a desired order.

  • ChaosResult: A resource to hold the results of the experiment run. It provides details of the success of each validation constraint,
    the revert/rollback status of the fault as well as a verdict. The Chaos-exporter reads the results and exposes information as prometheus metrics.
    ChaosResults are especially useful during automated runs.

ChaosExperiment CRs are hosted on hub.litmuschaos.io. It is a central hub where the
application developers or vendors share their chaos experiments so that their users can use them to increase the resilience of the applications
in production.

chaos-operator-flow

Use cases

  • For Developers: To run chaos experiments during application development as an extension of unit testing or integration testing.
  • For CI/CD pipeline builders: To run chaos as a pipeline stage to find bugs when the application is subjected to fail paths in a pipeline.
  • For SREs: To plan and schedule chaos experiments into the application and/or surrounding infrastructure. This practice identifies the weaknesses
    in the deployment system and increases resilience.

Getting Started with Litmus

Check out the Litmus Docs to get started.

Contributing to Chaos Hub

Check out the Contributing Guidelines for the Chaos Hub

GitHub

https://github.com/litmuschaos/litmus