MCPcopy
hub / github.com/litmuschaos/litmus

github.com/litmuschaos/litmus @3.30.0 sqlite

repository ↗ · DeepWiki ↗ · release 3.30.0 ↗
5,775 symbols 16,408 edges 1,148 files 888 documented · 15%
README

LitmusChaos

LitmusChaos

Open Source Chaos Engineering Platform

Slack Channel GitHub Workflow Docker Pulls GitHub stars GitHub issues Twitter Follow OpenSSF Best Practices FOSSA Status YouTube Channel

Read this in other languages.

🇰🇷 🇨🇳 🇧🇷 🇮🇳 🇪🇸

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 LitmusChaos as it is easy to use, based on modern Chaos Engineering principles & community collaborated. It is 100% open source & a CNCF project.

LitmusChaos 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 (CRs) 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.

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

To get started, check out the Litmus Docs and specifically the Installation section of the Getting Started with Litmus page.

Contributing to Chaos Hub

Check out the Contributing Guidelines for the Chaos Hub

Community

Community Resources:

Feel free to reach out if you have any queries, concerns, or feature requests

  • Give us a star ⭐️ - If you are using LitmusChaos or think it is an interesting project, we would love a star ❤️

  • Follow LitmusChaos on Twitter @LitmusChaos.

  • Subscribe to the LitmusChaos YouTube channel for regular updates & meeting recordings.

  • To join our Slack Community and meet our community members, put forward your questions & opinions, join the #litmus channel on the Kubernetes Slack.

Community Meetings

  1. Community Meetings
  2. These will be hosted every 3rd Wednesday of every month at 5:30 PM GMT /6:30 PM CEST /10 PM IST
  3. These meetings cover community updates, new feature or release announcements, and user/adopter stories. Everyone in the community is welcome to join and participate in discussions.

  4. Contributor Meetings

  5. These will be hosted every second & last Thursday of every month at 2:30 PM GMT /3:30 PM CEST /7 PM IST
  6. These meetings focus on both technical and non-technical contributions to LitmusChaos. Maintainers, current contributors, and aspiring contributors are encouraged to join to discuss issues, fixes, enhancements, and future contributions.

Fill out the LitmusChaos Meetings invite form to get your Calendar invite!

Videos

And More....

Blogs

Community Blogs:

Adopters

Check out the Adopters of LitmusChaos

(Send a PR to the above page if you are using Litmus in your chaos engineering practice)

License

Litmus is licensed under the Apache License, Version 2.0. See LICENSE for the full license text. Some of the projects used by the Litmus project may be governed by a different license, please refer to its specific license.

FOSSA Status

Litmus Chaos is part of the CNCF Projects.

CNCF

Important Links

Litmus Docs Litmus Docs

CNCF Landscape Litmus on CNCF Landscape

Extension points exported contracts — how you extend this code

IVersionManager (Interface)
IVersionManager is the interface for the Version Manager, a version manager is responsible to upgrade all the control pl [11 …
chaoscenter/upgrade-agents/control-plane/versions/version-manger.go
ResourceDetails (Interface)
(no doc) [6 implementers]
chaoscenter/web/src/api/entities/common.ts
ApiTokenRepository (Interface)
ApiTokenRepository holds the mongo database implementation of the Service [3 implementers]
chaoscenter/authentication/pkg/session/api_token_repository.go
SubscriberEvents (Interface)
(no doc) [3 implementers]
chaoscenter/subscriber/pkg/events/definations.go
MongoInterface (Interface)
MongoInterface requires a MongoClient that implements the Initialize method to create the Mongo DB client and a initAllC [1 …
chaoscenter/graphql/server/pkg/database/mongodb/init.go
Audit (Interface)
(no doc) [9 implementers]
chaoscenter/web/src/api/entities/common.ts
RevokedTokenRepository (Interface)
RevokedTokenRepository holds the mongo database implementation of the Service [1 implementers]
chaoscenter/authentication/pkg/session/revoked_token_repository.go
SubscriberUtils (Interface)
(no doc) [1 implementers]
chaoscenter/subscriber/pkg/utils/definations.go

Core symbols most depended-on inside this repo

getString
called by 1337
chaoscenter/web/src/strings/String.tsx
useStrings
called by 258
chaoscenter/web/src/strings/String.tsx
Return
called by 206
chaoscenter/graphql/server/pkg/chaos_experiment/model/mocks/service.go
Get
called by 132
chaoscenter/graphql/server/pkg/database/mongodb/operations.go
Run
called by 80
chaoscenter/upgrade-agents/control-plane/versions/version-manger.go
getScope
called by 65
chaoscenter/web/src/utils/getScope.ts
useRouteWithBaseUrl
called by 44
chaoscenter/web/src/hooks/useRouteWithBaseUrl.ts
fireEvent
called by 41
chaoscenter/web/src/components/PipelineDiagram/DiagramFactory.tsx

Shape

Method 2,846
Function 1,418
Interface 943
Struct 453
Enum 67
TypeAlias 37
Class 11

Languages

Go65%
TypeScript35%

Modules by API surface

chaoscenter/graphql/server/graph/generated/generated.go1,561 symbols
chaoscenter/graphql/server/graph/model/models_gen.go345 symbols
chaoscenter/graphql/server/protos/authentication.pb.go76 symbols
chaoscenter/authentication/api/presenter/protos/authentication.pb.go76 symbols
chaoscenter/authentication/api/mocks/rest_mocks.go45 symbols
chaoscenter/web/src/models/workflows.ts43 symbols
chaoscenter/graphql/server/pkg/chaos_infrastructure/service.go41 symbols
chaoscenter/graphql/server/pkg/chaoshub/service.go40 symbols
chaoscenter/authentication/pkg/project/repository.go39 symbols
chaoscenter/web/src/services/experiment/KubernetesYamlService.ts37 symbols
chaoscenter/authentication/pkg/services/project_service.go37 symbols
chaoscenter/authentication/api/handlers/doc.go37 symbols

Dependencies from manifests, versioned

dario.cat/mergov1.0.0 · 1×
github.com/99designs/gqlgenv0.17.49 · 1×
github.com/AdaLogics/go-fuzz-headersv0.0.0-2023081113042 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/ProtonMail/go-cryptov1.1.6 · 1×
github.com/PuerkitoBio/purellv1.1.1 · 1×
github.com/PuerkitoBio/urlescv0.0.0-2017081014372 · 1×
github.com/agnivade/levenshteinv1.1.1 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/bytedance/gopkgv0.1.4 · 1×
github.com/bytedance/sonicv1.15.0 · 1×

Datastores touched

auth-configCollection · 1 repos
projectCollection · 1 repos
revoked-tokenCollection · 1 repos
workflow-collectionCollection · 1 repos
(mongodb)Database · 1 repos
adminDatabase · 1 repos
authDatabase · 1 repos
litmusDatabase · 1 repos

For agents

$ claude mcp add litmus \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact