Azure Container Apps には、シンプルで移植性が高く、回復性があり、セキュリティで保護されたマイクロサービスの作成と実装に役立つ Distributed Application Runtime (Dapr) を利用する API が用意されています。 Dapr は、抽象化レイヤーとしての Azure Container Apps と連携して、メンテナンスが少ないスケーラブルなプラットフォームを提供します。 Azure Container Apps では、マイクロサービスのシナリオ向けに特に作成されたフル マネージドの 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 のフル マネージド 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 バージョンは次のとおりです。
- 対応する OSS Dapr ランタイム バージョン API および SDK、CLI などの関連ツールとの互換性を示す、
1.13.6などのセマンティック バージョン管理プレフィックス。 -
-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 | 状態 | 説明 |
|---|---|---|
| サービス間の呼び出し | ジョージア州 (GA) | 自動 mTLS 認証と暗号化を使用して、サービスを検出し、信頼性の高いサービス間呼び出しを実行します。 Azure Container Apps での Dapr サービス呼び出しに関する既知の制限事項を参照してください。 |
| 状態管理 | ジョージア州 (GA) | トランザクションと CRUD 操作の状態管理機能を提供します。 |
| pub/sub | ジョージア州 (GA) | パブリッシャーとサブスクライバーのコンテナー アプリが中間メッセージ ブローカーを介して相互通信できるようにします。 外部コンポーネントの JSON ファイルを使って、トピックへの宣言型サブスクリプションを作成することもできます。 宣言型 pub/sub API の詳細を確認します。 |
| バインド | ジョージア州 (GA) | イベントに基づいてアプリケーションをトリガーする |
| アクター | ジョージア州 (GA) | Dapr のアクターは、迅速にスケーリングするように設計された、メッセージ駆動型のシングル スレッドの作業単位です。 たとえば、ワークロードにバーストが多い状況などです。 |
| シークレット | ジョージア州 (GA) | アプリケーション コードからシークレットにアクセスするか、Dapr コンポーネントのセキュリティで保護された値を参照します。 |
| 構成 | ジョージア州 (GA) | サポートされている構成ストアのアプリケーション構成項目を取得してサブスクライブします。 |
運用 API
| 運用 API | 状態 | 説明 |
|---|---|---|
| 正常性 | ジョージア州 (GA) | Dapr の準備状況または稼働状態と SDK の初期化の準備状況を監視する正常性チェック プローブ。 正常性 API は、HTTP でのみ使用できます。 |
| メタデータ | ジョージア州 (GA) | サイドカーに関する情報を返し、ランタイムの検出可能性を可能にします。 |
互換性のある SDK
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 |
| パブリッシュとサブスクライブ | 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 Redis(レディス) |
state.postgresqlstate.mysqlstate.redis |
| パブリッシュとサブスクライブ | 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 とコンポーネントのサポート: この記事で GA、Tier 1、または Tier 2 としてリストされている Dapr API とコンポーネントのみが Azure Container Apps でサポートされます。
- アクターのリマインダー: リマインダーが常にアクティブになり、正しく起動されるためには、1 以上の minReplicas が必要です。
- ジョブ: ジョブでは、Dapr はサポートされていません。
次のステップ
- 次を使用して、Dapr をデプロイします。
- 既存のコンテナー アプリで Dapr を有効にします。