Claude-skill-registry kubectl-envoy-debugging
kubectl + Envoyベースのツールのデバッグと設定確認を支援します(Envoy設定ダンプ、オフラインモード、トラブルシューティング)
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/kubectl-envoy-debugging" ~/.claude/skills/majiayu000-claude-skill-registry-kubectl-envoy-debugging && rm -rf "$T"
manifest:
skills/data/kubectl-envoy-debugging/SKILL.mdsource content
kubectl + Envoy デバッグ
このskillは、kubectl + Envoyベースのツールのデバッグと設定確認を支援します。
対象ツール
- kubectl port-forward + Envoyを使うローカルプロキシツール
- Envoy設定を動的生成するツール
提供機能
Envoy設定のダンプ
生成されたEnvoy設定をYAML形式で確認:
kubectl localmesh --dump-envoy-config -f services.yaml # ファイルに保存 kubectl localmesh --dump-envoy-config -f services.yaml > envoy-config.yaml # または直接実行 ./kubectl-localmesh --dump-envoy-config -f services.yaml > envoy-config.yaml
用途:
- Envoy設定の理解
- ルーティング問題のデバッグ
- Envoy設定パターンの学習
オフラインモード(モック設定)
Kubernetesクラスタに接続せずにEnvoy設定を確認:
# モック設定ファイル作成例 cat > mocks.yaml <<EOF mocks: - namespace: users service: users-api port_name: grpc resolved_port: 50051 - namespace: billing service: billing-api port_name: http resolved_port: 8080 EOF # モック設定を使ってダンプ kubectl localmesh --dump-envoy-config -f services.yaml --mock-config mocks.yaml # または ./kubectl-localmesh --dump-envoy-config -f services.yaml --mock-config mocks.yaml
モック設定形式:
,namespace
,service
: サービス識別子port_name
: kubectl呼び出しの代わりに使うポート番号resolved_port
用途:
- クラスタアクセス不要の設定テスト
- CI/CDパイプライン
- オフライン開発
ログレベル指定
詳細なデバッグログを出力:
sudo kubectl localmesh -f services.yaml -log debug # または sudo ./kubectl-localmesh -f services.yaml -log debug
ログレベル:
: 最も詳細(デバッグ情報、内部状態)debug
: 標準(起動、設定読み込み、主要イベント)info
: 警告のみwarn
Envoy設定の検証ポイント
生成されたEnvoy設定をレビューする際のチェックリスト:
-
Listenerの確認
が正しいかlistener_port
でリッスンしているか0.0.0.0
-
Virtual Hostsの確認
- 各サービスの
(例:host
)が定義されているかusers-api.localhost - ルーティングルールが正しいか
- 各サービスの
-
Clustersの確認
- 各サービスに対応するclusterが存在するか
への接続設定が正しいか127.0.0.1:<動的ポート>- HTTP/2設定(
)がgRPCサービスで有効かhttp2_protocol_options
-
Timeoutの確認
でストリーミング対応になっているかtimeout: 0s
使用方法
ユーザーから以下のような依頼があった場合:
-
「Envoy設定を確認したい」
を使用--dump-envoy-config- 出力をファイルに保存して詳細レビュー
-
「クラスタに接続できない」
でオフラインモード--mock-config- モック設定ファイルを作成
-
「動作がおかしい」「ルーティングされない」
で詳細ログ取得-log debug- Envoy設定をダンプして検証
- virtual_hostsとclustersの対応を確認
トラブルシューティング
Envoy起動失敗
# 1. 設定をダンプして確認 ./kubectl-localmesh --dump-envoy-config -f services.yaml > /tmp/envoy-config.yaml # 2. Envoy設定を直接検証 envoy --mode validate -c /tmp/envoy-config.yaml
ルーティングが機能しない
# 1. デバッグログで詳細を確認 sudo ./kubectl-localmesh -f services.yaml -log debug # 2. 別ターミナルでcurlテスト curl -v http://users-api.localhost/ # 3. Envoy管理インターフェースで状態確認(実装されている場合) # curl http://localhost:9901/stats
モック設定の作成
実際のクラスタから情報を取得してモック設定を作成:
# サービスのポート情報を取得 kubectl get svc -n users users-api -o jsonpath='{.spec.ports[?(@.name=="grpc")].targetPort}' # 結果をmocks.yamlに記載 cat > mocks.yaml <<EOF mocks: - namespace: users service: users-api port_name: grpc resolved_port: 50051 # 上記で取得した値 EOF
関連ドキュメント
- プロジェクトのCLAUDE.md: Envoy設定生成ロジックの詳細
- Envoy公式ドキュメント: https://www.envoyproxy.io/docs/envoy/latest/