GithubHelp home page GithubHelp logo

chaostoolkit / chaostoolkit-documentation Goto Github PK

View Code? Open in Web Editor NEW
19.0 19.0 32.0 23.92 MB

The Chaos Toolkit documentation

Home Page: https://chaostoolkit.org

License: Apache License 2.0

Python 37.05% HTML 56.32% CSS 6.63%
chaos-engineering chaos-toolkit chaostoolkit-doc

chaostoolkit-documentation's Introduction


Chaos Toolkit - Chaos Engineering for All Engineers

Release Build GitHub issues License Python version

CommunityInstallationTutorialsReferenceChangeLog


Chaos Toolkit - Chaos Engineering for All Engineers

The Chaos Toolkit, or as we love to call it “ctk”, is a simple CLI-driven tool who helps you write and run Chaos Engineering experiment. It supports any target platform you can think of through existing extensions or the ones you write as you need.

Chaos Toolkit is versatile and works really well in settings where other Chaos Engineering tools may not fit: cloud environments, datacenters, CI/CD, etc.

Install or Upgrade

Provided you have Python 3.8+ installed, you can install it as follows:

$ pip install -U chaostoolkit

Getting Started

Once you have installed the Chaos Toolkit you can use it through its simple command line tool.

Running an experiment is as simple as:

$ chaos run experiment.json

Get involved!

Chaos Toolkit's mission is to provide an open API to chaos engineering in all its forms. As such, we encourage and welcome you to join our open community Slack team to discuss and share your experiments and needs with the community. You can also use StackOverflow to ask any questions regarding using the Chaos Toolkit or Chaos Engineering.

If you'd prefer not to use Slack then we welcome the raising of GitHub issues on this repo for any questions, requests, or discussions around the Chaos Toolkit.

Finally you can always email [email protected] with any questions as well.

Contribute

Contributors to this project are welcome as this is an open-source effort that seeks discussions and continuous improvement.

From a code perspective, if you wish to contribute, you will need to run a Python 3.8+ environment. Please, fork this project, write unit tests to cover the proposed changes, implement the changes, ensure they meet the formatting standards set out by ruff, add an entry into CHANGELOG.md, and then raise a PR to the repository for review

The project is driven by PDM, so install it and you can run the following commands:

$ pdm install
$ pdm run test
$ pdm run format
$ pdm run lint

The Chaos Toolkit projects require all contributors must sign a Developer Certificate of Origin on each commit they would like to merge into the master branch of the repository. Please, make sure you can abide by the rules of the DCO before submitting a PR.

chaostoolkit-documentation's People

Contributors

adamdabbracci avatar born4new avatar cdsre avatar charliemoon37 avatar ciaransweet avatar dastergon avatar dhapola avatar dmartin35 avatar jolexa avatar kragniz avatar lawouach avatar mperrien avatar ojongerius avatar okken avatar ppalsamy avatar russmiles avatar saravanan30erd avatar sudoq avatar worxli avatar zeisss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chaostoolkit-documentation's Issues

Explain how to workon on an extension with discover without installing everytime

When one works on an extension, the discover method is a pain in its default behavior because it keeps installing the existing official distribution package instead of picking up the developed one.

We should document how to get that worked around in http://chaostoolkit.org/reference/developing/guidelines/#creating-an-extension

First, run python setup.py develop from your extension workspace. Then run chaos discover --no-install ext-name so that discover does not override the installation everytime.

Document how to add time constraints to an experiment

It is common, to run an experiment for a certain period of time and not indefinitely. In addition, sometimes, the operator may not be on the keyboard to stop the fault injection. Therefore, a timer or time controls would be useful when running an experiment. It would be very helpful to include a section mentioning all the available options.

Is the schema valid?

I'm trying to use the schema included in this repo to validate my JSON creations -- I notice the app itself is just checking keys:

https://github.com/chaostoolkit/chaostoolkit-lib/blob/b14b122777b5b1d580ef0d4c34d7e55587b27fbf/chaoslib/hypothesis.py#L35

I'd suggest switching to a schema that the app validates when running a command -- it's a very nice way of sanitizing your data, but it can also be re-used when other devs try to do something like generating these json experiment files.

schema link: https://github.com/chaostoolkit/chaostoolkit-documentation/blob/master/schema.json

Add some clarification to the section Deploy Chaos Toolkit as a Kubernetes Operator

Under https://docs.chaostoolkit.org/deployment/k8s/operator/#deploy-the-operator

Should there be a note before: "Next, simply run the following:" explaining you will need to be connected to a cluster prior to running the kustomize command. and perhaps a link to https://cloud.google.com/kubernetes-engine/docs/quickstart#create_cluster

After the section: "Look at the Chaos Toolkit running:" - should we add a not about viewing the logs:

kubectl -n chaostoolkit-run logs chaostoolkit-<pod-id>

After "They will be injected into the Chaos Toolkit’s pod as environment variables."
Add a link to the example showing the use of environment variables.

After the code section of "configMapName", add a link to the example using the config map.

At the end of "https://docs.chaostoolkit.org/deployment/k8s/operator/#load-the-experiment-from-a-url" add a link to the example that run's from a URL.

Suggest refactoring the word 'bail' when defining the behaviour of SSH

In the following documentation quote

In the case of a scalar or the sequence, the tolerance validation MUST be strict. The value returned by the Probe MUST be checked against the scalar value. The experiment MUST bail when both fail to match.

The word 'bail' does not convey clearly and without any misconceptions the various outcomes which can happen during a run of an experiment based (first run of SSH - stops experiment, run after method marks deviation).

Update documentation to be use-case-centric

The current docs need a complete overhaul to include the new workflow, links to the new tutorials on Katacoda, and finally an emphasis on using the toolkit with target environment levels such as Kubernetes, PCF etc.

missing action: create_service_endpoint

Why can i remove a service endpoint but i cannot create one ?
Maybe i miss something in the documentation

I'm running an experimentation where i have a springboot microservice and a mysql statefulset
I want to remove mysql service endpoint and check about my microservice resilience
But at the end of the experiment I dont have mysql service endpoint and i need to recreate it manually

Is there a way to recreate it with chaostoolkit ? # #

The drivers/azure/#usage paragraph contains outdated information

The json example contains an outdated information

{
    "type": "action",
    "name": "start-service-factory-chaos",
    "provider": {
        "type": "python",
        "module": "chaosazure.factory.actions",
        "func": "start_chaos",
        "secrets": ["azure"],
        "arguments": {
            "parameters": {
                "TimeToRunInSeconds": 45
            }
        }
    }
},
{
    "type": "action",
    "name": "stop-service-factory-chaos",
    "provider": {
        "type": "python",
        "module": "chaosazure.factory.actions",
        "func": "stop_chaos",
        "secrets": ["azure"]
    }
}

The modules point to chaosazure.factory.actions. The latest version of the Chaostoolkit has the module chaosazure.fabric.actions instead. Consider also to give new names to the declared actions, e.g. "stop-service-fabric-chaos" and "start-service-fabric-chaos".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.