Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 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-Engineering
GitHubchaostoolkit/chaostoolkit-kubernetes

chaostoolkit-kubernetes

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

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite
19175vor 2 JahrenVon Kitploit geprüft

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.

root@kitploit:~
$ pip install chaostoolkit-kubernetes

Verwendung

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

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

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.

root@kitploit:~
$ 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:

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

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:

root@kitploit:~
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

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

Verwendung eines Benutzernamens/Passworts

root@kitploit:~
{
    "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

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

Authentifizierung bei verwalteten Kubernetes-Clustern

Bei einigen verwalteten Kubernetes-Clustern müssen Sie sich auch gegenüber der Plattform selbst authentifizieren, da die Kubernetes-Authentifizierung an sie delegiert wird.

Google Cloud Platform

Zusätzlich zu Ihren Kubernetes-Anmeldedaten (über die Datei ~/.kube/config) müssen Sie sich gegenüber der Google Cloud Platform selbst authentifizieren. Normalerweise geschieht dies über:

root@kitploit:~
$ gcloud auth login

Dies kann aber auch durch das Setzen der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS erreicht werden.

Mitwirken

Wenn Sie weitere Funktionen zu diesem Paket beitragen möchten, sind Sie mehr als willkommen. Bitte forken Sie dieses Projekt, schreiben Sie Unit-Tests, um die vorgeschlagenen Änderungen abzudecken, implementieren Sie die Änderungen, stellen Sie sicher, dass sie den Formatierungsstandards entsprechen, und reichen Sie dann einen PR zur Überprüfung im Repository ein.

Weitere Informationen zu den Formatierungsstandards finden Sie im Abschnitt Formatierung.

Die Chaos-Toolkit-Projekte verlangen, dass alle Mitwirkenden bei jedem Commit, den sie in den Master-Branch des Repositorys einbringen möchten, eine Developer Certificate of Origin unterzeichnen. Bitte stellen Sie sicher, dass Sie die Regeln der DCO einhalten können, bevor Sie einen PR einreichen.

Entwickeln

Wenn Sie an diesem Projekt entwickeln möchten, stellen Sie sicher, dass Sie die Entwicklungsabhängigkeiten installieren. Aber zuerst PDM installieren und dann die Abhängigkeiten installieren.

root@kitploit:~
$ pdm install

Jetzt können Sie die Dateien bearbeiten, und sie werden automatisch von Ihrer Umgebung gesehen, sogar wenn Sie lokal über den chaos-Befehl laufen.

Tests

Um die Tests für das Projekt auszuführen, führen Sie Folgendes aus:

root@kitploit:~
$ pdm run tests

Formatierung und Linting

Wir verwenden ruff, um den Code dieses Repositorys sowohl zu linten als auch zu formatieren.

Bevor Sie einen Pull Request stellen, empfehlen wir Ihnen, die Formatierung auf Ihren Code anzuwenden mit:

root@kitploit:~
$ pdm run format

Dies formatiert automatisch jeden Code, der nicht den Formatierungsstandards entspricht.

Da einige Dinge von der Formatierung nicht abgedeckt werden, empfehlen wir Ihnen außerdem, Folgendes auszuführen:

root@kitploit:~
$ pdm run lint

Um sicherzustellen, dass auch ungenutzte Import-Anweisungen/zu lange Strings usw. erkannt werden.

Tool herunterladen