Azure Container Appsを触ってみた

この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。

今年の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の構成は以下の通りです。

 

  1. Azure Container Apps 環境
    セキュリティで保護された境界線で、Azure Container Apps環境配下のコンテナは同じ仮想ネットワークにデプロイされる。
  2. Azure Container Apps
    Azure Container Apps 環境上のコンテナを動かす基盤、この単位でコンテナアプリを管理。
  3. リビジョン
    コンテナアプリのバージョンごとに作成される変更不可なスナップショット
    リビジョン内のコンテナのイメージが変更されるたびに、新しいリビジョンが作成される。
  4. コンテナ
    コンテナイメージから作成されたインスタンス、コンテナ毎に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を構築したので、その手順をざっと紹介したいと思います。

  1. Azureポータル画面の検索欄で[コンテナーアプリ]と検索し、Azure Container Appsの[作成]をクリック、[基本]の各種パラメータを入力、[次へ:アプリ設定>]をクリック。

  2. Container Apps環境の[新規作成]を押すと、以下の設定が可能。

  3. [アプリ設定]の各種パラメータを入力し、[確認と作成]をクリック。
  4. [作成]をクリック。作成が成功した場合、右下の画面が表示される。

まとめ

Azure Kubernetes Serviceも少し触ったことがあるのですが、Azure Kubernetes Serviceの方はkubectlで操作したり、yamlを記述したりとKubernetesの知見が一定必要なのに対し、Azure Container AppsはKubernetesの知見がそこまでなくてもGUIで色々と操作できそうだと感じました。
なので、運用のことを考えると、Kubernetesの知見がそこまで要求されないAzure Container Appsの方が運用しやすく、コストも低く抑えられるのではと個人的に考えています。

いいね (この記事が参考になった人の数:1)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください