Azure Container Apps は、Distributed Application Runtime (Dapr) (分散型アプリケーション ランタイム) を使用する API を提供しています。シンプルで移植性が高く、回復性があり、セキュリティで保護されたマイクロサービスを作成して実装する際に、これらが役立ちます。 Dapr は、抽象化レイヤーとして機能する Azure Container Apps と連携し、メンテナンスが少なくて済むスケーラブルなプラットフォームを実現するのに役立ちます。 Azure Container Apps は 1 つの選択肢であり、マイクロサービスのシナリオ向けに特化して作成されたフル マネージドの Dapr API、コンポーネント、機能で構成されています。 単純に、開発中のコンテナー アプリ環境で、通常と同じ方法で Dapr を有効にして構成するだけで済みます。
注
GitHub の Azure Container Apps で Dapr の更新プログラムとリリースのお知らせを見つけます。
開発中コンテナー アプリと組み合わせたときのマイクロサービス API の動作方法
Dapr 対応のコンテナー アプリ、開発中ソリューション向けに構成済みの Dapr コンポーネント、それらの間で通信機能を呼び出す Dapr サイドカーを使用して、開発中コンテナー アプリ環境に適したマイクロサービス API を構成することができます。 次の図で、pub/sub API を例として使用し、これらの主要な概念を示します。
| ラベル | Dapr 設定 | 説明 |
|---|---|---|
| 1 | Dapr が有効になっている Container Apps | Dapr は、Dapr の一連の引数を構成することで、コンテナー アプリ レベルで有効になります。 これらの値は、複数のリビジョン モードで実行されている場合に、特定のコンテナー アプリのすべてのリビジョンに適用されます。 |
| 2 | Dapr | Dapr のフル マネージド API は、Dapr サイドカーを介して各コンテナー アプリに公開されます。 Dapr API は、HTTP または gRPC を介してコンテナー アプリから呼び出すことができます。 Dapr サイドカーは、HTTP ポート 3500 と gRPC ポート 50001 で実行されます。 |
| 3 | Dapr コンポーネントの構成 | Dapr では、機能がコンポーネントとして提供されるモジュール設計を使用します。 Dapr コンポーネントは、複数のコンテナー アプリ間で共有できます。 スコープ配列で提供される Dapr アプリ識別子によって、実行時に特定のコンポーネントを読み込む Dapr 対応コンテナー アプリが決まります。 |
バージョン管理
Azure Container Apps の Dapr では、固定リリース スケジュールに従う代わりに、Dapr バイナリの優先順位付けと安定性に基づいて新しい機能がリリースされます。 Azure Container Apps での Dapr リリースの詳細を確認します。
Azure Container Apps 内にある Dapr のバージョンは、以下のもので構成されています。
-
1.13.6のようなセマンティック バージョン管理プレフィックス。これは、対応する OSS Dapr ランタイム バージョン API との互換性や、SDK、CLI などの関連ツールとの互換性を示します。 -
-msft.<number>サフィックス。これはセキュリティと運用の準備を強化するために、Azure 固有のカスタマイズを組み込むことを示します。
Azure Container Apps 内にある Dapr の完全なバージョン形式は、1.13.6-msft.1 のようになります。
注
サフィックス内の <number> は、常に順番に増加するとは限りません。 たとえば、バージョン 1.13.6-msft.3 が、1.13.6-msft.2 へとスキップすることがあります。
サポートされている Dapr API、コンポーネント、ツール
マネージド API
Azure Container Apps は、一般公開されているマネージド Dapr API (構成要素 API と運用 API) を提供します。 これらの API はフル マネージドであり、運用環境での使用がサポートされています。
アルファ版 Dapr API と機能の使用方法の詳細は、「Dapr FAQ」 を参照してください。
構成要素 API
| 構成要素 API | Status | 説明 |
|---|---|---|
| 複数のサービス間の呼び出し | GA | 自動 mTLS 認証と暗号化を使用して、サービスを検出し、信頼性が高く直接的なサービス間呼び出しを実行します。 Azure Container Apps 内での Dapr サービス呼び出しについては、「既知の制限事項」を参照してください。 |
| 状態管理 | GA | トランザクションと CRUD 操作の状態管理機能を提供します。 |
| pub/sub | GA | パブリッシャーとサブスクライバーのコンテナー アプリが中間メッセージ ブローカーを介して相互通信できるようにします。 外部コンポーネントの JSON ファイルを使用して、トピックに対する宣言型サブスクリプションを作成することもできます。 宣言型 pub/sub API の詳細を参照してください。 |
| バインド | GA | イベントに基づいてアプリケーションをトリガーする |
| アクター | GA | Dapr のアクターは、迅速にスケーリングするように設計された、メッセージ駆動型のシングル スレッドの作業単位です。 たとえば、ワークロードにバーストが多い状況などです。 |
| シークレット | GA | アプリケーション コードからシークレットにアクセスするか、Dapr コンポーネントのセキュリティで保護された値を参照します。 |
| 構成 | GA | サポートされている構成ストアに対応するアプリケーション構成項目を取得し、その構成項目をサブスクライブします。 |
運用 API
| 運用 API | Status | 説明 |
|---|---|---|
| 正常性 | GA | 正常性チェック プローブ。Dapr の準備状況または稼働状態と、SDK の初期化の準備状況を監視します。 正常性 API は、HTTP でのみ使用できます。 Dapr サイドカーのヘルスチェックは、Dapr がコンテナーアプリで有効になっていると自動的に構成されます。 |
| メタデータ | GA | サイドカーに関する情報を返し、ランタイムを検出できるようにします。 |
Compatible SDKs (適合 VM)
Dapr の最新のクライアント SDK パッケージは、Azure Container Apps と互換性があります。 サポートされている任意の GA Dapr v1.12 ランタイム API と組み合わせて、Dapr SDK を使用することができます。
注
現在、Dapr サーバー拡張機能、アクター、ワークフロー SDK パッケージはいずれも、Azure Container Apps との互換性がありません。 すべての Dapr SDK パッケージの詳細を参照してください。
Dapr コンポーネント
レベル 1 コンポーネントとレベル 2 コンポーネントの比較
Dapr コンポーネントのサブセットがサポートされています。 そのサブセット内で、Dapr コンポーネントはレベル 1 またはレベル 2 という、2 つのサポート カテゴリに分類されています。
- レベル 1 コンポーネント: 安定的なコンポーネント。これらは、クリティカルな (セキュリティまたは重大な回帰) シナリオで、すぐに調査を受けます。 それ以外の場合、Microsoft はオープン ソースと共同で作業し、修正プログラムまたは次回の通常リリースで対処します。
- レベル 2 コンポーネント: 低い優先順位で調査されるコンポーネント。これらは、安定的な状態ではないか、サード パーティのプロバイダーに関連しています。
レベル 1 コンポーネント
| API | コンポーネント | タイプ |
|---|---|---|
| 状態管理 | Azure Cosmos DB Azure Blob Storage v1 Azure Table Storage(アジュール テーブル ストレージ) Microsoft SQL Server |
state.azure.cosmosdbstate.azure.blobstoragestate.azure.tablestoragestate.sqlserver |
| 発行とサブスクライブ (Please delete & tag) | Azure Service Bus キュー Azure Service Bus トピック Azure Event Hubs |
pubsub.azure.servicebus.queuespubsub.azure.servicebus.topicspubsub.azure.eventhubs |
| バインド | Azure Storage キュー Azure Service Bus キュー Azure Blob Storage Azure Event Hubs |
bindings.azure.storagequeuesbindings.azure.servicebusqueuesbindings.azure.blobstoragebindings.azure.eventhubs |
| シークレットの管理 | Azure Key Vault | secretstores.azure.keyvault |
レベル 2 コンポーネント
| API | コンポーネント | タイプ |
|---|---|---|
| 状態管理 | PostgreSQL MySQL と MariaDB (Please delete & tag) Redis |
state.postgresqlstate.mysqlstate.redis |
| 発行とサブスクライブ (Please delete & tag) | Apache Kafka Redis ストリーム |
pubsub.kafkapubsub.redis |
| バインド | Azure Event Grid Azure Cosmos DB Apache Kafka PostgreSQL Redis Cron |
bindings.azure.eventgridbindings.azure.cosmosdbbindings.kafkabindings.postgresqlbindings.redisbindings.cron |
| 構成 | PostgreSQL Redis |
configuration.postgresqlconfiguration.redis |
Azure Container Apps 内でサポートされている Dapr コンポーネントの使用方法の詳細を参照してください。
ツール
Azure Container Apps は、SDK や CLI などの Dapr オープン ソース ツールとの互換性を確保しています。
制限事項
- Dapr 構成仕様: Dapr 構成仕様を使用する必要があるすべての機能。
- Dapr 有効化ガイドに記載されていない Dapr サイドカーの注釈
- API とコンポーネントのサポート: Azure Container Apps がサポートしているのは、この記事で GA、Tier 1、または Tier 2 としてリストされている Dapr API とコンポーネントのみです。
- アクターのリマインダー: リマインダーを常にアクティブにし、正しく起動するには、1 個以上の minReplicas が必要です。
- ジョブ: ジョブ用途では、Dapr はサポートされていません。
次の手順
- 以下のものを使用して、Dapr をデプロイします。
- 既存のコンテナー アプリで Dapr を有効にします。