このプロジェクトについて
debuxは、DockerおよびKubernetes環境向けに設計されたオープンソースのコンテナデバッガーです。これは、distroless、scratch、minimalイメージなど、シェルやパッケージマネージャーを持たない本番環境向けコンテナのデバッグという一般的な課題に対処します。ターゲットイメージ内にツールとシェルを必要とする`docker exec`とは異なり、debuxは別のデバッグツールボックスコンテナを起動してターゲットにアタッチし、有用な名前空間(ネットワーク、プロセス)を共有し、`$DEBUX_TARGET_ROOT`(通常は`/proc/1/root`)でターゲットのファイルシステムを公開します。
主な機能は次のとおりです。
- **あらゆるコンテナで動作**: 実行中、停止中、終了済み、クラッシュループ中のコンテナをデバッグできます。シェルやパッケージマネージャーを持たないコンテナも対象です。
- **DockerおよびKubernetesサポート**: ローカルのDockerコンテナ、Docker Composeサービス、Podmanコンテナ、Kubernetesポッドに対する統一されたワークフローを提供します。ホスト名前空間アクセスによるKubernetesノードのデバッグもサポートします。
- **すぐに使えるツールボックス**: プリインストールされたツールには、curl、wget、dig、nmap、tcpdump、strace、ltrace、gdb、htop、vim、jq、git、openssh、zsh、tmuxなどが含まれます。ツールボックスはWolfiベースで、パッケージ管理にmiseを使用します。
- **オンデマンドのツールインストール**: `dctl`コマンドは、miseを使用してデバッグセッション中に追加ツールをインストールします。ツールは`--tools`でセッション開始時にプリロードできます。
- **ターゲット対応シェル**: ターゲットのルートにジャンプし、ターゲットプロセスを検査し、ターゲットのネットワーク名前空間を再利用し、ツールボックスにない場合はchrootでターゲット自身のバイナリを実行できます。
- **ポートフォワーディングとファイルコピー**: どのターゲットからでもファイルにアクセスして取得できます。`-p`なしで起動したコンテナや、`kubectl cp`が失敗するdistrolessポッドでも可能です。
- **Kubernetesコピーモード**: 一時コンテナがRBACまたはアドミッションポリシーでブロックされている場合、`--copy`はデバッグ用の一時的な複製ポッドを作成します。TTL、Karpenter保護、再アタッチ機能を備えた長時間実行コピーセッションをサポートします。
- **ノードデバッグ**: `debux node`は、Kubernetesノード上にホスト名前空間のツールボックスポッドをスケジュールし、ノードのルートファイルシステムをマウントして、PID、ネットワーク、IPC名前空間を共有します。
- **イメージデバッグ**: イメージを起動せずにデバッグできます。イメージ自体が起動できない場合に役立ちます。
- **TUIインターフェース**: フルスクリーンのターゲットブラウザで、Docker、Kubernetesのコンテキスト/名前空間ナビゲーション、アクティブセッションの再アタッチ、最近のセッション、オプショントグルを備えています。
- **シェル補完**: 生成される補完には、サブストリングマッチングによるライブDockerおよびKubernetesターゲットが含まれます。
このツールは、amd64/arm64のLinuxおよびmacOSをサポートするインストーラスクリプトを備えた単一バイナリとして配布されています。リリースアセットはチェックサムで検証され、オプションでcosign署名検証もサポートされています。プロジェクトはMITライセンスで提供されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.