Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
chaostoolkit-kubernetes — Kubernetes-Treiber-Erweiterung für die Probes- und Actions-API des Chaos Toolkit | Kitploit
Tools/GitHubGitHub/chaostoolkit/chaostoolkit-kubernetes
Cloud-Infrastruktur-SicherheitContainer-SicherheitNetzwerksicherheitChaos-EngineeringTop in Chaos-Engineering Nr.10
GitHubchaostoolkit/chaostoolkit-kubernetes

chaostoolkit-kubernetes

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Kubernetes-Treiber-Erweiterung für die Probes- und Actions-API des Chaos Toolkit

Repository anzeigenWebseite
1917554vor 2 JahrenVon Kitploit geprüft
Teilen

Chaos Toolkit Erweiterungen für Kubernetes

Build Python versions Downloads

Dieses Projekt enthält Aktivitäten, wie Sonden (Probes) und Aktionen (Actions), die Sie aus Ihrem Experiment heraus über das Chaos Toolkit aufrufen können, um Chaos Engineering gegen die Kubernetes-API durchzuführen: einen Pod töten, ein StatefulSet oder einen Node entfernen ...

Installation

Damit das Paket aus Ihrem Experiment verwendet werden kann, muss es in der Python-Umgebung installiert sein, in der chaostoolkit bereits vorhanden ist.

$ pip install chaostoolkit-kubernetes

Verwendung

Um die Sonden und Aktionen aus diesem Paket zu nutzen, fügen Sie Folgendes zu Ihrer Experimentdatei hinzu:

{
    "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
            }
        }
    ]
}

Das war's! Beachten Sie, wie die Aktion Ihnen die Möglichkeit gibt, einen Pod zufällig zu töten.

Bitte erkunden Sie die Dokumentation, um die vorhandenen Sonden und Aktionen zu sehen.

Niedrigschwellige Fehlerinjektionen (Low level fault injections)

Beachten Sie, dass wir für die Netzwerk-, CPU- und Speicher-Stressoren auf das fantastische Chaos Mesh Projekt zurückgreifen, das eine großartige Oberfläche zur Injektion dieser Fehler bietet.

Sie müssen zuerst Chaos Mesh in Ihrem Cluster installieren, um sie zu verwenden.

Konfiguration

~/.kube/config verwenden

Wenn Sie einen gültigen Eintrag in Ihrer ~/.kube/config-Datei für den Cluster haben, den Sie ansprechen möchten, dann ist nichts weiter zu tun.

Sie können KUBECONFIG angeben, um einen anderen Speicherort festzulegen.

$ export KUBECONFIG=/tmp/my-config

Den Kubernetes-Kontext angeben

Sehr oft enthält Ihre Kubernetes-Konfiguration mehrere Einträge, und Sie müssen denjenigen als Standardkontext definieren, der verwendet werden soll, wenn er nicht explizit angegeben wird.

Sie können Ihren Standard natürlich mit kubectl config use-context KUBERNETES_CONTEXT ändern, aber Sie können dies auch explizit in Ihrem Experiment wie folgt tun:

{
    "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
            }
        }
    ]
}

Sie müssen den geheimen Schlüssel KUBERNETES_CONTEXT auf den Namen des Kontextes setzen, den das Experiment verwenden soll. Stellen Sie außerdem sicher, dass Sie den Aktionen und Sonden die geheimen Einträge mitteilen, die ihnen übergeben werden sollen: "secrets": ["k8s"].

Das Servicekonto eines Pods verwenden

Wenn Sie von einem Pod aus laufen (nicht von Ihrem lokalen Rechner oder einer CI), existiert die Datei ./.kube/config nicht. Stattdessen finden Sie die Anmeldedaten unter /var/run/secrets/kubernetes.io/serviceaccount/token.

Um die Erweiterung darüber zu informieren, setzen Sie einfach CHAOSTOOLKIT_IN_POD über die Umgebungsvariable der Pod-Spezifikation:

env:
- name: CHAOSTOOLKIT_IN_POD
  value: "true"

Bei Verwendung dieser Umgebungsvariable wird davon ausgegangen, dass das Experiment denselben Cluster anvisiert, von dem aus das Experiment läuft. Wenn Ihr Experiment einen anderen Cluster anvisiert, sollten Sie diese Variable nicht setzen. Stattdessen könnten Sie ein Volume mit einer Kubernetes-Konfiguration für den Zielcluster einbinden und KUBECONFIG darauf zeigen lassen.

Alle Anmeldedaten im Experiment übergeben

Schließlich können Sie alle erforderlichen Anmeldeinformationen explizit an das Experiment wie folgt übergeben:

Verwendung eines API-Schlüssels

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

Verwendung eines Benutzernamens/Passworts

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

Verwendung eines TLS-Schlüssels/Zertifikats

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

Authentifizierung bei verwalteten Kubernetes-Clustern

Tool herunterladen