今年の5月にMicrosoft BuildでGAが発表されたAzure Container Appsについて、少し触ってみたのでここでまとめていけたらと思います。
Azure Container Appsの特徴
Azure Container Appsの特徴としては以下があります。
現状はLinuxベースのコンテナしかサポートされていない点は注意が必要ですが、Azure Kubernetes Serviceをよりマネージド化したサーバレスなコンテナ基盤だと思うので、今後使われる機会が増えてくるのではと個人的に期待しています。
- コンテナを動かすことが可能なサーバレスなプラットフォーム
- Daprが統合されているので、マイクロサービスアプリケーションの作成を簡略化することが可能
- 自動スケーリングや自動ヒーリング、イングレスなど、Azure Kubernetes Serviceに含まれているような機能も利用可能
- Kubernetes APIを操作することは不可、基本yamlは使わず、GUIもしくはAzureのPowershellコマンドで設定を行う形
- サポートされているコンテナイメージはLinux ベース(x86-64)の コンテナーイメージのみ
Azure Container Appsの構成
Azure Container Appsの構成は以下の通りです。
- Azure Container Apps 環境
セキュリティで保護された境界線で、Azure Container Apps環境配下のコンテナは同じ仮想ネットワークにデプロイされる。 - Azure Container Apps
Azure Container Apps 環境上のコンテナを動かす基盤、この単位でコンテナアプリを管理。 - リビジョン
コンテナアプリのバージョンごとに作成される変更不可なスナップショット
リビジョン内のコンテナのイメージが変更されるたびに、新しいリビジョンが作成される。 - コンテナ
コンテナイメージから作成されたインスタンス、コンテナ毎にCPUコア数とメモリを設定可能
※リビジョン内のコンテナの合計CPUコア数が最大2コア、合計メモリが最大4GiBまでしか設定できない
リビジョンについて
リビジョンの概要
リビジョンについて、少し分かりにくいところなので、追加で説明します。
リビジョンはコンテナイメージを更新するたびに既存のリビジョンを残したまま、新しいリビジョンが作成されるため、バージョンの管理が主な役割かと思います。また、リビジョン単位でHTTPトラフィックを分割するといった機能があります。
例えばリビジョン1に対してトラフィックを80%割り振り、リビジョン2に対してトラフィックを20%割り振るといった設定を行うことができます。
この機能により、段階的に新しいバージョンを導入するブルーグリーンデプロイでデプロイしたり、新しいバージョンで障害が発生した場合、切り戻しを容易に行うことができます。
リビジョンが新規作成される条件
リビジョンが新規作成される条件は、コンテナイメージを含む以下のリビジョンスコープが変更された場合です。
反対に、以下のアプリケーションスコープが変更された場合はリビジョンが新規作成されません。
アプリケーションスコープはリビジョン単位ではなく、Azure Container Apps単位の変更のためかと思います。
リビジョンスコープ
- リビジョンサフィックス
- コンテナの構成とイメージ
- コンテナのスケールルール
アプリケーションスコープ
- シークレット値
- リビジョンモード
- イングレスのオン、オフの切り替え
- トラフィックの分割ルール
- ラベル
- プライベートコンテナレジストリの資格情報
- Dapr設定
リビジョンモード
リビジョンモードで以下を設定できます。
- 単一リビジョン:Azure Container Apps上で単一のリビジョンのみ動かす。
- 複数リビジョン:Azure Container Apps上で複数のリビジョンを同時に動かす。トラフィック分割ルールを利用する場合はこちらのモードを選択する必要あり。
リビジョンのラベル
リビジョンでラベルを設定すると、ラベルURLが発行されます。これはトラフィックを特定のリビジョンに誘導する際に利用することができます。
例えば、新しいリビジョンを作成した後、全体には解放せず、特定のテストユーザにのみ解放する場合などはラベルURLを発行して、そのURLを案内してテストしてもらうなどができるかと思います。
ラベルURLからアクセスする際は、トラフィック分割が0%の状態でもアクセスは可能です。
Azure Container Appsの構築
ここからは実際にAzure Container Appsを構築したので、その手順をざっと紹介したいと思います。
- Azureポータル画面の検索欄で[コンテナーアプリ]と検索し、Azure Container Appsの[作成]をクリック、[基本]の各種パラメータを入力、[次へ:アプリ設定>]をクリック。
- Container Apps環境の[新規作成]を押すと、以下の設定が可能。
- [アプリ設定]の各種パラメータを入力し、[確認と作成]をクリック。
- [作成]をクリック。作成が成功した場合、右下の画面が表示される。
まとめ
Azure Kubernetes Serviceも少し触ったことがあるのですが、Azure Kubernetes Serviceの方はkubectlで操作したり、yamlを記述したりとKubernetesの知見が一定必要なのに対し、Azure Container AppsはKubernetesの知見がそこまでなくてもGUIで色々と操作できそうだと感じました。
なので、運用のことを考えると、Kubernetesの知見がそこまで要求されないAzure Container Appsの方が運用しやすく、コストも低く抑えられるのではと個人的に考えています。