Azure Container Appsは、独自の仮想ネットワークを実行する environment のコンテキストで動作します。 環境を作成するときに、いくつかの重要な考慮事項によって、コンテナー アプリのネットワーク機能 (環境の種類、仮想ネットワークの種類、アクセシビリティ レベル) が通知されます。
環境の選択
Container Apps には、2 種類の 環境があります。 同じネットワーク特性の多くを共有し、いくつかの重要な違いがあります。
| 環境の種類 | サポートされるプランの種類 | 説明 |
|---|---|---|
| ワークロード プロファイル (既定) | 従量課金、専用 | ユーザー定義ルート (UDR)、Azure NAT Gateway経由のエグレス、コンテナー アプリ環境でのプライベート エンドポイントの作成をサポートします。 必要な最小サブネット サイズは /27 です。 |
| 従量課金のみ (レガシ) | 従量課金 | UDR、Azure NAT Gateway経由のエグレス、リモート ゲートウェイ経由のピアリング、またはその他のカスタム エグレスはサポートされません。 必要な最小サブネット サイズは /23 です。 |
詳細については、「環境の 種類」を参照してください。
仮想ネットワークの種類
既定では、Container Apps は Azure ネットワークと統合されています。このネットワークはインターネット経由でパブリックにアクセスでき、インターネットからアクセスできるエンドポイントとのみ通信できます。 代わりに、環境を作成するときに既存の仮想ネットワークを提供することもできます。 既定のAzure ネットワークまたは既存の仮想ネットワークを使用して環境を作成した後、ネットワークの種類を変更することはできません。
次のようなAzureネットワーク機能が必要な場合は、既存の仮想ネットワークを使用します。
- ネットワーク セキュリティ グループ。
- Azure Application Gateway との統合。
- Azure Firewall との統合。
- コンテナー アプリからの送信トラフィックを制御します。
- 仮想ネットワーク内のプライベート エンドポイントの背後にあるリソースへのアクセス。
既存の仮想ネットワークを使用する場合は、デプロイする Container Apps 環境専用のサブネットを提供する必要があります。 このサブネットは、他のサービスでは使用できません。 詳細については、「 仮想ネットワークの構成」を参照してください。
アクセシビリティ レベル
コンテナー アプリで、環境レベルで仮想ネットワーク内からのみパブリック イングレスまたはイングレスを許可するかどうかを構成できます。
| アクセシビリティ レベル | 説明 |
|---|---|
| 外部 | コンテナー アプリは、パブリック要求を受け入れます。 外部環境は、外部の公開 IP アドレスに仮想 IP を使用してデプロイされます。 |
| 内部 | 内部環境にはパブリック エンドポイントがなく、内部 IP アドレスにマップされた仮想 IP でデプロイされます。 内部エンドポイントは、Azure内部ロード バランサーです。 IP アドレスは、既存の仮想ネットワークのプライベート IP アドレスの一覧から発行されます。 |
公衆ネットワーク アクセス
パブリック ネットワーク アクセスの設定によって、Container Apps 環境にパブリック インターネットからアクセスできるかどうかが決まります。 環境の作成後にこの設定を変更できるかどうかは、環境の仮想 IP の構成によって異なります。 次の表では、環境の仮想 IP 構成に基づく、公衆ネットワーク アクセスの有効な値を示します。
| 仮想 IP | サポートされている公衆ネットワーク アクセス | 説明 |
|---|---|---|
| 外部 |
Enabled、Disabled |
Container Apps 環境は、インターネットにアクセスできるエンドポイントを使用して作成されました。 パブリック ネットワーク アクセスの設定によって、トラフィックをパブリック エンドポイント経由で受け入れるか、プライベート エンドポイント経由でのみ受け入れるかが決まります。 この設定は、環境の作成後に変更できます。 |
| 内部 | Disabled |
Container Apps 環境は、インターネットにアクセスできるエンドポイントなしで作成されました。 パブリック ネットワーク アクセスの設定を変更して、インターネットからのトラフィックを受け入れることはできません。 |
Container Apps 環境でプライベート エンドポイントを作成するには、パブリック ネットワーク アクセスを Disabled に設定する必要があります。
Azureネットワーク ポリシーは、パブリック ネットワーク アクセスのフラグでサポートされています。
イングレスの構成
イングレス セクションでは、次の設定を構成できます。
コンテナー アプリのイングレスを有効または無効にします。
任意の場所または同じ Container Apps 環境内からのみ、コンテナー アプリへのトラフィックを受け入れます。 内部環境では「どこでも」とは仮想ネットワーク内のどこでも、パブリックエンドポイントが存在しないためを指します。 詳細については、「 イングレスの可視性と環境タイプとの相互作用」をご覧ください。
アプリケーションのリビジョン間でトラフィック分割ルールを定義します。 詳細については、「トラフィックの分割」を参照してください。
ネットワーク シナリオの詳細については、「ingress in Azure Container Apps」を参照してください。
受信時の機能
| 特徴 | 方法を学ぶ |
|---|---|
|
イングレス イングレスを構成する |
コンテナー アプリへの外部トラフィックと内部トラフィックのルーティングを制御します。 |
| プレミアム イングレス | イングレスとアイドル タイムアウトのワークロード プロファイルのサポートなど、高度なイングレス設定を構成します。 |
| IP 制限 | IP アドレスによってコンテナー アプリへの受信トラフィックを制限します。 |
| クライアント証明書認証 | コンテナー アプリのクライアント証明書認証 (相互 TLS または mTLS とも呼ばれます) を構成します。 |
|
トラフィックの分割 Blue/Green デプロイメント |
コンテナー アプリのアクティブなリビジョン間で受信トラフィックを分割します。 |
| セッション アフィニティ | クライアントからコンテナー アプリの同じレプリカにすべての要求をルーティングします。 |
| クロスオリジン リソース共有 (CORS) | コンテナー アプリの CORS を有効にします。これにより、ブラウザー経由でページの配信元と一致しないドメインに対して行われた要求が許可されます。 |
| パスベースのルーティング | ルールを使用して、各要求のパスに応じて、環境内のさまざまなコンテナー アプリに要求をルーティングします。 |
| 仮想ネットワーク | Container Apps 環境の仮想ネットワークを構成します。 |
| DNS | Container Apps 環境の仮想ネットワークの DNS を構成します。 |
| プライベート エンドポイント | プライベート エンドポイントを使用して、パブリック インターネットに公開せずにコンテナー アプリに安全にアクセスします。 |
| Azure Front Door との統合 | パブリック インターネットではなくプライベート リンクを使用して、Azure Front Doorからコンテナー アプリに直接接続します。 |
送信時の機能
| 特徴 | 方法を学ぶ |
|---|---|
| Azure Firewall の使用 | Azure Firewall を使用して、コンテナー アプリからの送信トラフィックを制御します。 |
| 仮想ネットワーク | Container Apps 環境の仮想ネットワークを構成します。 |
| ネットワーク セキュリティ グループを使用した既存の仮想ネットワークのセキュリティ保護 | ネットワーク セキュリティ グループを使用して、Container Apps 環境の仮想ネットワークをセキュリティで保護します。 |
| Azure NAT ゲートウェイ統合 | Azure NAT Gatewayを使用して、ワークロード プロファイル環境の仮想ネットワーク内の送信インターネット接続を簡略化します。 |
ハウツー記事
| [アーティクル] | 方法を学ぶ |
|---|---|
| Azure Container Apps 環境に仮想ネットワークを提供する | 仮想ネットワークを使用します。 |
| Application Gateway でWeb Application Firewallを使用してAzure Container Appsを保護する | Azure Application GatewayでAzure Web Application Firewallを構成します。 |
| ユーザー定義ルートを使用してAzure Container Appsの送信トラフィックを制御します | UDR を有効にします。 |
| Azure Container Apps で mTLS を使用する | Container Apps で mTLS アプリケーションをビルドします。 |
| Azure Container Apps環境でプライベート エンドポイントを使用します | プライベート エンドポイントを使用して、パブリック インターネットに公開せずにコンテナー アプリに安全にアクセスします。 |
| パブリック インターネットではなくプライベート リンクを使用して、Azure Front Doorからコンテナー アプリに直接接続します。 |
環境のセキュリティ
次のアクションを実行することで、イングレスおよびエグレス ネットワーク トラフィックのワークロード プロファイル環境をセキュリティで保護できます。
ワークロード プロファイル環境で内部 Container Apps 環境を作成します。 手順については、「Azure CLI を使用してワークロード プロファイルを管理する」を参照してください。
Container Apps と Application Gateway を統合します。
すべてのトラフィックを Azure Firewall 経由でルーティングするように UDR を構成します。
HTTP エッジ プロキシの動作
Azure Container Appsは、TLS を終了し、各アプリケーションに要求をルーティングするエッジ HTTP プロキシを使用します。
HTTP アプリケーションは、HTTP の要求と接続の数に基づいてスケーリングされます。 Envoy は、内部トラフィックをクラスターの内部でルーティングします。
ダウンストリーム接続では、HTTP/1.1 と HTTP/2 がサポートされます。 Envoy は、クライアント接続にアップグレードが必要な場合に、接続を自動的に検出してアップグレードします。
アップストリーム接続を定義する場合は、transport オブジェクトに プロパティを設定します。
ポータルの依存関係
Container Apps のすべてのアプリには、2 つの URL があります。
Container Apps ランタイムは、最初にアプリへのアクセスに使用される完全修飾ドメイン名 (FQDN) を生成します。 コンテナー アプリの FQDN を取得するには、Azure ポータルでコンテナー アプリに移動します。 [ 概要 ] ウィンドウの FQDN は アプリケーション URL の値です。
2 つ目の URL も自動的に生成されます。 この場所は、ログ ストリーミング サービスとコンソールへのアクセスを許可します。 必要に応じて、ファイアウォールまたはプロキシの許可リストに https://azurecontainerapps.dev/ を追加します。
ポートと IP アドレス
受信接続では、次のポートが公開されます。
| プロトコル | ポート |
|---|---|
| HTTP/HTTPS | 80、443 |
IP アドレスには、次の種類があります。
| タイプ | 説明 |
|---|---|
| パブリック インバウンド IP | 外部デプロイのアプリケーション トラフィックと、内部デプロイと外部デプロイの両方の管理トラフィックに使用されます。 |
| アウトバウンド パブリック IP | 仮想ネットワークから出ていくアウトバウンド接続の "発信元" IP として使用されます。 これらの接続は VPN 経由ではルーティングされません。 送信 IP は、時間の経過と同時に変化する可能性があります。 Container Apps 環境からの送信トラフィックにAzure NAT Gatewayまたはその他のプロキシを使用することは、workload プロファイル環境でのみサポートされます。 |
| 内部ロードバランサーのIP | 内部環境にのみ存在します。 |