汎用のサーバーレス コンテナー プラットフォームを提供する Azure サービス。
こんにちは kei,
Microsoft Q&A プラットフォームへようこそ。 ご質問いただきありがとうございます。
ご質問の現象は、Container Apps 環境が 「従量課金のみ (Consumption only)」 のプランで作成されており、そこに NAT Gateway を関連付けたことが原因で発生している可能性が高いです。
Azure Container Apps の公式ドキュメントにおけるネットワーク仕様の制限によるもので、コントロールプレーンの通信が NAT Gateway によってブロックまたは適切にルーティングされなくなり、コンテナーの管理情報(リビジョンやレプリカの状態)が取得できなくなるという典型的な事象です。
原因
Azure Container Apps の環境タイプには以下の2つがありますが、NAT Gateway のサポート状況が異なります。
- ワークロード プロファイル (Workload profiles): NAT Gateway によるエグレス(送信ネットワーク)の固定や、ユーザー定義ルート (UDR) が サポートされています。
- 従量課金のみ (Consumption only): 従来の環境タイプであり、NAT Gateway、UDR、その他のカスタムエグレスによる送信は サポートされていません。
「従量課金のみ」の環境のインフラストラクチャサブネットは、Azureが管理するデフォルトのシステムルートを保持している必要があります。 ここに NAT Gateway を紐付けると、プラットフォームの管理トラフィック(ポータルや Terraform との通信など)を含むすべての送信トラフィックが強制的に NAT Gateway 経由になり、Azure の管理エンドポイントに到達できなくなるため、コンソールのエラーや 412 Precondition Failed が発生します。
解決策
この問題を解決するには、以下のいずれかの対応を行う必要があります。
- 「ワークロード プロファイル」環境で再作成する(推奨)
NAT Gateway を利用して送信元 IP アドレスを固定するなどの要件がある場合は、Container Apps 環境を 「ワークロード プロファイル (Workload profiles)」 で新規作成してください。 ワークロード プロファイル環境であれば、公式に NAT Gateway がサポートされているため、サブネットに NAT Gateway を関連付けてもコントロールプレーンの通信が阻害されず、正常に状態を取得・更新できます。 ※ 最低限必要なサブネットのサイズは /27 となります。
- サブネットから NAT Gateway の関連付けを解除する
環境の作り直しが難しく「従量課金のみ」環境を引き続き使用したい場合は、対象のインフラストラクチャサブネットから NAT Gateway の関連付けを解除してください。
参考となる公式ドキュメント:
- Azure Container Apps 環境でのネットワーク (環境の選択) ドキュメント内の表で、「従量課金のみ (レガシ)」は NAT Gateway 経由のエグレスをサポートしていない旨が明記されています。