diff --git a/content/en/blog/_posts/2019-01-22-Gamified-Chaos-Engineering-Tool-for-Kubernetes.md b/content/en/blog/_posts/2020-01-22-Gamified-Chaos-Engineering-Tool-for-Kubernetes.md similarity index 58% rename from content/en/blog/_posts/2019-01-22-Gamified-Chaos-Engineering-Tool-for-Kubernetes.md rename to content/en/blog/_posts/2020-01-22-Gamified-Chaos-Engineering-Tool-for-Kubernetes.md index 9a3eb111a33ce..722974c62d26a 100644 --- a/content/en/blog/_posts/2019-01-22-Gamified-Chaos-Engineering-Tool-for-Kubernetes.md +++ b/content/en/blog/_posts/2020-01-22-Gamified-Chaos-Engineering-Tool-for-Kubernetes.md @@ -13,21 +13,22 @@ Commons Briefing session. Kubenvaders is a Gamified Chaos Engineering tool for Kubernetes and Openshift and helps test how resilient your Kubernetes cluster is, in a fun way. -It is like space invaders but the aliens are PODs. +It is like Space Invaders, but the aliens are pods. ![](https://github.com/lucky-sideburn/KubeInvaders-kubernetes-post/raw/master/img1.png) During my presentation at Codemotion Milan 2019, I started saying "of -course you can do it with few lines of bash but it is boring." +course you can do it with few lines of Bash, but it is boring." + ![](https://github.com/lucky-sideburn/KubeInvaders-kubernetes-post/raw/master/img2.png) -Using the code above you can kill random PODs across a K8s cluster but I -think it is much funnier with the spaceship of Kubeinvaders. +Using the code above you can kill random pods across a Kubernetes cluster, but I +think it is much more fun with the spaceship of KubeInvaders. I published the code at [https://github.com/lucky-sideburn/KubeInvaders](https://github.com/lucky-sideburn/KubeInvaders) and there is a little community that is growing gradually. Some people -love to use it for demo sessions killing PODs on the big screens. +love to use it for demo sessions killing pods on a big screen. ![](https://github.com/lucky-sideburn/KubeInvaders-kubernetes-post/raw/master/img3.png) @@ -44,84 +45,66 @@ I defined multiples modes to install it: 3. Manual Installation for Kubernetes [https://github.com/lucky-sideburn/KubeInvaders\#install-kubeinvaders-on-kubernetes](https://github.com/lucky-sideburn/KubeInvaders#install-kubeinvaders-on-kubernetes) -The preferred way, of course, is with a Helm chart. - - ---------------------------------------------------------------------------------------------------------------------------------------------------- +The preferred way, of course, is with a Helm chart: ``` # Please set target_namespace to set your target namespace! helm install --set-string target_namespace="namespace1,namespace2" \ --name kubeinvaders --namespace kubeinvaders ./helm-charts/kubeinvaders ``` - ---------------------------------------------------------------------------------------------------------------------------------------------------- ## How to use KubeInvaders Once it is installed on your cluster you can use the following functionalities: -a. Key 'a' =\> Switch to automatic pilot; - -b. Key 'm' =\> Switch to manual pilot; - -c. Key 'i' =\> Show pod\'s name. Move the ship towards an alien; - -d. Key 'h' =\> Print help; - -e. Key 'n' =\> Jump between; different namespaces (my preferred feature!) + * Key 'a' — Switch to automatic pilot + * Key 'm' — Switch to manual pilot + * Key 'i' — Show pod's name. Move the ship towards an alien + * Key 'h' — Print help + * Key 'n' — Jump between different namespaces (my favorite feature!) ## Tuning KubeInvaders At Codemotion Milan 2019, my colleagues and I organized a desk with a -game station for playing KubeInvaders. People had to fight with K8s to +game station for playing KubeInvaders. People had to fight with Kubernetes to win a t-shirt. -If you have PODs that require a few seconds to start, you may lose. It +If you have pods that require a few seconds to start, you may lose. It is possible to set the complexity of the game with these parameters as -env var in the K8s deployment: - -a. ALIENPROXIMITY =\> Reduce this value to increase the distance between aliens; +environmment variables in the Kubernetes deployment: -b. HITSLIMIT =\> Seconds of CPU time to wait before shooting; + * ALIENPROXIMITY — Reduce this value to increase the distance between aliens; + * HITSLIMIT — Seconds of CPU time to wait before shooting; + * UPDATETIME — Seconds to wait before updating pod status (you can set also 0.x Es: 0.5); -c. UPDATETIME =\> Seconds to wait before update PODs status (you can set also 0.x Es: 0.5); - -The result is a harder game experience against the machine :D +The result is a harder game experience against the machine. ## Use cases Adopting chaos engineering strategies for your production environment is -really useful because it is the only way to test if a system supports +really useful, because it is the only way to test if a system supports unexpected destructive events. -KubeInvaders is a game so please do not take it too seriously but it has +KubeInvaders is a game — so please do not take it too seriously! — but it demonstrates some important use cases: -- Test how resilient K8s clusters are on unexpected PODs deletion; - -- Collect metrics like PODs restart time; + * Test how resilient Kubernetes clusters are on unexpected pod deletion + * Collect metrics like pod restart time + * Tune readiness probes -- Tuning readiness probes; - -## Next step +## Next steps I want to continue to add some cool features and integrate it into a Kubernetes dashboard because I am planning to transform it into a -"Gamified Chaos Engineering and Development Tool for Kubernetes". - -For "Development Tool for Kubernetes" I mean something that help -developers to interact with deployments in a K8s environment. For +"Gamified Chaos Engineering and Development Tool for Kubernetes", to help +developer to interact with deployments in a Kubernetes environment. For example: -a. Point to the aliens to get PODs logs; - -b. Deploy Helm charts shooting some particular objects; - -c. Read message stored in a specific label present in a deployment; + * Point to the aliens to get pod logs + * Deploy Helm charts by shooting some particular objects + * Read messages stored in a specific label present in a deployment Please feel free to contribute to [https://github.com/lucky-sideburn/KubeInvaders](https://github.com/lucky-sideburn/KubeInvaders) -and stay updated following \#kubeinvaders news on Twitter -([https://twitter.com/luckysideburn](https://twitter.com/luckysideburn)) - -Thanks! +and stay updated following \#kubeinvaders news [on Twitter](https://twitter.com/luckysideburn).