Skip to content

evryn/kermoo

integration tests codecov Quality Gate Status Security Rating CodeQL

Kermoo

πŸͺ± A Delightfully Buggy Application πŸͺ±

πŸ“š Getting Started πŸ“š


Introduction

Ahoy there, brave DevOps and SRE warriors! πŸ΄β€β˜ οΈ Introducing Kermoo, derived from the Persian mischief-maker "Ϊ©Ψ±Ω…Ωˆ". We're here to toss a wrench (or ten) into your perfectly running apps, all in the name of science... and a bit of fun. 😜

Want to see how your system fares against the worst? Or perhaps you've got a tad too much trust in your resilience and fault tolerance? Time to put that to the test!

πŸš€ Features

  1. πŸ• Simulate Process Startup Delays & Failures:

    • Make your process sleep in a bit. They deserve it! Define a delay.
    • Surprise! Unexpected exits. πŸŽ‰ Set an exit time and code.
  2. πŸ’₯ Simulate Webserver & Backend Mayhem:

    • Chaos in the form of HTTP requests:
      • Oops! Request failed. πŸ™ˆ
      • Snail-paced 🐌 responses.
      • Lost at connection level! πŸ“žβŒ
    • Plan your mischief: percentage affected, duration...
    • Or sometimes...just sometimes, send some good [static or whoami-like] response. 🌈
  3. πŸ”₯ Simulate Heavy CPU Sunbathing:

    • Turn up the heat and get that CPU sweating! πŸ’¦ Set a load percentage and duration.
  4. 🧠 Simulate Forgetful Memory Leaks:

    • Because who doesn't want to spring a leak now and then? Choose your memory size and duration.

πŸ”† Installation

Kermoo is ready to be installed with:

  • Docker
  • Docker Compose
  • Docker Swarm
  • Kubernetes Kustomization
  • Kubernetes Helm Chart
  • Downloadable Binaries

πŸ“š Read Documents

πŸ›  Setup & Configuration

Simply setup the all-optional configurations using YAML and pass it to Kermoo:

kermoo start -f - <<EOL
  # Simulate the main process to delay initially for 5 seconds
  # Then simulate disaster by exiting the process after somewhere
  # between 4 to 10 seconds with the exit code of 20.
  process:
    delay: 5s
    exit:
      after: 4s to 10s
      code: 20

  webServers:
    # Setup a webserver that listens on 0.0.0.0:80
    # that will be ready for connect 50% of time
    - fault:
        percentage: 50
      routes:
        # Setup a /livez route that will serve a whoami content
        # with the chance of 60% or fail with an error (4xx, 5xx)
        - path: /livez
          content:
            whoami: true
          fault:
            percentage: 60

  # Simulate CPU load which will repeatitivly utilize
  # 20%, 50% and 80% of all cores every second.
  cpuLoad:
    percentage: 20, 50, 80
    interval: 1s

  # Simulate memory leak which will repeatitivly consume
  # somewhere between 100Mi and 1Gi of memory - recomputed
  # every 5 seconds.
  memoryLeak:
    size: 100Mi to 1Gi
    interval: 5s
EOL

πŸ“š Read Documents

🀝 Join the Chaos Club

Love the pandemonium? Consider contributing and let's brew more bedlam together! β˜•πŸ”₯

About

πŸͺ± Kermoo offers resilience testing with Process Delays, Back-end Failures, CPU Simulations, and Memory Leaks. Boost your system reliability effortlessly.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Languages