Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
chaostoolkit-kubernetes — Kubernetesドライバー拡張 of the Chaos Toolkit probes and actions API | Kitploit
ツール/GitHubGitHub/chaostoolkit/chaostoolkit-kubernetes
クラウドインフラストラクチャセキュリティコンテナセキュリティネットワークセキュリティカオスエンジニアリング
GitHubchaostoolkit/chaostoolkit-kubernetes

chaostoolkit-kubernetes

Kubernetesドライバー拡張 of the Chaos Toolkit probes and actions API

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト
191752年前Kitploit レビュー済み

Kubernetes向けChaos Toolkit拡張機能

Build Python versions Downloads

このプロジェクトには、Kubernetes APIに対してカオスエンジニアリングを実行するために、Chaos Toolkitを介して実験から呼び出すことができるプローブやアクションなどのアクティビティが含まれています:ポッドの強制終了、ステートフルセットやノードの削除など...

インストール

実験から使用するには、このパッケージはchaostoolkitが既に存在するPython環境にインストールされている必要があります。

root@kitploit:~
$ pip install chaostoolkit-kubernetes

使用方法

このパッケージのプローブとアクションを使用するには、実験ファイルに以下を追加します:

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

これだけです!このアクションがランダムに1つのポッドを強制終了する方法を提供していることに注目してください。

既存のプローブとアクションについては、ドキュメントをご覧ください。

低レベルのフォールトインジェクション

ネットワーク、CPU、メモリーのストレッサーについては、これらのフォールトを注入するための優れたインターフェースを提供する素晴らしいChaos Meshプロジェクトに依存していることに注意してください。

これらを使用するには、まずクラスターにChaos Meshをインストールする必要があります。

設定

~/.kube/configを使用する

ターゲットとするクラスターの有効なエントリが~/.kube/configファイルにある場合は、何もする必要はありません。

別の場所を指定するには、KUBECONFIGを指定できます。

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

Kubernetesコンテキストを指定する

Kubernetesの設定には複数のエントリが含まれることがよくあり、明示的に指定されていない場合にデフォルトのコンテキストとして使用するものを定義する必要があります。

もちろん、kubectl config use-context KUBERNETES_CONTEXTを使用してデフォルトを変更することもできますが、実験内で以下のように明示的に指定することもできます:

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

実験で使用するコンテキストの名前をKUBERNETES_CONTEXTシークレットキーに指定する必要があります。アクションとプローブに、渡すべきシークレットエントリ"secrets": ["k8s"]も必ず通知してください。

Podのサービスアカウントを使用する

ポッドから実行する場合(たとえば、ローカルマシンやCIからではなく)、./.kube/configファイルは存在しません。代わりに、資格情報は/var/run/secrets/kubernetes.io/serviceaccount/tokenにあります。

このことを拡張機能に認識させるには、ポッド仕様の環境変数にCHAOSTOOLKIT_IN_PODを設定するだけです:

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

この環境変数を使用する場合、実験は実験が実行されているのと同じクラスターをターゲットとすることが前提となります。実験が別のクラスターをターゲットとする場合は、この変数を設定しないでください。代わりに、ターゲットクラスター用のKubernetes設定を含むボリュームをマウントし、KUBECONFIGをその場所に設定することができます。

実験内で全ての資格情報を渡す

最後に、必要なすべての資格情報を以下のように実験に明示的に渡すことができます:

APIキーを使用する

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

ユーザー名/パスワードを使用する

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

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

マネージドKubernetesクラスターの認証

一部のマネージドKubernetesクラスターでは、Kubernetesの認証がプラットフォームに委任されているため、プラットフォーム自体に対する認証も必要です。

Google Cloud Platform

Kubernetesの資格情報(~/.kube/configファイル経由)に加えて、Google Cloud Platform自体に対する認証も必要です。通常これはgcloud経由で行います:

root@kitploit:~
$ gcloud auth login

ただし、GOOGLE_APPLICATION_CREDENTIALS環境変数を定義することによっても実現できます。

コントリビュート

このパッケージにさらに機能をコントリビュートしたい場合は、大歓迎です。このプロジェクトをフォークし、提案された変更をカバーする単体テストを作成し、変更を実装し、フォーマット標準を満たしていることを確認してから、レビューのためにリポジトリにPRを提出してください。

フォーマット標準の詳細については、フォーマットセクションを参照してください。

Chaos Toolkitプロジェクトでは、すべてのコントリビューターが、リポジトリのmasterブランチにマージしたい各コミットでDeveloper Certificate of Originに署名する必要があります。PRを提出する前に、DCOの規則を遵守できることを確認してください。

開発

このプロジェクトで開発したい場合は、開発用依存関係をインストールしてください。ただし、最初にPDMをインストールしてから、依存関係をインストールします。

root@kitploit:~
$ pdm install

これで、ファイルを編集できます。ローカルでchaosコマンドから実行している場合でも、変更は環境に自動的に反映されます。

テスト

プロジェクトのテストを実行するには、次のコマンドを実行します:

root@kitploit:~
$ pdm run tests

フォーマットとリンティング

このリポジトリのコードのリンティングとフォーマットの両方にruffを使用しています。

プルリクエストを提出する前に、以下のコマンドでコードに対してフォーマットを実行することをお勧めします:

root@kitploit:~
$ pdm run format

これにより、フォーマット標準に準拠していないコードが自動的にフォーマットされます。

フォーマットでは検出されないものもあるため、以下も実行することをお勧めします:

root@kitploit:~
$ pdm run lint

未使用のインポート文や長すぎる文字列なども検出されるようにするためです。

ツールをダウンロード