Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VS Codeで実践! Kubernetes上のアプリのデバッグ実行手法

VS Codeで実践! Kubernetes上のアプリのデバッグ実行手法

Kubernetes上で複数のマイクロサービスが協調動作する環境が一般的になってきました。その環境上でしか動作しないアプリケーションを、開発時のようにステップ実行してデバッグすること(以下、デバッグ実行)を諦めている方も多いと思います。VS Codeでは、Kubernetes上でアプリケーションをデバッグ実行する拡張機能が複数公開されています。本セッションでは、以下の3つのデバッグ実行の手法について、方法とその制約を解説、実演します。

- 拡張機能『Cloud Code』を使う
- kubectl port-forward を使う
- 拡張機能『Bridge To Kubernetes』を使う

ただし、本セッションでも本番環境のコンテナを直接デバッグ実行する方法については触れません。開発、ステージング環境など、ある程度構成を変更可能な環境を対象とします。

74th(Atsushi Morimoto)

November 05, 2021
Tweet

More Decks by 74th(Atsushi Morimoto)

Other Decks in Technology

Transcript

  1. Atsushi Morimoto @74th • Mobility Technologies所属 • AIよりのサーバサイドエンジニア タクシーアプリ GO

    や タクシー乗務員支援サービスを開発 • 著書 • VS Code Conference Japan 2021 → 11/20開催! 技術書典3~11参加
  2. デバッガを経由して実行する $ python -m myapp.app $ python -m debugpy \

    --listen 0.0.0.0:5678 \ --wait-for-client \ -m myapp.app $ ./cmd/app/main $ dlv exec --listen=0.0.0.0:2345 \ --headless --api-version 2 \ ./cmd/app/main
  3. 環境変数でデバッガを有効にする   import os if os.environ.get("ENABLE_DEBUGGER", "false") == "true": import

    debugpy debugpy.listen(("0.0.0.0", 5678)) import app app.start() #!/bin/sh if [ "${ENABLE_DEBUGGER}" == "true" ];then # 最適化オフのプログラム dlv exec --headless -l localhost:12345 ./app_debug else ./app fi
  4. コンテナ実行後の、デバッグの設定 { "name": "Attach (Remote Debug)", "type": "python", "request": "attach",

    "pathMappings": [ { "localRoot": "${workspaceRoot}", "remoteRoot": "/app/" } ], "port": 5678, "host": "127.0.0.1" } コンテナ内のパスと ローカルのパスの対応 ~/project/main.py /app/main.py デバッグ実行設定 .vscode/launch.json
  5. まとめ • 一般的なデバッグ実行 • Dockerコンテナへのデバッグ実行 ◦ デバッガ経由で実行に置き換える ◦ デバッガにTCPポートでアクセスする ◦

    コンテナ内のファイルシステムとの対応を記述する • Kubernetes上のコンテナへのデバッグ実行 ◦ replicas: 1 を使う ◦ デバッガに kubectl port-forward でアクセスする ◦ Bridge to Kubernetesを使い、 ローカルプロセスに通信を迂回させる 設定などの具体例はこちらに https://74th.booth.pm/items/3338895