4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

非常に魅力的なプラットフォームであるAzure Container Apps(以降、ACA)についてMS公式のチュートリアルを通して概要を整理していきます。

ACAとは

  • 2022年5月にGAした、コンテナベースのアプリケーションを簡単にデプロイ、管理、スケールできるサービス
  • フルマネージドk8sベースのアプリケーションプラットフォーム
  • k8sが提供する高い可用性、セキュリティ、スケーラビリティの恩恵を受けつつ、k8sの管理は不要
  • KEDA、Dapr、EnvoyといったCNCFプロジェクトの成果物をマネージドサービスとして提供する
  • 内部的にはAzure Kubernetes Service (AKS) を使用している

※AKSについては以前の記事を参照。

AKSとの違い

AKS:k8sAPI使いたい、k8sの設定自由度を確保したいならAKSを使うべき。
ACA:k8sAPIは意識しない。k8sの機能は使いたいけどクラスターの管理とかはしたくない人向けの便利なプラットフォーム。

なので、k8sが提供する高い可用性、セキュリティ、スケーラビリティの恩恵を受けたいがk8sの管理が大変、そもそもk8sを勉強するのが難しい、k8s開発スピード早すぎてついていけないという人にACAがおすすめ。

参考

用語

Azure Container Apps Environment

Azure Container Apps Environment(以降、ACAE)は、ACAのインスタンスをホストするための論理的な境界。
ACAEは、アプリケーションが実行されるネットワーク、セキュリティ、およびリソースの設定を提供する。
ACAE内のアプリケーションは、同じリージョン内で物理的に近い場所に配置され、低遅延の通信を実現する。
内部的には、AKSのAKSクラスターに該当する。
ちなみに、Azure portalから作成する場合、ACAEの画面からACAEのみを新規作成することはできない(2024年7月初時点)。なので、ACAの作成画面にてACAEの「新規作成」を選択することでACAEの設定が可能になる。

image.png

Revision

ACAの特定のバージョン(断面)のこと。
構成管理のための概念。

利用シナリオ

  • ウェブアプリケーション、API、バックエンドサービスなど、幅広いアプリケーションに適用可能
  • イベントドリブンな処理や、マイクロサービスアーキテクチャを採用したアプリケーションの開発に適している

image.png

価格モデル

  • 従量課金モデルとインスタンス専有モデル(ハードウェア単位の課金体系)がある
  • インスタンス専有モデルの場合、 ACAEの作成時に以下のような画面にてホストのサイズを選択可能となる

image.png

多様なユースケースに対応したチュートリアル

Azure CLIからcontainer upコマンドで簡単デプロイ

image.png
Azure CLIを使ったチュートリアルは、ただ試すだけなら、Azure portalのCloud Shellから実施するのが環境設定等がほとんど不要なのでおすすめ。

Dapr統合されたアプリの簡単デプロイ

image.png

Quarkusアプリの簡単デプロイ

ACAにおけるコンテナのライフサイクル

  • ACAではコンテナはRevisionを基に管理される
  • コンテナにはdeployment、update、deactive、shutdownの4つのフェーズがある

Deployment

image.png
コンテナアプリがデプロイされると最初のrevisionが自動的に作成される。

Update

image.png
コンテナアプリがRevision scopeで更新された場合、新しいrevisionが作成される。

古いrevisionを自動的に非アクティブにするモード(単一revisionモード)と使用可能なままにする複数revisionモードを選択できる(画像の例は複数revisionモード)。

※Revision Scopeとapplication scope

コンテナアプリに対する変更の内容によって、新規にRevisionが作成されるのか、既存revisionへの変更のみ(新規でRevisionの作成はされない)なのがか決まっており、それぞれRevision Scopeとapplication scopeという。

Revision Scope:containerイメージや設定の変更など
application scope:secretの変更やIngress設定、Daprの設定など

Deactive

image.png
Revisionが不要になったら非アクティブ化できる。

Shutdown

シャットダウンが開始されると、コンテナー ホストは SIGTERM メッセージをコンテナーに送信します。 コンテナーに実装されているコードでは、このオペレーティング システム レベルのメッセージに応答して終了処理をすることができます。

アプリケーションが 30 秒以内にSIGTERMメッセージに応答しない場合、SIGKILL でコンテナーが終了します。

ACAでHelloworldアプリをデプロイする

こういうチュートリアルをやるときまずどんなアプリケーションを載せるんだろうというのが最初に気になるので、見ていくと以下のコマンドに書いてあった。

image.png

—image mcr.microsoft.com/azuredocs/containerapps-helloworld:latest \

デフォルトではDockerHubからプルされるが、いまはMCR(MS公式のコンテナーレジストリ)から持ってくる設定であった。
Microsoft Artifact Registry(MCR)

image.png

デプロイ準備

HelloworldアプリをAzure potralのcloudshellで作ってみる。

CLI 用の Azure Container Apps 拡張機能をインストールまたは更新

az extension add --name containerapp --upgrade

名前空間の登録

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Microsoft.App:ACAの名前空間

Microsoft.OperationalInsights:Log Analyticsワークスペースの名前空間

ContainerAppsのデプロイ

もうデプロイできちゃうの!?

az containerapp up \
  --name az-foo-container-app01 \
  --resource-group AZ-foo \
  --location japaneast \
  --environment 'AZ-foo-container-app' \
  --image mcr.microsoft.com/azuredocs/containerapps-helloworld:latest \
  --target-port 80 \
  --ingress external \
  --query properties.configuration.ingress.fqdn

オプションの意味(ChatGPT)

containerappsのnameオプションでは大文字指定してはいけない。

  1. -environment 'my-container-apps': Azure Container Appsの環境(Environment)を指定します。これはアプリケーションを実行するためのコンテナ化された環境を示します。**my-container-apps**は独自の環境名です。
  2. -target-port 80: コンテナがリッスンするポート番号を指定します。この場合、ポート80が指定されています。
  3. -ingress external: Ingress(トラフィックの入口)の設定を指定します。**external**を指定すると、外部からのトラフィックを受け入れるように設定されます。
  4. -query properties.configuration.ingress.fqdn: コマンドの出力結果から特定の情報をクエリして取得するためのオプションです。この場合、コンテナアプリのIngressの完全修飾ドメイン名(FQDN)を取得し、出力として返します。

実行結果

MSLearnに書いてある通りの順番で作成されている。あれば使って、なければ作るという仕様のようだ。

  • リソース グループの作成
  • Container Apps 環境を作成する
  • Log Analytics ワークスペースの作成
  • パブリック コンテナー イメージを使用してコンテナー アプリを作成してデプロイする

image.png

environment, Log Analytics workspace, container appsが作成されている。
ACAE
image.png
Log Analytics
image.png
ACA
image.png

アプリが動いていることが確認できた!
image.png

おわりに

今回は非常に便利なACAについてまとめてみました。
カンタンにマイクロサービスの基盤を構築できるので、皆さんも是非使ってみてください!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?