Dapr を利用したマイクロサービス API
Azure Container Apps には、シンプルで移植性が高く、回復性があり、セキュリティで保護されたマイクロサービスの作成と実装に役立つ Distributed Application Runtime (Dapr) を利用する API が用意されています。 Dapr は、抽象化レイヤーとしての Azure Container Apps と連携して、メンテナンスが少ないスケーラブルなプラットフォームを提供します。 Azure Container Apps では、マイクロサービスのシナリオ向けに特に作成されたフル マネージドの Dapr API、コンポーネント、機能を選択できます。 コンテナー アプリ環境で普通に Dapr を有効にして構成するだけです。
マイクロサービス API はコンテナー アプリでどのように動作するか
Dapr 対応のコンテナー アプリ、ソリューション用に構成されたDapr コンポーネント、それらの間の通信を呼び出す Dapr サイドカーを使って、コンテナー アプリ環境用にマイクロサービス API を構成します。 次の図は、pub/sub API を例として使って、これらの主要な概念を示したものです。
Label | 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 対応コンテナー アプリが決まります。 |
サポートされている Dapr API、コンポーネント、ツール
マネージド API
Azure Container Apps では、一般公開されているマネージド Dapr API (構成要素) が提供されます。 これらの API はフル マネージドであり、運用環境での使用がサポートされています。
"アルファ版" Dapr API と機能の使用について詳しくは、Dapr に関する FAQ を参照してください。
API | 状態 | 説明 |
---|---|---|
サービス間の呼び出し | GA | 自動 mTLS 認証と暗号化を使用して、サービスを検出し、信頼性の高いサービス間呼び出しを実行します。 Azure Container Apps での Dapr サービス呼び出しに関する既知の制限事項を参照してください。 |
状態管理 | GA | トランザクションと CRUD 操作の状態管理機能を提供します。 |
pub/sub | GA | パブリッシャーとサブスクライバーのコンテナー アプリが中間メッセージ ブローカーを介して相互通信できるようにします。 外部コンポーネントの JSON ファイルを使って、トピックへの宣言型サブスクリプションを作成することもできます。 宣言型 pub/sub API の詳細を確認します。 |
バインド | GA | イベントに基づいてアプリケーションをトリガーする |
アクター | GA | Dapr のアクターは、迅速にスケーリングするように設計された、メッセージ駆動型のシングル スレッドの作業単位です。 たとえば、ワークロードにバーストが多い状況などです。 |
可観測性 | GA | Application Insights バックエンドにトレース情報を送信します。 |
シークレット | GA | アプリケーション コードからシークレットにアクセスするか、Dapr コンポーネントのセキュリティで保護された値を参照します。 |
Configuration | GA | サポートされている構成ストアのアプリケーション構成項目を取得してサブスクライブします。 |
互換性のある SDK
Dapr の最新のクライアント SDK パッケージは、Azure Container Apps と互換性があります。 サポートされている GA の Dapr API のどれでも、次の Dapr クライアント SDK バージョンで使用できます。
Language | SDK バージョン |
---|---|
Java | 1.12.0 |
Go | 1.11.0 |
Python | 1.14.0 |
.NET | 1.14.0 |
JavaScript | 3.3.1 |
Rust | 0.15.1 |
Note
現在、Dapr サーバー拡張機能、アクター、ワークフロー SDK パッケージは、Azure Container Apps と互換性がありません。 すべての Dapr SDK パッケージの詳細については、こちらをご覧ください。
レベル 1 とレベル 2 のコンポーネント
Dapr コンポーネントのサブセットがサポートされています。 そのサブセット内で、Dapr コンポーネントはレベル 1 またはレベル 2 の 2 つのサポート カテゴリに分かれます。
- レベル 1 コンポーネント: クリティカルな (セキュリティまたは重大な回帰) シナリオですぐに調査を受ける安定したコンポーネント。 それ以外の場合、Microsoft はオープンソースと共同で作業し、修正プログラムまたは次回の通常リリースで対処します。
- レベル 2 コンポーネント: 安定した状態ではないか、サード パーティのプロバイダーに関するものであるため、低い優先順位で調査されるコンポーネント。
レベル 1 のコンポーネント
API | コンポーネント | Type |
---|---|---|
状態管理 | Azure Cosmos DB Azure Blob Storage v1 Azure Table Storage Microsoft SQL Server |
state.azure.cosmosdb state.azure.blobstorage state.azure.tablestorage state.sqlserver |
パブリッシュとサブスクライブ | Azure Service Bus キュー Azure Service Bus トピック Azure Event Hubs |
pubsub.azure.servicebus.queues pubsub.azure.servicebus.topics pubsub.azure.eventhubs |
バインド | Azure Storage キュー Azure Service Bus キュー Azure Blob Storage Azure Event Hubs |
bindings.azure.storagequeues bindings.azure.servicebusqueues bindings.azure.blobstorage bindings.azure.eventhubs |
シークレットの管理 | Azure Key Vault | secretstores.azure.keyvault |
レベル 2 のコンポーネント
API | コンポーネント | Type |
---|---|---|
状態管理 | PostgreSQL MySQL、MariaDB Redis |
state.postgresql state.mysql state.redis |
パブリッシュとサブスクライブ | Apache Kafka Redis Streams |
pubsub.kafka pubsub.redis |
バインド | Azure Event Grid Azure Cosmos DB Apache Kafka PostgreSQL Redis Cron |
bindings.azure.eventgrid bindings.azure.cosmosdb bindings.kafka bindings.postgresql bindings.redis bindings.cron |
構成 | PostgreSQL Redis |
configuration.postgresql configuration.redis |
ツール
Azure Container Apps では、SDK や CLI などの Dapr オープン ソース ツールとの互換性が保証されます。
制限事項
- Dapr 構成仕様: Dapr 構成仕様を使用する必要があるすべての機能。
- Dapr 有効化ガイドに記載されていない Dapr サイドカーの注釈
- API とコンポーネントのサポート: この記事で GA、Tier 1、または Tier 2 としてリストされている Dapr API とコンポーネントのみが Azure Container Apps でサポートされます。
- アクターのリマインダー: リマインダーが常にアクティブになり、正しく起動されるためには、1 以上の minReplicas が必要です。
- ジョブ: ジョブでは、Dapr はサポートされていません。