Tomcat ルート デプロイメントが Kubernetes (AKS) で機能しない

Tomcat ルート デプロイメントが Kubernetes (AKS) で機能しない

Kubernetes 上の Tomcat に Java .war アプリケーションをデプロイする際に問題が発生しています。

tomcat:8.5.40-jre8 に基づく Docker イメージがあり、2 つの Tomcat .war Web アプリケーションが含まれています。1 つは ROOT にあり、もう 1 つは独自のパスにあります。この Docker イメージを Mac でローカルに取得して実行すると、すべて正常に動作します。ただし、このイメージを Microsoft Azure Kubernetes サービスに展開すると、ROOT Web アプリケーションは 404 でのみ応答します。実行中のコンテナーにターミナルを接続すると、Tomcat が .war ファイルを解凍したことがわかります。

この問題は、Azure ポータルを使用して Kubernetes のバージョンを更新したときに発生し始めましたが、より低いバージョンで 2 番目の Azure Kubernetes サービスを作成しても、問題は依然として存在します。

ネットワークの問題ではないようです。Kubernetes で実行中のイメージにターミナルを接続して curl localhost を実行すると 404 が表示されますが、ローカル マシンで同じ操作を実行すると、期待どおりのページが表示されます。

同じ Docker イメージは以前にも動作しており、クラスターは現在もほぼ同一の別のサービスを問題なく実行しています。

Docker イメージが自分のマシンでは動作するのにもかかわらず、AKS にデプロイすると動作しないのはなぜでしょうか?

ご協力いただければ幸いです。よろしくお願いいたします。

答え1

アプリケーションの起動時に ClassNotFoundException が発生していたことが判明しました。このため、Kubernetes のアップグレード後にアプリケーションを起動できなくなりました。

tomcat の localhost ログで見つかったエラーを修正した後、アプリケーションが再び実行されます。

関連情報