genesis-aka.net
CNDT2021、クラウドネイティブなシステムにおけるデバッグ手法を紹介
CNCDT2021から、Visual Studio Codeを使ったKubernetesのデバッグ手法に関するセッションを紹介する。セッションを行ったのは、株式会社Mobility Technologiesのエンジニアの森下篤氏である。森下氏はサーバーサイドのエンジニアとしてタクシー配車アプリのGOの開発などに携わっているという。 セッションを行う森下篤氏 森下氏は一般的なアプリケーション、コンテナ、そしてKubernetes上で稼働するPod内のアプリケーションのデバッグなどについて解説を行った。 複数のプロセスが連携するアプリケーションを例に挙げて説明 このセッションは、複数のPodが連携するアプリケーションを例に挙げて、どうやってデバッグを行うのかについて具体的に解説する内容であると語った。そのための前提知識として、ローカルのアプリケーションやDockerコンテナのデバッグなどに関することも、おさらいという形で紹介した。 Kubernetesのデバッグの問題点を解説 ここでは、Kubernetesで実装されたアプリケーションにおいて発生する問題点について解説。特にローカルでは動くのにテスト環境のKubernetesでは動かないといった問題や、他のサービスとの連携が必要な場合においてはデバッグが難しいというポイントを紹介した。 森下氏は4つのパターンを挙げてそれぞれのコマンド例を使って紹介。 4つのパターンでデバッグ手法を解説 ここからローカルでのデバッグ、Dockerコンテナでのデバッグの解説をプログラミング言語に対応したコマンド例などを示しながら説明することで、実際にPythonとGoによるコマンドの違いなどについても紹介した。 Docker環境でのデバッグの注意点を解説 ここから、今回の焦点であるKubernetesで運用されている複数のPodの中でひとつのプロセスだけをデバッグする方法の解説に移った。 Kubernetes環境でのデバッグを解説 ここではローカルにデバッガとソースコードが存在し、テスト環境のクラスターのKubernetes上にPodが存在するという構成を前提としている。Podの中にデバッガと対象となるアプリケーションが存在している場合、ポートフォワードを使ってローカルのデバッガとPod内のデバッガが通信することで、ステップ実行や変数の確認などのデバッグ作業が可能になることを説明した。ここではKubernetesのDeploymentの設定によって複数のPodが実行されてしまうことを抑制するために、レプリカの数を1に設定することなどが操作上のポイントとして解説された。 実際にVisual Studio Codeを使ってデモを実施 デモでは実際にVisual Studio Codeを使ってVisual Studio Codeの設定ファイルの修正、ブレークポイントや変数の値の確認、実行までを紹介し、VisualContinue reading
GeneAka