{"id":13533560,"url":"https://github.com/lucky-sideburn/KubeInvaders","last_synced_at":"2025-04-01T21:32:34.693Z","repository":{"id":41344824,"uuid":"178379053","full_name":"lucky-sideburn/kubeinvaders","owner":"lucky-sideburn","description":"Gamified Chaos Engineering Tool for Kubernetes","archived":false,"fork":false,"pushed_at":"2024-04-07T17:59:00.000Z","size":64585,"stargazers_count":975,"open_issues_count":2,"forks_count":123,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-05-02T01:00:39.596Z","etag":null,"topics":["aliens","chaos","chaos-engineering","game","kube-linter","kubeinvaders","kubeinvaders-container","kubernetes","openshift","pods","workstation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucky-sideburn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-29T09:53:08.000Z","updated_at":"2024-06-04T21:15:08.534Z","dependencies_parsed_at":"2023-11-12T10:25:08.587Z","dependency_job_id":"698dfffd-bdd9-47e9-bd60-a246b8057c75","html_url":"https://github.com/lucky-sideburn/kubeinvaders","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucky-sideburn%2Fkubeinvaders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucky-sideburn%2Fkubeinvaders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucky-sideburn%2Fkubeinvaders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucky-sideburn%2Fkubeinvaders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucky-sideburn","download_url":"https://codeload.github.com/lucky-sideburn/kubeinvaders/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246713476,"owners_count":20821894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aliens","chaos","chaos-engineering","game","kube-linter","kubeinvaders","kubeinvaders-container","kubernetes","openshift","pods","workstation"],"created_at":"2024-08-01T07:01:20.986Z","updated_at":"2025-04-01T21:32:34.686Z","avatar_url":"https://github.com/lucky-sideburn.png","language":"JavaScript","readme":"# kubeinvaders :space_invader: aka k-inv :joystick:\n\n**Gamified Chaos Engineering and Educational Tool for Kubernetes**\n\nThis project, recommended by the CNCF (https://github.com/cncf/sandbox/issues/124), has a strong following and significant educational value. It's a chaos engineering tool, but it's also recommended for studying Kubernetes and resilience topics.\n\nIt is part of the Cloud Native Computing Foundation's (CNCF) landscape in the Observability and Analysis - Chaos Engineering section (https://landscape.cncf.io/).\n\nSome companies use it for marketing at tech conferences in DevOps \u0026 SRE. For example at [𝗗𝗲𝗰𝗼𝗺𝗽𝗶𝗹𝗲𝗗 𝟮𝟬𝟮𝟱](https://www.linkedin.com/posts/cloud-%26-heat-technologies-gmbh_kubeinvaders-onpremise-managedkubernetes-activity-7293538807906258946-YtKV?utm_source=share\u0026utm_medium=member_desktop\u0026rcm=ACoAAAkOMNYBK7j_raLIIJBfs2RBA94_sK4Yeyg)\n\nLaunch the demo at this link: https://kubeinvaders.platformengineering.it/\n\nThe teams at Platform Engineering (https://platformengineering.it/) and GDT - Garanti Del Talento ([https://www.garantideltalento.it/](https://www.garantideltalento.it)) back this project. They provide enterprise-grade features and SRE experts to help customers verify the resilience of their Kubernetes infrastructure.\n\nHere are the slides (https://www.slideshare.net/EugenioMarzo/kubeinvaders-chaos-engineering-practices-for-kubernetes1pdf) from the Chaos Engineering speech I prepared for FOSDEM 2023. Unfortunately, I couldn't be present at my talk, but I still wanted to share them with the community.\"\n\n# Table of Contents\n\n1. [Description](#Description)\n2. [Installation - Helm with ClusterIP Service + Nginx Ingress](#Installation-default)\n2. [Installation - Helm with NodePort Service](#Installation-nodeport)\n2. [Installation - Using Podman or Docker](#Installation-podman)\n3. [Usage](#Usage)\n4. [URL Monitoring During Chaos Session](#URL-Monitoring-During-Chaos-Session)\n5. [Persistence](#Persistence)\n6. [Generic Troubleshooting \u0026 Known Problems](#Generic-Troubleshooting-And-Known-Problems)\n7. [Troubleshooting Unknown Namespace](#Troubleshooting-Unknown-Namespace)\n8. [Metrics](#Metrics)\n9. [Security](#Security)\n10. [Roadmap](#Roadmap)\n11. [Community](#Community)\n12. [Community blogs and videos](#Community-blogs-and-videos)\n13. [License](#License)\n\n## Description\n\nInspired by the classic Space Invaders game, Kubeinvaders offers a playful and engaging way to learn about Kubernetes resilience by stressing a cluster and observing its behavior under pressure. This open-source project, built without relying on any external frameworks, provides a fun and educational experience for developers to explore the limits and strengths of their Kubernetes deployments\n\n## Installation-default\n\nIf you need a lab kubernetes cluster you can use this setup via Make and Minikube. Follow [this readme](./minikube-setup/README.md)\n\n[![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/kubeinvaders)](https://artifacthub.io/packages/search?repo=kubeinvaders)\n\n```bash\n# Please be sure to use kubeinvaders-1.9.8 that is ne latest helm chart version!\n\nhelm repo add kubeinvaders https://lucky-sideburn.github.io/helm-charts/\nhelm repo update\n\nkubectl create namespace kubeinvaders\n\n# With ingress and TLS enabled\nhelm install --set-string config.target_namespace=\"namespace1\\,namespace2\" --set ingress.enabled=true --set ingress.hostName=kubeinvaders.local --set deployment.image.tag=latest -n kubeinvaders kubeinvaders kubeinvaders/kubeinvaders --set ingress.tls_enabled=true\n\n# With ingress enabled but TLS disabled (in case you have a reverse-proxy that does TLS termination and nginx controller in http)\nhelm install --set-string config.target_namespace=\"namespace1\\,namespace2\" --set ingress.enabled=true --set ingress.hostName=kubeinvaders.local --set deployment.image.tag=latest -n kubeinvaders kubeinvaders kubeinvaders/kubeinvaders/ --set ingress.tls_enabled=false\n\n```\n\n### Example for K3S\n\n```bash\ncurl -sfL https://get.k3s.io | INSTALL_K3S_EXEC=\"--disable traefik\" sh -s -\n\ncat \u003e/tmp/ingress-nginx.yaml \u003c\u003cEOF\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: ingress-nginx\n---\napiVersion: helm.cattle.io/v1\nkind: HelmChart\nmetadata:\n  name: ingress-nginx\n  namespace: kube-system\nspec:\n  chart: ingress-nginx\n  repo: https://kubernetes.github.io/ingress-nginx\n  targetNamespace: ingress-nginx\n  version: v4.9.0\n  set:\n  valuesContent: |-\n    fullnameOverride: ingress-nginx\n    controller:\n      kind: DaemonSet\n      hostNetwork: true\n      hostPort:\n        enabled: true\n      service:\n        enabled: false\n      publishService:\n        enabled: false\n      metrics:\n        enabled: false\n        serviceMonitor:\n          enabled: false\n      config:\n        use-forwarded-headers: \"true\"\nEOF\n\nkubectl create -f /tmp/ingress-nginx.yaml\n\nkubectl create ns namespace1\nkubectl create ns namespace2\n\nexport KUBECONFIG=/etc/rancher/k3s/k3s.yaml\n\nhelm install kubeinvaders --set-string config.target_namespace=\"namespace1\\,namespace2\" \\\n-n kubeinvaders kubeinvaders/kubeinvaders --set ingress.enabled=true --set ingress.hostName=kubeinvaders.io --set deployment.image.tag=latest\n```\n\n### Install to Kubernetes with Helm (v3+) - LoadBalancer / HTTP (tested with GKE)\n\n```bash\nhelm install kubeinvaders --set-string config.target_namespace=\"namespace1\\,namespace2\" -n kubeinvaders kubeinvaders/kubeinvaders --set ingress.enabled=true --set ingress.hostName=kubeinvaders.local --set deployment.image.tag=latest --set service.type=LoadBalancer --set service.port=80\n\nkubectl set env deployment/kubeinvaders DISABLE_TLS=true -n kubeinvaders\n```\n\n### SCC for Openshift\n\n```bash\noc adm policy add-scc-to-user anyuid -z kubeinvaders\n```\n\n### Route for Openshift\n\n```bash\napiVersion: route.openshift.io/v1\nkind: Route\nmetadata:\n  name: kubeinvaders\n  namespace: \"kubeinvaders\"\nspec:\n  host: \"kubeinvaders.io\"\n  to:\n    name: kubeinvaders\n  tls:\n    termination: Edge\n```\n## Add simple nginx Deployment for Pods to shot at\n```bash\ncat \u003edeployment.yaml \u003c\u003cEOF\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\nspec:\n  selector:\n    matchLabels:\n      app: nginx\n  replicas: 20 # tells deployment to run 20 pods matching the template\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:1.24.0\n        ports:\n        - containerPort: 81\nEOF\n```\n\nApply Nginx Deployment in namespace1 and namespace2\n```bash\nsudo kubectl apply -f deployment.yaml -n namespace1\nsudo kubectl apply -f deployment.yaml -n namespace2\n```\n\n## Installation-nodeport\n\nLet's say we have a Layer 4 or Layer 7 Load Balancer that redirects traffic directly to the KubeInvaders Service Node Port.\n\nFor example, consider this HaProxy configuration. We don't want to use TLS in this scenario (just for experimentation).\n\nRemember to disable TLS: **kubectl set env deployment/kubeinvaders DISABLE_TLS=true -n kubeinvaders**\n(TODO: put this into values of the Helm)\n\n**HaProxy Configuration**\n```bash\nglobal\n    log         127.0.0.1 local2\n\n    chroot      /var/lib/haproxy\n    pidfile     /var/run/haproxy.pid\n    maxconn     4000\n    user        haproxy\n    group       haproxy\n    daemon\n\n    # turn on stats unix socket\n    stats socket /var/lib/haproxy/stats\n\n    # utilize system-wide crypto-policies\n    ssl-default-bind-ciphers PROFILE=SYSTEM\n    ssl-default-server-ciphers PROFILE=SYSTEM\n\ndefaults\n    mode                    tcp\n    log                     global\n    option                  httplog\n    option                  dontlognull\n    option http-server-close\n    option forwardfor       except 127.0.0.0/8\n    option                  redispatch\n    retries                 3\n    timeout http-request    10s\n    timeout queue           1m\n    timeout connect         10s\n    timeout client          1m\n    timeout server          1m\n    timeout http-keep-alive 10s\n    timeout check           10s\n    maxconn                 3000\n\nfrontend mylb\n    bind *:80\n    default_backend mynodeport\n\nbackend mynodeport\n    balance roundrobin\n```\n\n**Installation steps using NodePort**\n\n```bash\n\nhelm repo add kubeinvaders https://lucky-sideburn.github.io/helm-charts/ \u0026\u0026 helm repo list\nVERSION=latest\n\nhelm install kubeinvaders kubeinvaders/kubeinvaders \\\n  --version=$VERSION \\\n  --namespace kubeinvaders \\\n  --create-namespace \\\n  --set service.type=NodePort \\\n  --set service.nodePort=30016 \\\n  --set ingress.enabled=false \\\n  --set config.target_namespace=\"default\\,namespace1\" \\\n  --set route_host=foobar.local\n\nkubectl set env deployment/kubeinvaders DISABLE_TLS=true -n kubeinvaders\n```\n## Installation-podman\n\n### Run through Docker or Podman\n\nCreate the required components (assumes k8s v1.24+):\n\n```bash\ncat \u003c\u003c 'EOF' | kubectl apply -f -\napiVersion: v1\nkind: Namespace\nmetadata:\n  name: kubeinvaders\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  name: kinv-cr\nrules:\n  - apiGroups:\n      - \"\"\n    resources:\n      - pods\n      - pods/log\n    verbs:\n      - delete\n  - apiGroups:\n      - batch\n      - extensions\n    resources:\n      - jobs\n    verbs:\n      - get\n      - list\n      - watch\n      - create\n      - update\n      - patch\n      - delete\n  - apiGroups:\n      - \"*\"\n    resources:\n      - \"*\"\n    verbs:\n      - get\n      - watch\n      - list\n---\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: kinv-sa\n  namespace: kubeinvaders\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: kinv-crb\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: ClusterRole\n  name: kinv-cr\nsubjects:\n  - kind: ServiceAccount\n    name: kinv-sa\n    namespace: kubeinvaders\n---\napiVersion: v1\nkind: Secret\ntype: kubernetes.io/service-account-token\nmetadata:\n  name: kinv-sa-token\n  namespace: kubeinvaders\n  annotations:\n    kubernetes.io/service-account.name: kinv-sa\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRole\nmetadata:\n  namespace: default\n  name: kubevirt-vm-restart-role\nrules:\n- apiGroups: [\"subresources.kubevirt.io\"]\n  resources: [\"virtualmachines/restart\"]\n  verbs: [\"update\"]\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: ClusterRoleBinding\nmetadata:\n  name: kubevirt-vm-restart-binding\n  namespace: default\nsubjects:\n- kind: ServiceAccount\n  name: kubeinvaders\n  namespace: kubeinvaders\nroleRef:\n  kind: ClusterRole\n  name: kubevirt-vm-restart-role\n  apiGroup: rbac.authorization.k8s.io\nEOF\n```\n\nExtract the token:\n\n```bash\nTOKEN=$(k get secret -n kubeinvaders -o go-template='{{.data.token | base64decode}}' kinv-sa-token)\n```\nCreate two namespaces:\n\n```bash\nkubectl create namespace namespace1\nkubectl create namespace namespace2\n```\nRun the container:\n\n```bash\npodman run -p 8080:8080 \\\n--env K8S_TOKEN=**** \\\n--env APPLICATION_URL=http://localhost:8080 \\\n--env DISABLE_TLS=true \\\n--env KUBERNETES_SERVICE_HOST=10.10.10.4 \\\n--env KUBERNETES_SERVICE_PORT_HTTPS=6443 \\\n--env NAMESPACE=namespace1,namespace2 \\\nluckysideburn/kubeinvaders:latest\n```\n\nGiven this example, you can access k-inv at the following address: [http://localhost:3131](http://localhost:3131)\n\n- Please pay attention to the command \"podman run -p 3131:8080\". Forwarding port 8080 is important.\n- We suggest using `DISABLE_TLS=true` for local development environments.\n- Follow the instructions above to create the token for `K8S_TOKEN`.\n- In the example, we use image tag `latest`, use `latest_debug` for debugging.\n\n#### Params\n\n##### K8S_TOKEN\n\nThese are the permissions your service account must have. You can take an example from [this clusterrole](https://github.com/lucky-sideburn/kubeinvaders/blob/master/helm-charts/kubeinvaders/templates/rbac-cluster.yaml).\n\n- apiGroups: [\"\"]\n  resources: [\"pods\", \"pods/log\"]\n  verbs: [\"delete\"]\n- apiGroups: [\"batch\", \"extensions\"]\n  resources: [\"jobs\"]\n  verbs: [\"get\", \"list\", \"watch\", \"create\", \"update\", \"patch\", \"delete\"]\n- apiGroups: [\"*\"]\n  resources: [\"*\"]\n  verbs: [\"get\", \"watch\", \"list\"]\n\n##### APPLICATION_URL\n\nURL of the web console\n\n##### DISABLE_TLS\n\nDisable HTTPS for the web console\n\n##### KUBERNETES_SERVICE_HOST\n\nIP address or DNS name of your control plane.\n\n##### KUBERNETES_SERVICE_PORT_HTTPS\n\nTCP port of the target control plane.\n\n#### NAMESPACE\n\nList the namespaces you want to stress or on which you want to see logs (logs are a beta feature, they might not work or could slow down the browser...).\n\n```bash\npodman run -p 8080:8080 \\\n--env K8S_TOKEN=*** \\\n--env APPLICATION_URL=http://localhost:8080 \\\n--env DISABLE_TLS=true \\\n--env KUBERNETES_SERVICE_HOST=10.10.10.4 \\\n--env KUBERNETES_SERVICE_PORT_HTTPS=6443 \\\n--env NAMESPACE=namespace1,namespace2 \\\nluckysideburn/kubeinvaders:latest\n```\n\n## Usage\n\nAt the top you will find some metrics as described below:\n\n![Alt Text](./doc_images/metrics_bar.png)\n\n**Current Replicas State Delay** is a metric that show how much time the cluster takes to come back at the desired state of pods replicas.\n\nThis is a control-plane you can use to switch off \u0026 on various features.\n\n![Alt Text](./doc_images/control-plane.png)\n\n### Start The Chaos Experiment\n\nPress the \"Start\" button to initiate the automatic pilot (the button changes to \"Stop\" to disable this feature).\n\n### Enable Shuffle :joystick:\n\nPress the \"Enable Shuffle\" button to randomly rearrange the positions of pods or K8s nodes (the button changes to \"Disable Shuffle\" to deactivate this feature).\n\n### Enable Auto Jump Between Namespace :joystick:\n\nPress the \"Auto NS Switch\" button to randomly switch between namespaces (the button changes to \"Disable Auto NS Switch\" to deactivate this feature).\n\n### Show / Hide Pods Name :joystick:\n\nPress the \"Hide Pods Name\" button to conceal the names of the pods beneath the aliens (the button changes to \"Show Pods Name\" to deactivate this feature).\n\n### Information about Current Status and Events :joystick:\n\nAs described below, on the game screen near the spaceship, there are details about the current cluster, namespace, and some configurations.\n\n![Alt Text](./doc_images/game-info.png)\n\nUnder the + and - buttons, a bar appears with the latest game events.\n\n![Alt Text](./doc_images/game-events.png)\n\n### Show Special Keys :joystick:\n\nPress 'h' or select 'Show Special Keys' from the menu.\n\n### Zoom In / Out :joystick:\n\nPress the + or - buttons to increase or decrease the game screen.\n\n### Chaos Containers for Master and Worker Nodes\n\n- Select \"Show Current Chaos Container for Nodes\" from the menu to see which container starts when you attack a worker node (not an alien, they are pods).\n\n- Select \"Set Custom Chaos Container for Nodes\" from the menu to use your preferred image or configuration against nodes.\n\n# URL Monitoring During Chaos Session\n\nDuring a chaos engineering session, you can monitor the behavior of an HTTP call exposed by an Ingress.\n\nUse the flag \"Add HTTP check \u0026 Chaos Report\" and add the URL to monitor\n![Alt Text](./doc_images/url_monitor.png)\n\nFollow real time charts during the experiment\n\n![Alt Text](./doc_images/http_stats.png)\n\n\n## Persistence\n\nK-inv uses Redis to save and manage data. Redis is configured with \"appendonly.\"\n\nCurrently, the Helm chart does not support PersistentVolumes, but this task is on the to-do list...\n\n## Generic Troubleshooting and Known Problems\n\n- It seems that KubeInvaders does not work with EKS due to problems with ServiceAccount.\n- Currently, the installation of KubeInvaders into a namespace that is not named \"kubeinvaders\" is not supported.\n- I have only tested KubeInvaders with a Kubernetes cluster installed through KubeSpray.\n- If you don't see aliens, please follow these steps:\n  1.  Open a terminal and run \"kubectl logs \u003cpod_of_kubeinvader\u003e -n kubeinvaders -f\"\n  2.  Execute the following command from another terminal: `curl \"https://\u003cyour_kubeinvaders_url\u003e/kube/pods?action=list\u0026namespace=namespace1\" -k`\n  3.  Open an issue with attached logs.\n- If you use route_host insted of ingress, please specify also the port like route_host: \"kubeinvaders.example.com:8080\". The port must be the same of the NodePort service\n\n## Troubleshooting Unknown Namespace\n\n- Check if the namespaces declared with helm config.target_namespace (e.g., config.target_namespace=\"namespace1\\,namespace2\") exist and contain some pods.\n- Check your browser's developer console for any failed HTTP requests (send them to luckysideburn[at]gmail[dot]com or open an issue on this repo).\n- Try using latest_debug and send logs to luckysideburn[at]gmail[dot]com or open an issue on this repo.\n\n## Prometheus Metrics\n\nKubeInvaders exposes metrics for Prometheus through the standard endpoint /metrics.\n\nHere is an example of Prometheus configuration:\n\n```bash\nscrape_configs:\n- job_name: kubeinvaders\n  static_configs:\n  - targets:\n    - kubeinvaders.kubeinvaders.svc.cluster.local:8080\n```\n\nExample of metrics:\n\n| Metric                                                     | Description                                                  |\n| ---------------------------------------------------------- | ------------------------------------------------------------ |\n| chaos_jobs_node_count{node=workernode01}                   | Total number of chaos jobs executed per node                 |\n| chaos_node_jobs_total                                      | Total number of chaos jobs executed against all worker nodes |\n| deleted_pods_total 16                                      | Total number of deleted pods                                 |\n| deleted_namespace_pods_count{namespace=myawesomenamespace} | Total number of deleted pods per namespace                   |\n\n![Download Grafana dashboard](./confs/grafana/KubeInvadersDashboard.json)\n\n![Alt Text](./doc_images/grafana1.png)\n\n![Alt Text](./doc_images/grafana2.png)\n\n## Security\n\nIn order to restrict the access to the Kubeinvaders endpoint add this annotation into the ingress.\n\n```yaml\nnginx.ingress.kubernetes.io/whitelist-source-range: \u003cyour_ip\u003e/32\n```\n\n## Roadmap\n\nRoadmap: Chaos Engineering Platform Enhancement\nPhase 1: Authentication and Authorization\n\n    Implement robust user authentication:\n        Allow for both local and external authentication (e.g., LDAP, OAuth)\n        Securely store user credentials\n    Introduce role-based access control (RBAC):\n        Define granular permissions based on user roles (e.g., admin, engineer, viewer)\n        Enforce authorization at the resource level (namespaces, experiments, etc.)\n\nPhase 2: Analytics and Reporting\n\n    Develop namespace-specific statistics:\n        Track the frequency of chaos engineering sessions per namespace\n        Visualize trends and patterns over time\n    Create comprehensive reports:\n        Generate customizable reports for management\n        Include metrics on experiment coverage, success rates, and failure rates\n    Export reporting data:\n        Allow for data export in various formats (e.g., CSV, JSON, PDF)\n\nPhase 3: API Development\n\n    Expose platform functionality via a RESTful API:\n        Enable integration with other tools and systems\n        Support CRUD operations for core entities (experiments, scenarios, etc.)\n\nPhase 4: UI Enhancements\n\n    Improve user experience:\n        Redesign the UI for better usability and aesthetics\n        Optimize performance and responsiveness\n\nPhase 5: LLM Integration for Experiment Creation\n\n    Integrate an LLM: Develop an interface that allows users to describe experiments in natural language.\n    Translate to code: Utilize the LLM to translate natural language descriptions into executable code.\n    Validate and optimize: Implement mechanisms to validate and optimize the code generated by the LLM.\n\n## Community\n\nPlease reach out for news, bugs, feature requests, and other issues via:\n\n- On Twitter: [@kubeinvaders](https://twitter.com/kubeinvaders) \u0026 [@luckysideburn](https://twitter.com/luckysideburn)\n- New features are published on YouTube too in [this channel](https://www.youtube.com/channel/UCQ5BQ8R2fDL_WkNAllYRrpQ)\n\n## Community blogs and videos\n![Alt Text](./doc_images/1741171163503.jpg)\n\n- [The Kubernetes ecosystem is a candy store](https://opensource.googleblog.com/2024/06/the-kubernetes-ecosystem-is-candy-store.html)\n- [ AdaCon Norway Live Stream ](https://www.youtube.com/watch?v=rt_eM_KRfK4)\n- [ LILiS - Linux Day 2023 Benevento ](https://www.youtube.com/watch?v=1tHkEfbGjgE)\n- Kubernetes.io blog: [KubeInvaders - Gamified Chaos Engineering Tool for Kubernetes](https://kubernetes.io/blog/2020/01/22/kubeinvaders-gamified-chaos-engineering-tool-for-kubernetes/)\n- acloudguru: [cncf-state-of-the-union](https://acloudguru.com/videos/kubernetes-this-month/cncf-state-of-the-union)\n- DevNation RedHat Developer: [Twitter](https://twitter.com/sebi2706/status/1316681264179613707)\n- Flant: [Open Source solutions for chaos engineering in Kubernetes](https://blog.flant.com/chaos-engineering-in-kubernetes-open-source-tools/)\n- Reeinvent: [KubeInvaders - gamified chaos engineering](https://www.reeinvent.com/blog/kubeinvaders)\n- Adrian Goins: [K8s Chaos Engineering with KubeInvaders](https://www.youtube.com/watch?v=bxT-eJCkqP8)\n- dbafromthecold: [Chaos engineering for SQL Server running on AKS using KubeInvaders](https://dbafromthecold.com/2019/07/03/chaos-engineering-for-sql-server-running-on-aks-using-kubeinvaders/)\n- Pklinker: [Gamification of Kubernetes Chaos Testing](https://pklinker.medium.com/gamification-of-kubernetes-chaos-testing-bd2f7a7b6037)\n- Openshift Commons Briefings: [OpenShift Commons Briefing KubeInvaders: Chaos Engineering Tool for Kubernetes](https://www.youtube.com/watch?v=3OOXOCTAYF0\u0026t=4s)\n- GitHub: [awesome-kubernetes repo](https://github.com/ramitsurana/awesome-kubernetes)\n- William Lam: [Interesting Kubernetes application demos](https://williamlam.com/2020/06/interesting-kubernetes-application-demos.html)\n- The Chief I/O: [5 Fun Ways to Use Kubernetes ](https://thechief.io/c/editorial/5-fun-ways-use-kubernetes/?utm_source=twitter\u0026utm_medium=social\u0026utm_campaign=thechiefio\u0026utm_content=articlesfromthechiefio)\n- LuCkySideburn: [Talk @ Codemotion](https://www.slideshare.net/EugenioMarzo/kubeinvaders-chaos-engineering-tool-for-kubernetes-and-openshift)\n- Chaos Carnival: [Chaos Engineering is fun!](https://www.youtube.com/watch?v=10tHPl67A9I\u0026t=3s)\n- Kubeinvaders (old version) + OpenShift 4 Demo: [YouTube_Video](https://www.youtube.com/watch?v=kXm2uU5vlp4)\n- KubeInvaders (old version) Vs Openshift 4.1: [YouTube_Video](https://www.youtube.com/watch?v=7R9ftgB-JYU)\n- Chaos Engineering for SQL Server | Andrew Pruski | Conf42: Chaos Engineering: [YouTube_Video](https://www.youtube.com/watch?v=HCy3sjMRvlI)\n- nicholaschangblog: [Introducing Azure Chaos Studio](https://nicholaschangblog.com/azure/introduction-to-azure-choas-studio/)\n- bugbug: [Chaos Testing: Everything You Need To Know](https://bugbug.io/blog/software-testing/chaos-testing-guide/)\n- Kinetikon: [Chaos Engineering: 5 strumenti open source](https://www.kinetikon.com/chaos-engineering-strumenti-open-source/)\n\n## License\n\nKubeInvaders is licensed under the Apache License, Version 2.0. See [LICENSE](./LICENSE) for the full license text.\n","funding_links":[],"categories":["Testing","Chaos engineering","Kubernetes tooling - chaos engineering","Tools and Libraries","JavaScript","JavaScript (485)","Notable Tools","3. Fault Injection"],"sub_categories":["[Jenkins](#jenkins)","Testing and Troubleshooting","Cloud"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucky-sideburn%2FKubeInvaders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucky-sideburn%2FKubeInvaders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucky-sideburn%2FKubeInvaders/lists"}