mirrord は何をしますか?
任意のプロセスを、自身のマシンまたはAIエージェントの環境で、Kubernetesクラスター内のPodであるかのように実行します:実際の環境変数、DNS、ネットワーク、トラフィックを利用可能。
概要
mirrordは、開発者やAIエージェントがコンテナイメージのビルド、デプロイ、複雑なポートフォワーディングを必要とせずに、Kubernetesクラスターと同一の環境でコードを実行できるオープンソースツールです。
仕組み
- mirrordは、実行中のプロセス(例:開発サーバー、テストスイート、スクリプト)にアタッチします。
- クラスターとのトンネルを作成し、選択したPodの特権的なビューを取得します。
- プロセスからのネットワークトラフィック、DNS解決、環境変数読み取りをインターセプトし、クラスター内のPodからのものであるかのように透過的にルーティングします。
- 受信リクエストも、あたかも選択したPodに送信されたかのように、ローカルプロセスに転送できます。
使用例
mirrord exec -t my-pod -- python my_script.py— クラスターコンテキストでスクリプトを実行。mirrord run -t my-pod -- npm start— クラスター内のPodとしてNode.jsアプリを実行。- CI/CDパイプラインと統合し、コードを変更せずにクラスターリソースに対してテストを実行。
設定
mirrordは、CLI引数、環境変数、または設定ファイルを通じて設定できます。主なオプションは以下の通りです。
--target/-t: ミラーリングするターゲットPodの名前(必須)。--namespace/-n: ターゲットPodの名前空間(デフォルト: 現在のK8sコンテキストの名前空間)。--agent-image: 使用するエージェントイメージ(デフォルト: 最新のmirrordエージェントイメージ)。--no-dns: DNSインターセプトを無効化。--no-env: 環境変数インターセプトを無効化。--no-network: ネットワークトラフィックインターセプトを無効化。
動作要件
- Kubernetesクラスターへのアクセス権(有効なkubeconfig設定)。
- ターゲットPodの名前と名前空間は、クラスター内に存在する必要があります。
kubectlがインストールされ、パスが通っていること。
対応プラットフォーム
- macOS (Intel & Apple Silicon)
- Linux (x86_64 & arm64)
- Windows (x86_64)
制限事項
- ターゲットPodは、mirrordエージェントのサイドカーコンテナを一時的に注入するため、
kubectlで変更可能である必要があります。 - ファイルシステムへのアクセスは、デフォルトではインターセプトされませんが、設定によって有効化できます。
- UDPトラフィックの一部のプロトコル(例:mDNS)は、完全にはサポートされていない場合があります。