Azure Container Appsにおいて選択できるネットワークオプションとパラメータを解説

# はじめに
3回に分けてAzure Container Apps（以下、ACA）の内部ネットワーク構造に注目し、深堀りしていきます。
以下の流れで説明していきます。

第1回目：Azure Container Appsにおける基本的なネットワークの概念を解説
第2回目：Azure Container Appsにおいて選択できるネットワークオプションとパラメータを解説
第3回目：Azure Container Appsにおけるパターンごとのネットワーク構成図を解説

今回は第2回目で、**ACAにおいて選択できるネットワークオプションとパラメータ**について解説していきます。

# 前回の記事

https://qiita.com/maplejava/items/e2ba406af12a018f03d8

# 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の設定が可能になる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/6158fdb9-481c-d7ec-4c1a-fa16ce7eaa9e.png)


### Revision
ACAの特定のバージョン（断面）のこと。
構成管理のための概念。

その他、ACAの基礎知識は以下の記事を参考にしてください。

https://qiita.com/maplejava/items/22a4b431d70e092b7d68

# ACAのネットワークオプション
ACAにおいて選択可能なネットワークオプションは以下の通り。
ACAEとACAどちらの設定値なのか、という点に注意が必要である。
以降では、各オプションにおいて選択可能なパラメータがどのような効果を持つのかを整理する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/0644704c-db58-190e-4aee-8bff4717eb65.png)

## 「 環境の種類 」オプション
比較的新しいパラメータである「ワークロード プロファイル」を選択すると価格モデルとしてハードウェア単位の課金を選択可能なほか、ネットワーク観点でも機能拡張がされている。
従量課金のみ：ACA自体がGAされた時から存在し、当初はこれしか選べなかった。
ワークロード：UDR&Azure firewall、NAT Gateway経由のOutbound通信をサポート。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/049bd37d-d0f0-55a1-c625-56dfc9d147a7.png)

## 「 仮想 IP 」オプション
インターネットに公開するかプライベート環境にするかを選択できるオプション。
「内部」パラメータは、例えばACAからプライベートエンドポイント経由でストレージアカウントにアクセスしたいケース等に使う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/b16b3079-5051-a3d3-2de6-39f3e7ac0db2.png)

## 「イングレス」 「 イングレス トラフィック 」オプション

### イングレス
ACAの「イングレス」タブの「イングレス」オプションを「有効」にすると、ACA内にイングレスが作成される。
Azure portalから作成する場合、初期状態で「イングレス」タブはない。「コンテナー」タブで「クイックスタート イメージを使用する」を無効化すると「イングレス」タブが出現する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/c2c4413a-0aa8-8353-e14d-2206e74c43e4.png)

### イングレス トラフィック
アプリに許可する通信を制御できるオプション。
「仮想IP」で「内部」を選択すると項番1と2のみが、「外部」を選択すると項番2と3のみが選択可能となる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/53a5287c-3b5a-3cb5-af40-5d09583c6934.png)

## 「 自分の仮想ネットワークを使用する 」オプション（VNet統合）
いいえ
- ACAE既定のオプション
- VNetを識別できないため、他のVNetやVPN、Express Routeを経由したプライベート接続は不可
- つまり、マネージドVNet構成のACAにはACAE内部、もしくはインターネット経由でアクセスする

はい
- VNet統合したACAは「 仮想IP 」オプションにてインターネット経由かプライベート接続かどちらか選択可能となる

VNet統合しないと、管理が容易で迅速にデプロイ可能であるため、開発やテスト環境での使用となると思う。
外部からのアクセスのみ必要で凝った設定がいらないシナリオではVNet統合しないという選択肢もあるが、基本的にはVnet統合した方が設定の自由度は上がる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475719/313aaf6d-b7c3-9e72-cff5-14d8efc5d4fb.png)

# おわりに
ACAにおいて選択できるネットワークオプションとパラメータの意味についてまとめてみました。ネットワークオプションについて、簡単にまとめると以下の通りです。
- ACAEの「仮想IP」の設定でインターネットに公開するか否かを選択する
- ACAの「イングレス トラフィック」にてインバウンド通信に対するアクセス制御ができる
- アウトバウンド通信に対するアクセス制御はAzure firewallによって可能だが「環境の種類」を「ワークロード プロファイル」にする必要がある

次回は上記でまとめたネットワークオプションのパターンごとのネットワーク構成図について解説していきます。