Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
chaostoolkit-kubernetes — Extensión de controlador de Kubernetes para la API de sondas y acciones de Chaos Toolkit | Kitploit
Herramientas/GitHubGitHub/chaostoolkit/chaostoolkit-kubernetes
Seguridad de Infraestructura en la NubeSeguridad de ContenedoresSeguridad de RedesIngeniería del Caos
GitHubchaostoolkit/chaostoolkit-kubernetes

chaostoolkit-kubernetes

Extensión de controlador de Kubernetes para la API de sondas y acciones de Chaos Toolkit

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web
19175hace 2 añosRevisado por Kitploit

Extensiones de Chaos Toolkit para Kubernetes

Build Python versions Downloads

Este proyecto contiene actividades, como sondas y acciones, que puedes invocar desde tu experimento a través de Chaos Toolkit para llevar a cabo Chaos Engineering contra la API de Kubernetes: matar un pod, eliminar un statefulset o un nodo...

Instalación

Para usarlo desde tu experimento, este paquete debe instalarse en el entorno de Python donde ya vive chaostoolkit.

root@kitploit:~
$ pip install chaostoolkit-kubernetes

Uso

Para usar las sondas y acciones de este paquete, añade lo siguiente a tu archivo de experimento:

root@kitploit:~
{
    "title": "Do we remain available in face of pod going down?",
    "description": "We expect Kubernetes to handle the situation gracefully when a pod goes down",
    "tags": ["kubernetes"],
    "steady-state-hypothesis": {
        "title": "Verifying service remains healthy",
        "probes": [
            {
                "name": "all-our-microservices-should-be-healthy",
                "type": "probe",
                "tolerance": true,
                "provider": {
                    "type": "python",
                    "module": "chaosk8s.probes",
                    "func": "microservice_available_and_healthy",
                    "arguments": {
                        "name": "myapp"
                    }
                }
            }
        ]
    },
    "method": [
        {
            "type": "action",
            "name": "terminate-db-pod",
            "provider": {
                "type": "python",
                "module": "chaosk8s.pod.actions",
                "func": "terminate_pods",
                "arguments": {
                    "label_selector": "app=my-app",
                    "name_pattern": "my-app-[0-9]$",
                    "rand": true
                }
            },
            "pauses": {
                "after": 5
            }
        }
    ]
}

¡Eso es todo! Observa cómo la acción te ofrece la forma de matar un pod al azar.

Explora la documentación para ver las sondas y acciones existentes.

Inyecciones de fallos de bajo nivel

Ten en cuenta que, para los factores de estrés de red, CPU y memoria, nos apoyamos en el fantástico proyecto Chaos Mesh, que proporciona una excelente interfaz para inyectar estos fallos.

Necesitarás instalar Chaos Mesh primero en tu clúster para poder usarlos.

Configuración

Usar ~/.kube/config

Si tienes una entrada válida en tu archivo ~/.kube/config para el clúster al que quieres apuntar, no hay nada que hacer.

Puedes especificar KUBECONFIG para indicar una ubicación diferente.

root@kitploit:~
$ export KUBECONFIG=/tmp/my-config

Especificar el contexto de Kubernetes

Muy a menudo, tu configuración de Kubernetes contiene varias entradas y necesitas definir la que se usará como contexto predeterminado cuando no se proporcione explícitamente.

Por supuesto, puedes cambiar tu valor predeterminado usando kubectl config use-context KUBERNETES_CONTEXT, pero también puedes ser explícito en tu experimento de la siguiente manera:

root@kitploit:~
{
    "title": "Do we remain available in face of pod going down?",
    "description": "We expect Kubernetes to handle the situation gracefully when a pod goes down",
    "tags": ["kubernetes"],
    "secrets": {
        "k8s": {
            "KUBERNETES_CONTEXT": "..."
        }
    },
    "steady-state-hypothesis": {
        "title": "Verifying service remains healthy",
        "probes": [
            {
                "name": "all-our-microservices-should-be-healthy",
                "type": "probe",
                "tolerance": true,
                "secrets": ["k8s"],
                "provider": {
                    "type": "python",
                    "module": "chaosk8s.probes",
                    "func": "microservice_available_and_healthy",
                    "arguments": {
                        "name": "myapp"
                    }
                }
            }
        ]
    },
    "method": [
        {
            "type": "action",
            "name": "terminate-db-pod",
            "secrets": ["k8s"],
            "provider": {
                "type": "python",
                "module": "chaosk8s.pod.actions",
                "func": "terminate_pods",
                "arguments": {
                    "label_selector": "app=my-app",
                    "name_pattern": "my-app-[0-9]$",
                    "rand": true
                }
            },
            "pauses": {
                "after": 5
            }
        }
    ]
}

Debes especificar la clave secreta KUBERNETES_CONTEXT con el nombre del contexto que quieres que use el experimento. Asegúrate también de informar a las acciones y sondas sobre las entradas secretas que deben recibir: "secrets": ["k8s"].

Usar la cuenta de servicio de un Pod

Cuando se ejecuta desde un pod (no desde tu máquina local ni desde un CI, por ejemplo), el archivo ./.kube/config no existe. En su lugar, las credenciales se pueden encontrar en /var/run/secrets/kubernetes.io/serviceaccount/token.

Para que la extensión lo sepa, simplemente establece CHAOSTOOLKIT_IN_POD mediante la variable de entorno de la especificación del pod:

root@kitploit:~
env:
- name: CHAOSTOOLKIT_IN_POD
  value: "true"

Cuando se usa esta variable de entorno, se asume que el experimento apunta al mismo clúster desde el que se ejecuta. Si tu experimento apunta a un clúster diferente, no debes establecer esta variable. En su lugar, puedes montar un volumen con una configuración de Kubernetes para el clúster de destino y establecer KUBECONFIG para que apunte a él.

Pasar todas las credenciales en el experimento

Finalmente, puedes pasar explícitamente toda la información de credenciales requerida al experimento de la siguiente manera:

Usar una clave de API

root@kitploit:~
{
    "secrets": {
        "kubernetes": {
            "KUBERNETES_HOST": "http://somehost",
            "KUBERNETES_API_KEY": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            }
        }
    }
}

Usar nombre de usuario/contraseña

root@kitploit:~
{
    "secrets": {
        "kubernetes": {
            "KUBERNETES_HOST": "http://somehost",
            "KUBERNETES_USERNAME": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            },
            "KUBERNETES_PASSWORD": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            }
        }
    }
}

Usar una clave/certificado TLS

root@kitploit:~
{
    "secrets": {
        "kubernetes": {
            "KUBERNETES_HOST": "http://somehost",
            "KUBERNETES_CERT_FILE": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            },
            "KUBERNETES_KEY_FILE": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            }
        }
    }
}

Autenticación en clústeres de Kubernetes gestionados

En algunos clústeres de Kubernetes gestionados, también necesitas autenticarte contra la propia plataforma porque la autenticación de Kubernetes está delegada en ella.

Google Cloud Platform

Además de tus credenciales de Kubernetes (a través del archivo ~/.kube/config), necesitas autenticarte contra la propia Google Cloud Platform. Normalmente esto se hace mediante:

root@kitploit:~
$ gcloud auth login

Pero también se puede lograr definiendo la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.

Contribuir

Si deseas contribuir con más funciones a este paquete, eres más que bienvenido a hacerlo. Por favor, haz un fork de este proyecto, escribe pruebas unitarias que cubran los cambios propuestos, implementa los cambios, asegúrate de que cumplan con los estándares de formato y luego abre un PR al repositorio para su revisión.

Consulta la sección formato para obtener más información sobre los estándares de formato.

Los proyectos de Chaos Toolkit requieren que todos los contribuyentes firmen un Developer Certificate of Origin en cada commit que quieran fusionar en la rama master del repositorio. Asegúrate de poder cumplir con las reglas del DCO antes de enviar un PR.

Desarrollo

Si deseas desarrollar en este proyecto, asegúrate de instalar las dependencias de desarrollo. Pero primero, instala PDM y luego instala las dependencias.

root@kitploit:~
$ pdm install

Ahora puedes editar los archivos y tu entorno los verá automáticamente, incluso cuando ejecutes el comando chaos localmente.

Pruebas

Para ejecutar las pruebas del proyecto, ejecuta lo siguiente:

root@kitploit:~
$ pdm run tests

Formato y Linting

Usamos ruff para aplicar lint y formato al código de este repositorio.

Antes de abrir un Pull Request, te recomendamos ejecutar el formato sobre tu código con:

root@kitploit:~
$ pdm run format

Esto formateará automáticamente cualquier código que no se adhiera a los estándares de formato.

Como algunas cosas no se corrigen con el formato, también te recomendamos ejecutar:

root@kitploit:~
$ pdm run lint

Para asegurarte de que también se detecten importaciones sin usar, cadenas demasiado largas, etc.

Descargar herramienta