Skip to content

dschunack/KubeInvaders

 
 

Repository files navigation

Gamified chaos engineering tool for Kubernetes. It is like Space Invaders but the aliens are pods or worker nodes.

Alt Text

Video HowTo of version v1.9

Table of Contents

  1. Description
  2. Installation
  3. Usage
  4. Known Problems
  5. Metrics
  6. Security
  7. Community
  8. Community blogs and videos
  9. License

Description

Through KubeInvaders you can stress a Kubernetes cluster in a fun way and check how it is resilient.

Installation

Install to Kubernetes with Helm (v3+)

Artifact HUB

helm repo add kubeinvaders https://lucky-sideburn.github.io/helm-charts/

kubectl create namespace kubeinvaders

helm install kubeinvaders --set-string target_namespace="namespace1\,namespace2" \
-n kubeinvaders kubeinvaders/kubeinvaders --set ingress.hostName=kubeinvaders.io --set image.tag=v1.9

Usage

At the top you will find some metrics as described below:

Alt Text

Current Replicas State Delay is a metric that show how much time the cluster takes to coming back at the desired state of pods replicas.

This is a control-plane you can use to switch off & on various features.

Alt Text

YouTube HowTo

Video How To of version v1.9

Start The Chaos Experiment

Press the button "Start" to start automatic pilot (button changes to "Stop" to disable this feature).

Enable Shuffle

Press the button "Enable Shuffle" to switch randomly the positions of pods or k8s nodes (button changes to "Disable Shuffle" to disable this feature).

Enable Auto Jump Between Namespace

Press the button "Auto NS Switch" to switch randomly between namespaces (button changes to "Disable Auto NS Switch" to disable this feature).

Show / Hide pods name

Press the button "Hide Pods Name" to hide the name of the pods under the aliens (button changes to "Show Pods Name" to disable this feature).

Information about current status and events

As described below, on the game screen, near the spaceship, there are details about current cluster, namespace and some configurations.

Alt Text

Under + and - buttons appears a bar with the latest occurred game events.

Alt Text

Do Kube-linter Lint

It is possibile using kube-linter through KubeInvaders in order to scan resources looking for best-practices or improvements to apply.

Example from YouTube

Show Special Keys

Press 'h' or select 'Show Special Keys' from the menu.

Zoom In / Out

Press + or - buttons to increase or decrease the game screen.

Chaos Containers for masters and workers nodes

  • Select from the menu "Show Current Chaos Container for nodes" for watching which container start when you fire against a worker node (not an alien, they are pods).

  • Select from the menu "Set Custom Chaos Container for nodes" for using your preferred image or configuration against nodes.

Known problems

  • It seems that KubeInvaders does not work with EKS because of problems with ServiceAccount. Work in progress!

Hands-on Tutorial

To experience KubeInvaders in action, try it out in this free O'Reilly Katacoda scenario, KubeInvaders.

Prometheus Metrics

KubeInvaders exposes metrics for Prometheus through the standard endpoint /metrics

This is an example of Prometheus configuration

scrape_configs:
- job_name: kubeinvaders
  static_configs:
  - targets:
    - kubeinvaders.kubeinvaders.svc.cluster.local:8080

Example of metrics

Metric Description
chaos_jobs_node_count{node=workernode01} Total number of chaos jobs executed per node
chaos_node_jobs_total Total number of chaos jobs executed against all worker nodes
deleted_pods_total 16 Total number of deleted pods
deleted_namespace_pods_count{namespace=myawesomenamespace} Total number of deleted pods per namespace

Download Grafana dashboard

Alt Text

Alt Text

Security

In order to restrict the access to the Kubeinvaders endpoint add this annotation into the ingress.

nginx.ingress.kubernetes.io/whitelist-source-range: <your_ip>/32

Community

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

Community blogs and videos

License

KubeInvaders is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

About

Gamified Chaos Engineering Tool for Kubernetes

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 61.4%
  • CSS 32.5%
  • Lua 2.9%
  • HTML 1.9%
  • Shell 0.6%
  • Dockerfile 0.4%
  • Mustache 0.3%