2021年11月のMicrosoft Igniteで、 Azure Container Apps が発表されました。
コンテナ化されたアプリケーションをデプロイできるサーバレスなサービスです。
サーバレスということで使われていない間はゼロスケールして料金がかからなくなる(Azure Container Apps scale to zero and pause billing when not in use) 点が特徴だと思います。これは、類似するコンテナ系サービスと比べると 先行しているGCP CloudRunの持っている特徴でもあり、またAWS AppRunnerでは要望はあるもののまだ対応していないようです。
とりあえず使ってみました。
環境
2021年11月2日 時点のAzureポータル
構築手順
Quickstart: Deploy your first container app | Microsoft Docsのとおりですが、ここではAzureポータル画面からデプロイしてみます。
Azureポータルから「コンテナーアプリ」→「作成」
- Subscription: Azureのサブスクリプションを選択
- Resource group: 「Create new」ですきな名前をつけて作成
- Container app name: すきな名前をつける
- Container App environment: 「Create new」から、好みの設定で作成
他の設定はデフォルトでOKです。
「App Settings」で「Use quickstart image」を使うことで、サンプルとして用意されたコンテナイメージ(おそらくmcr.microsoft.com/azuredocs/containerapps-helloworld:latest
)がデプロイされます。コア数やメモリもサンプルとして最低限のものが自動的に選択されます。
「作成」すると、しばらくしたら適当なドメインが払い出されてデプロイが完了します。
以上です。たったこれだけの手順で、コンテナアプリケーションが簡単にデプロイできました。
ここではサンプルのコンテナイメージを使いましたが、手元でビルドしたイメージやAzure Container Registory等でビルドしたイメージを指定するだけで、インフラの構築等をすることなくコンテナアプリケーションをデプロイできます。
そのほか試してないけど気づいたこと
- ゼロにスケールすることもできるし、させないこともできる(Minimum number of replicas running for
your container app を設定できる)- https://docs.microsoft.com/ja-jp/azure/container-apps/scale-app
- 見た所、minReplicasの数がデフォルト
0
だけど最小値1
なので、ちょっと謎
- 「継続的デプロイ」からGitHubと連携してデプロイしたりできるようです
- スケールしたインスタンス数などのモニタリング指標の見方はよくわからない
- 「simply run as always-on background jobs」とのことなので、サーバレスなサービスによくあるタイムアウトの厳しさとかが無くバックグラウンドジョブ等にも使える?