Azure Container Apps (preview) の Quickstarts を試してみる

# はじめに
Azure Container App (preview) の Quickstarts を試してみたいと思います。

# Azure Container Apps とは
Microsoft Ignite ( 2021.11 ) で発表されたサーバーレスプラットフォームでマイクロサービスとコンテナ化されたアプリケーションを実行できるフルマネージドサーバーレスコンテナサービスです。Azure Container Apps の一般的な用途は以下の通りです。

- API エンドポイントのデプロイ
- バックグラウンド処理アプリケーションのホスティング
- イベント駆動型処理のハンドリング
- マイクロサービスの実行

Azure Container Apps で構築されたアプリケーションは、次の特性に基づいて動的にスケールすることができます。

> Azure Container Apps : シナリオ例
>
> <img width="800" alt="image.png (45.9 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/00b51b6b-a5ba-432e-bfa7-763c27c45d01.png">

また、Azure Container Apps は、ランタイムやプログラミングモデルに依存することなく、
任意のコンテナ上でパッケージ化されたアプリケーションコードを実行できます。

- HTTP トラフィック
- イベント駆動型処理
- CPU または メモリ の負荷
- 任意の KEDA (Kubernetes Event-Driven Autoscaling) でサポートされているスケーラー

# 制限事項
Azure Container Apps には次の制限事項があります。

- **特権コンテナー** : 特権コンテナーを実行できません。
- **オペレーションシステム** : Linux ベースのコンテナイメージが必要です。

[制限事項 | Azure Container Apps](https://docs.microsoft.com/ja-jp/azure/container-apps/containers#limitations)

# Azure コンテナオプションの比較

- Azure App Service
- Azure Container Instances
- Azure Kubernetes Service
- Azure Functions
- Azure Spring Cloud

[Container Apps と他の Azure コンテナーオプションの比較](https://docs.microsoft.com/ja-jp/azure/container-apps/compare-options)

# クイックスタート
## Azure Portal を使用して最初のコンテナーアプリをデプロイする

Azure Portal を開き、**[コンテナーアプリ]** を検索します。

<img width="800" alt="image.png (200.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/200fe433-e2d2-4338-bec7-f4ea7f77072e.png">

[コンテナーアプリ] ページに遷移後、**[コンテナーアプリの作成]** ボタンを押します。

<img width="800" alt="image.png (216.3 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/c8eadf50-0750-4f1b-be9d-a4ef479884b4.png">

基本タブで、**[プロジェクトの詳細]** を入力します。

<img width="800" alt="image.png (110.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/303ebcfe-166f-4fcd-b2f5-5b2be7a9952d.png">

| 設定 | 値 |
| --- | --- |
| サブスクリプション | 使用する Azure サブスクリプションを選択 |
| リソースグループ | デプロイするリソースグループを選択 |
| コンテナー アプリ名 | コンテナアプリの名前を入力 ( 任意 : ``my-container-app`` ) |

続いて、コンテナーアプリ環境を新規作成していきます。
**[コンテナーアプリ環境] > [新規作成]** ボタンを押します。

<img width="800" alt="image.png (213.7 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/84c18cb1-c274-439f-b11f-e2a2ae5397eb.png">

[コンテナーアプリ環境の作成] ページに遷移後、**環境の詳細** を設定します。

<img width="800" alt="image.png (77.4 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/75ee3318-19ad-4bae-a1d5-f383e91e6016.png">

| 設定 | 値 |
| --- | --- |
| 環境名 | コンテナーアプリの環境名 ( 任意 : ``my-environment`` ) |
| リージョン | リージョンを選択 ( 任意 : ``Canada Central`` ) |

※ 指定可能なリージョンは、2022年2月26日現在、以下5つです。

- East US
- North Europe
- Canada Central
- East US 2
- West Europe

公式ドキュメントでは、なぜかカナダ中部 (``Canada Central``) が指定されているので、
一旦公式ドキュメント通りに進めてみます。

次に、**[監視]** タブを選択して、**ログ分析 > Log Analytics ワークスペース** を新規作成します。

<img width="800" alt="image.png (198.0 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/75453da5-61b8-4bcc-a17f-8cf4669514ba.png">

Log Analytics ワークスペースの名前を入力し、OK ボタンを押します。

<img width="800" alt="image.png (241.4 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/f18a4b75-a8f6-42d1-ae6e-8a6463f5873d.png">

コンテナーアプリ環境の作成ページに戻り、Create ボタンを押します。
( なぜか UI 表示が少し崩れますが、Preview ということでスルーします )

<img width="800" alt="image.png (97.5 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/b0ce2494-3dd3-46b1-9944-eea95c481229.png">

コンテナーアプリの環境の新規作成が完了すると、
再び **[コンテナーアプリの作成]** ページに戻ります。

もう一度、プロジェクトの詳細、コンテナーアプリ環境の設定を確認し、
**[確認と作成]** ボタンを押します。

<img width="600" alt="image.png (173.9 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/320ca161-2432-4972-beaf-fb96e0719bb4.png">

設定項目の検証が完了したら、合格と表示されます。

<img width="600" alt="image.png (148.2 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/e1955ad9-cfe0-4ef1-8f17-68e2608a406b.png">

上記の画面表示を確認すると、**[アプリ設定]** タブで
コンテナーのイメージを指定することができるようなので、
興味本位で **[アプリ設定]** タブを開いてみます。

<img width="900" alt="image.png (99.3 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/7cc6a1a9-8b02-42cd-82aa-f0e04285f714.png">

さらっと確認したところ、**[クイックスタートイメージを使用する]** にチェックを入れた場合は、クイックスタート用のイメージ : ``Simple hello world container`` のみ選択可能なようです。また、こちらのチェックを外すと、任意のコンテナーイメージを指定する事が可能です。コンテナーイメージのソースは、``Azure Container Registry`` / ``Docker Hub またはその他のレジストリ`` から選択可能になっています。

<img width="900" alt="image.png (142.7 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/d2e0b311-b8a4-4d1c-8295-db067d2f5624.png">

今回は最後までクイックスタートを試したいので、元の設定に戻します。
[確認と作成] タブを選択し、**[作成]** ボタンを押します。

<img width="600" alt="image.png (98.9 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/daf36839-84a3-4d2a-bc21-5382cd15e486.png">

デプロイは約1分ほどで完了します。
デプロイ完了後、Azure Container Apps リソースページへ移動します。
**[概要]** ページに アプリケーションURL が表示されるので、リンクをクリックします。

<img width="900" alt="image.png (177.0 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/ffb4a340-27ba-4804-b7a8-dcedc1db93bc.png">

クイックスタートのコンテナーイメージがデプロイされていました！

<img width="900" alt="image.png (61.8 kB)" src="https://img.esa.io/uploads/production/attachments/3505/2022/02/26/10862/f18baecb-c4a3-4b06-9e5d-5200f9d7ec24.png">

# おわりに
という訳で、前から気になっていた Azure Container Apps (preview) を少し触ってみました。
個人的には、動的なスケーリングが気になっているので、これを気に調査をしていきたいと思います。

# 参考文献
- [クイックスタート : Azure Portal を使用して最初のコンテナーアプリをデプロイする](https://docs.microsoft.com/ja-jp/azure/container-apps/quickstart-portal)
- [Introducing Azure Container Apps: a serverless container service for running modern apps at scale](https://techcommunity.microsoft.com/t5/apps-on-azure-blog/introducing-azure-container-apps-a-serverless-container-service/ba-p/2867265?ocid=AID3042118)
- [Microsoft、コンテナをサーバーレスで実行する「Azure Container Apps」発表](https://www.itmedia.co.jp/news/articles/2111/04/news081.html)