はじめに
3回に分けてAzure Container Apps(以下、ACA)の内部ネットワーク構造に注目し、深堀りしていきます。
以下の流れで説明していきます。
第1回目:Azure Container Appsにおける基本的なネットワークの概念を解説
第2回目:Azure Container Appsにおいて選択できるネットワークオプションとパラメータを解説
第3回目:Azure Container Appsにおけるパターンごとのネットワーク構成図を解説
今回は第1回目で、ACAにおける基本的なネットワークの概念について解説していきます。
ACAとは
- 2022年5月にGAした、コンテナベースのアプリケーションを簡単にデプロイ、管理、スケールできるサービス
- フルマネージドk8sベースのアプリケーションプラットフォーム
- k8sが提供する高い可用性、セキュリティ、スケーラビリティの恩恵を受けつつ、k8sの管理は不要
- KEDA、Dapr、EnvoyといったCNCFプロジェクトの成果物をマネージドサービスとして提供する
用語
Azure Container Apps Environment
Azure Container Apps Environment(以降、ACAE)は、ACAのインスタンスをホストするための論理的な境界。
ACAEは、アプリケーションが実行されるネットワーク、セキュリティ、およびリソースの設定を提供する。
ACAE内のアプリケーションは、同じリージョン内で物理的に近い場所に配置され、低遅延の通信を実現する。
ちなみに、Azure portalから作成する場合、ACAEの画面からACAEのみを新規作成することはできない(2024年7月初時点)。なので、ACAの作成画面にてACAEの「新規作成」を選択することでACAEの設定が可能になる。
Revision
ACAの特定のバージョン(断面)のこと。
構成管理のための概念。
その他、ACAの基礎知識は以下の記事を参考にしてください。
ネットワークについて整理しようと思ったきっかけ
以下のMSLearnの通り、ACAEとACAのネットワークオプションによって内部的なネットワーク構成やアプリの公開範囲が異なります。そこで、オプションごとのネットワーク構成の違いについて整理したと思ったのがきっかけです。
なお、以降は主にACA外との通信に使用するイングレスやロードバランサに焦点を当てていますが、マイクロサービス間の通信について興味のある方はDaprについても調べてみて下さい。
ACAの基本的なネットワーク構成
ポイント
- VNet統合していない場合は、VNetはユーザから非可視となる。 つまり、VNet統合しないとVNetに関して何か設定することは一切できない
- イングレス(Envoy)は、ACAと同時に作成され、ACA内のコンテナ間で通信を負荷分散するコンポーネント。 実態としてはACA内に存在するPodの一つ
- ロードバランサは、ACAEと同時に作成され、ACAE内のACA間で通信を負荷分散するAzureリソース
「イングレス」と「ロードバランサ」の違い
イングレスもロードバランサもどちらも負荷分散に関するコンポーネントですが、上記のポイントの通り役割が異なります。
また、ロードバランサはACAEをパブリック設定にした場合は1つ作成されますが、プライベート設定にした場合、インバウンド通信用とアウトバウンド用で2つ作成されるという違いがあります。
「イングレス エンドポイント」と「アプリケーションURL」の違い
上記に関連して混同しやすい概念を説明します。
イングレス エンドポイント
例えば「/api」パスを指定するなど、アプリケーションの中でもイングレスによるルーティングが必要な、特定のサービスにアクセスするために利用する。
例)https://azfooaca-aca01--s2nydbk.redgrass-bb786982.japaneast.azurecontainerapps.io
アプリケーションURL
application URLはACAのアプリケーション全体にアクセスするために利用するURL。
例)https://azfooaca-aca01.redgrass-bb786982.japaneast.azurecontainerapps.io
使い分け
バックエンドのアプリ間で処理をする場合や特定のサービスにアクセスする場合は「イングレス エンドポイント」を使う。
ユーザ等がフロントエンドにアクセスする場合には「アプリケーションURL」を使う。
おわりに
ACAの基本的なネットワークの概念についてまとめてみました。
次回はACAにおいて選択できるネットワークオプションとパラメータの意味について解説していきます。