kubectl-localmesh固有の運用操作(起動、/etc/hosts管理、サービスアクセス、依存関係チェック)を提供します
このskillは、kubectl-localmesh固有の運用操作を提供します。
kubectlプラグインとして起動(推奨、/etc/hosts自動更新あり、sudo必要):
sudo kubectl localmesh -f services.yaml
直接実行の場合:
# Task経由でビルド済み、またはgo install済み
sudo ./bin/kubectl-localmesh -f services.yaml
# 直接go buildした場合
sudo ./kubectl-localmesh -f services.yaml
自動更新を無効化:
kubectl localmesh -f services.yaml --update-hosts=false
# または
./kubectl-localmesh -f services.yaml --update-hosts=false
この場合、Hostヘッダーを手動指定:
curl -H "Host: users-api.localhost" http://127.0.0.1:80/
自動更新のメリット:
自動更新のデメリット:
/etc/hosts更新有効時(デフォルト):
curl http://billing-api.localhost/healthgrpcurl -plaintext users-api.localhost listポート80使用時: ポート番号不要
他のポート使用時: http://service.localhost:8080のようにポート指定
/etc/hosts更新無効時:
# HTTPの場合
curl -H "Host: billing-api.localhost" http://127.0.0.1:80/health
# gRPCの場合
grpcurl -plaintext -authority users-api.localhost 127.0.0.1:80 list
Ctrl+Cで停止すると、自動的に:
クリーンな終了を確認:
# /etc/hostsにエントリが残っていないか確認
grep "kubectl-localmesh" /etc/hosts
# port-forwardプロセスが残っていないか確認
ps aux | grep "kubectl port-forward"
# Envoyプロセスが残っていないか確認
ps aux | grep envoy
起動前に依存関係を確認:
# スクリプトを使用
.claude/skills/kubectl-localmesh-operations/scripts/check-dependencies.sh
# または個別に確認
kubectl version --client
envoy --version
bash --version
必須依存関係:
kubectl: Kubernetesクラスタへのアクセスenvoy: ローカルプロキシ(macOS: brew install envoy)bash: port-forwardループスクリプト実行症状: address already in useエラー
解決:
listener_portを変更(services.yaml)# ポート80を使用しているプロセスを確認
lsof -i :80
# プロセスを停止
kill <PID>
症状: Envoyプロセスがすぐに終了する
解決:
kubectl-envoy-debugging skillを使用)# Envoy設定をダンプ
./kubectl-localmesh --dump-envoy-config -f services.yaml > /tmp/envoy-config.yaml
# Envoy設定を検証
envoy --mode validate -c /tmp/envoy-config.yaml
# デバッグログで詳細確認
sudo ./kubectl-localmesh -f services.yaml -log debug
症状: error forwarding portエラー
解決:
# サービスの存在確認
kubectl get svc -n <namespace>
# サービスの詳細とポート確認
kubectl describe svc <service> -n <namespace>
# kubeconfigとクラスタ接続確認
kubectl cluster-info
kubectl get nodes
症状: permission deniedエラー
解決:
--update-hosts=falseオプションを使用# sudo権限で実行
sudo ./kubectl-localmesh -f services.yaml
# または/etc/hosts更新を無効化
./kubectl-localmesh -f services.yaml --update-hosts=false
症状: connection refusedや503 Service Unavailable
解決手順:
# port-forwardプロセスの確認
ps aux | grep "kubectl port-forward"
# curlで詳細確認
curl -v http://users-api.localhost/
# 期待される出力:
# * Connected to users-api.localhost (127.0.0.1)
# > GET / HTTP/1.1
# > Host: users-api.localhost
ユーザーから以下のような依頼があった場合:
「起動して」
「サービスにアクセスしたい」
「動かない」
# 1. 依存関係チェック
.claude/skills/kubectl-localmesh-operations/scripts/check-dependencies.sh
# 2. 設定ファイル確認
cat services.yaml
# 3. Kubernetesクラスタ接続確認
kubectl cluster-info
# 4. 起動
sudo ./bin/kubectl-localmesh -f services.yaml
# 1. 起動
sudo ./bin/kubectl-localmesh -f services.yaml
# 2. 別ターミナルでサービスにアクセス
curl http://users-api.localhost/health
grpcurl -plaintext users-api.localhost list
# 3. 終了(Ctrl+C)
# 1. デバッグモードで起動
sudo ./kubectl-localmesh -f services.yaml -log debug
# 2. 問題を再現
curl http://users-api.localhost/problematic-endpoint
# 3. ログを確認
# (標準出力に詳細なログが表示される)
# 4. 必要に応じてEnvoy設定を確認
./kubectl-localmesh --dump-envoy-config -f services.yaml
プロジェクトのCLAUDE.mdに詳細なアーキテクチャと実装詳細があります。
go-taskfile-workflow: ビルドとテストkubectl-envoy-debugging: Envoy設定の確認とデバッグkubectl-localmesh-macos-localhost: macOSの.localhostドメインの挙動