Dapr

分散型アプリケーション ランタイム (Dapr) には、シンプルで移植性があり、回復性があり、セキュリティで保護されたマイクロサービスを記述して実装するのに役立つ API が用意されています。 Dapr API は、アプリケーションと並行してサイドカー プロセスとして実行され、分散型アプリケーションを構築するときに発生する可能性がある、次のような一般的な複雑さを抽象化します。

  • サービス検出
  • メッセージ ブローカーの統合
  • 暗号化
  • 可観測性
  • シークレットの管理

Dapr は段階的に導入可能です。 必要に応じて、任意の API 構成要素を使用できます。 各 Dapr API とコンポーネントについて Microsoft が提供するサポート レベルを確認してください。

機能と特徴

Dapr 拡張機能を使用して AKS または Arc 対応 Kubernetes クラスターに Dapr をプロビジョニングすると、次のオーバーヘッドがなくなります。

  • Dapr ツールのダウンロード
  • AKS クラスターへの Dapr ランタイムの手動インストールと管理

Azure CLI または Bicep テンプレートを使用して、クラスターに Dapr 拡張機能をインストール、デプロイ、構成できます。

さらに、この拡張機能では、単純なコマンド ライン引数により、すべてのネイティブ Dapr 構成機能がサポートされます。

Dapr は、AKS でのマイクロサービスの開発に役立つ次の一連の機能を提供します。

  • クラスター拡張機能によって AKS で Dapr を簡単にプロビジョニングできます。
  • 基になるテクノロジの選択を抽象化する HTTP および gRPC API を使用した移植性の確保
  • HTTP および gRPC API による信頼性が高く、セキュリティで保護され、回復力のあるサービス間の呼び出し
  • CloudEvent のフィルター処理とメッセージ配信の "少なくとも1回" のセマンティクスをサポートすることで、メッセージの公開とサブスクライブが簡単になりました
  • オープンテレメトリ API コレクタによるプラグ可能な可観測性と監視
  • 言語に依存せずに動作しますが、言語固有のソフトウェア開発キット (SDK) も提供します
  • Dapr 拡張機能による Visual Studio Code との統合
  • 分散アプリケーションの課題を解決するためのその他の API

現在のサポート対象

Dapr 拡張機能は、AKS での Dapr に関して Microsoft がサポートする唯一のオプションです。

問題の取り扱い

Microsoft では、Dapr 拡張機能に対して発生する問題が 2 つの部分に分類されます。

  • 拡張機能の操作
  • Dapr ランタイム (API とコンポーネントを含む)

次の表は、これらの各カテゴリについてサポート優先度レベルを示したものです。

説明 セキュリティ リスク/回帰 機能に関する問題
拡張機能の操作 Dapr 拡張機能のインストールとアンインストールやアップグレードなど、拡張機能の操作中に発生する問題。 Microsoft は優先して直ちに解決します。 Microsoft は、必要に応じて調査と対処を行います。
Dapr ランタイム 拡張機能を介した Dapr ランタイム、API、コンポーネントの使用時に発生する問題。 Microsoft は、オープンソース コミュニティと協力して、優先度の高い問題を調査します。 Microsoft は、問題の優先度、重大度、規模に応じて、拡張機能で直接解決するか、Dapr オープンソース プロジェクトと協力して修正プログラムまたは将来の Dapr オープンソース リリースで解決します。 修正プログラムが Dapr オープンソースでリリースされると、Dapr 拡張機能で使用できるようになります。 Microsoft は、Dapr オープンソース プロジェクトと共に新しい機能の問題を調査し、共同で作業して、修正プログラムまたは将来の Dapr オープンソース リリースで解決します。 現時点では、オープンソースの機能に関する既知の問題については Microsoft は調査しません。

Dapr のバージョン

Microsoft は、Dapr の最新バージョンと 2 つ前までのバージョン (N-2) についてベストエフォートのサポートを提供します。 各マイナー バージョン リリースでは、最新のパッチ バージョンのみがサポートされます。 現在、AKS または Arc 対応 Kubernetes 向けの Dapr 拡張機能では、次の Dapr バージョンがサポートされています。

  • 1.13.x
  • 1.12.x
  • 1.11.x

Azure CLI コマンドを実行すると、クラスターまたは場所で使用可能なバージョンの一覧を取得できます。

マネージド AKS クラスターで使用できる安定した Dapr バージョンの一覧を表示するには、次のコマンドを実行します。

az k8s-extension extension-types list-versions-by-cluster --resource-group myResourceGroup --cluster-name myCluster --cluster-type managedClusters --extension-type microsoft.dapr --release-train stable

マネージド AKS クラスターで使用できる最新の安定した Dapr バージョンを確認するには、次を実行します。

az k8s-extension extension-types list-versions-by-cluster --resource-group myResourceGroup --cluster-name myCluster --cluster-type managedClusters --extension-type microsoft.dapr  --release-train stable --show-latest

使用できる安定した Dapr バージョンの一覧を "場所ごと" で表示するには、以下を行います。

  1. ExtenstionTypes 機能が Azure サブスクリプションに登録されていることを確認します。
  2. 次のコマンドを実行します。
az k8s-extension extension-types list-versions-by-location --location westus --extension-type microsoft.dapr

ランタイム サポート

Dapr 拡張機能のサポートは、ランタイムの管理方法によって異なります。

自己管理型

自己管理型ランタイムでは、サポート ウィンドウに留まるには手動でアップグレードする必要があります。 拡張機能を使用して Dapr をアップグレードするには、拡張機能インスタンスの更新の手順に従います。

Dapr ランタイムのバージョンが Microsoft でサポートされなくなった後も、アプリケーションは変更なしで実行し続けます。 ただし、そのランタイム バージョンについて、Microsoft はセキュリティ パッチや関連するカスタマー サポートを提供できなくなります。 そのバージョンのサポート終了日を過ぎてアプリケーションに問題が発生した場合は、最新のセキュリティ パッチや機能を受け取れるよう、サポートされているバージョンにアップグレードすることをお勧めします。

自動アップグレード

自動アップグレードを有効にするには、慎重に検討する必要があります。 自動アップグレードを利用すると Dapr 拡張機能は最新のマイナー バージョンに更新され続けますが、更新プログラムの間で破壊的変更が発生する可能性があります。 Microsoft は、自動更新間の破壊的変更が原因で発生したダウンタイムについて責任を負いません。

コンポーネントと API

アルファおよびベータ状態のものを含むすべての Dapr コンポーネントと API を、Dapr 拡張機能を介して使用できます。 ただし、Microsoft は、定義されている問題処理ポリシーに従って、API とコンポーネントのサブセットのサポートのみを提供します。

安定した Dapr API

Dapr 拡張機能では、安定バージョンの Dapr API (構成要素) がサポートされています。

Dapr API 状態 説明
サービス間の呼び出し Stable サービスを検出し、自動 mTLS 認証と暗号化を使って、信頼性の高い直接サービス間呼び出しを実行します。(#limitations)
状態管理 Stable トランザクションと CRUD 操作の状態管理機能を提供します。
pub/sub Stable パブリッシャーとサブスクライバーのアプリが中間メッセージ ブローカーを介して相互通信できるようにします。 外部コンポーネントの JSON ファイルを使って、トピックへの宣言型サブスクリプションを作成することもできます。
バインド Stable イベントに基づいてアプリケーションをトリガーします。
アクター Stable Dapr のアクターは、迅速にスケーリングするように設計された、メッセージ駆動型のシングル スレッドの作業単位です。 たとえば、ワークロードにバーストが多い状況などです。
可観測性 Stable Application Insights バックエンドにトレース情報を送信します。
シークレット Stable アプリケーション コードからシークレットにアクセスするか、Dapr コンポーネントのセキュリティで保護された値を参照します。
Configuration Stable サポートされている構成のアプリケーション構成項目を取得してサブスクライブします。 します。

レベル 1 とレベル 2 のコンポーネント

Dapr コンポーネントのサブセットがサポートされています。 そのサブセット内で、Dapr コンポーネントはレベル 1 またはレベル 2 の 2 つのサポート カテゴリに分かれます。

  • レベル 1 コンポーネント: クリティカルな (セキュリティまたは重大な回帰) シナリオですぐに調査を受ける安定したコンポーネント。 それ以外の場合、Microsoft はオープンソースと共同で作業し、修正プログラムまたは次回の通常リリースで対処します。
  • レベル 2 コンポーネント: 安定した状態ではないか、サード パーティのプロバイダーに関するものであるため、低い優先順位で調査されるコンポーネント。
レベル 1 のコンポーネント
API コンポーネント Type
状態管理 Azure Blob Storage v1
Azure Table Storage
Microsoft SQL Server
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 secrets.azure.keyvault
レベル 2 のコンポーネント
API コンポーネント Type
状態管理 Azure Cosmos DB
PostgreSQL
MySQL、MariaDB
Redis
state.azure.cosmosdb
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 クラウドは、次のリージョンの AKS と Arc サポートでサポートされています。

リージョン AKS のサポート Arc for Kubernetes のサポート
australiaeast ✔️ ✔️
australiasoutheast ✔️
brazilsouth ✔️
canadacentral ✔️ ✔️
canadaeast ✔️ ✔️
centralindia ✔️ ✔️
centralus ✔️ ✔️
eastasia ✔️ ✔️
eastus ✔️ ✔️
eastus2 ✔️ ✔️
eastus2euap ✔️
francecentral ✔️ ✔️
francesouth ✔️
germanywestcentral ✔️ ✔️
japaneast ✔️ ✔️
japanwest ✔️
koreacentral ✔️ ✔️
koreasouth ✔️
northcentralus ✔️ ✔️
northeurope ✔️ ✔️
norwayeast ✔️
southafricanorth ✔️
southcentralus ✔️ ✔️
southeastasia ✔️ ✔️
southindia ✔️
swedencentral ✔️ ✔️
switzerlandnorth ✔️ ✔️
uaenorth ✔️
uksouth ✔️ ✔️
ukwest ✔️
westcentralus ✔️ ✔️
westeurope ✔️ ✔️
westus ✔️ ✔️
westus2 ✔️ ✔️
westus3 ✔️ ✔️

よく寄せられる質問

Dapr とサービス メッシュの比較方法

A: サービス メッシュがネットワーク サービス メッシュとして定義されている場合、Dapr はサービス メッシュではありません。 Dapr とサービス メッシュには重複する機能がいくつか用意されていますが、サービス メッシュはネットワークの問題に重点を置いていますが、Dapr は、開発者がマイクロサービスとしてアプリケーションを簡単に構築できるようにするための構成要素を提供することに重点を置いています。 Dapr は開発者中心であり、サービス メッシュはインフラストラクチャ中心です。

サービス メッシュによって共有される、次のような一般的な機能があります。

  • mTLS 暗号化を使用したサービス間通信のセキュリティ保護
  • サービス間のメトリック コレクション
  • サービス間の分散トレース
  • 再試行による回復性

さらに、Dapr は、状態管理、発行/サブスクライブ メッセージング、アクターなどに対する他のアプリケーションレベルの構成要素を提供します。 ただし、Dapr では、ルーティングやトラフィックの分割など、トラフィックの動作に関する機能は提供されません。 サービス メッシュによって提供されるトラフィックの分割によってソリューションが恩恵を受ける場合は、Open Service メッシュを使用することを検討してください。

Dapr とサービス メッシュの詳細と、それらを組み合わせて使用する方法については、Dapr のドキュメントを参照してください。

Dapr シークレット API は、シークレット ストア CSI ドライバーとどのように比較されますか。

Dapr シークレット API とマネージ シークレット ストア CSI driver の両方で、外部ストアに保持されているシークレットの統合を可能にし、アプリケーションコードからシークレットストアテクノロジを抽象化します。 シークレット ストア CSI ドライバーは、Azure Key Vault に保持されているシークレットを、アプリケーションで使用するための CSI ボリュームとしてマウントします。 Dapr は、次のことが可能な RESTful API を介してシークレットを公開します。

  • アプリケーション コードによって呼び出される
  • さまざまなシークレット ストアを使って構成される

次の表に、各サービスの機能の一覧を示します。

Dapr シークレット API シークレット ストア CSI ドライバー
サポートされているシークレット ストア ローカル環境変数 (開発用);ローカル ファイル (開発用);Kubernetes シークレット;AWS シークレット マネージャー;Azure Key Vault シークレット ストア;Kubernetes で管理対象 Id を使用して Azure Key Vault;GCP シークレット マネージャー;HashiCorp Vault Azure Key Vault シークレット ストア
アプリケーション コードでのシークレットへのアクセス Dapr シークレット API の呼び出し マウントされたボリュームにアクセスするか、マウントされたコンテンツを Kubernetes シークレットとして同期し、環境変数を設定します。
シークレットのローテーション 新しい API 呼び出しで更新されたシークレットを取得する シークレットをポーリングし、構成可能な間隔でマウントを更新します
ログとメトリック Dapr サイドカーはログを生成します。ログには、Azure Monitor などのコレクターを使用して構成したり、prometheus でメトリックを出力したり、正常性チェックのために HTTP エンドポイントを公開したりすることができます Prometheus を使用してドライバーと Azure Key Vault プロバイダーのメトリックを生成します

Dapr でのシークレット管理について詳しくは、「シークレット管理の概要」をご覧ください。

シークレット ストア CSI ドライバーと Azure Key Vault プロバイダーの詳細については、「シークレット ストア CSI ドライバーの概要」をご覧ください。

管理対象の Dapr クラスター拡張機能とオープン ソースの Dapr サービスとの比較はどのように行われますか。

AKS クラスターで Dapr をプロビジョニングする最も簡単な方法は、管理された Dapr クラスター拡張機能です。 拡張機能を使用すると、自動アップグレードをオプトインして、Dapr ランタイム バージョンの管理をオフロードできます。 また、拡張機能では、スマートな既定値を使用して Dapr がインストールされます (たとえば、高可用性モードで Dapr コントロール プレーンをプロビジョニングするなど)。

Helm または Dapr CLI を使って Dapr オープンソースをインストールする場合、開発者とクラスター保守担当者は、ランタイムのバージョンと構成オプションについても責任を負います。

最後に、Dapr 拡張機能は AKS の拡張機能であるため、他の AKS 機能と同じサポート ポリシーを期待できます。

Dapr オープンソース から AKS 用 Dapr 拡張機能への移行について詳しくはこちらをご覧ください

マネージド ID を使用して Microsoft Entra ID で Dapr コンポーネントを認証するにはどうすればよいですか?

関数 (たとえば、ヘルム) を使用して Dapr を既にインストールしている場合は、Dapr 拡張機能を使用するように切り替える方法はありますか。

推奨されるガイダンスは、AKS クラスターから Dapr を完全にアンインストールし、クラスター拡張機能を使用して再インストールすることです。

AKS 拡張機能を使用して Dapr をインストールする場合は、Dapr の今後の管理のために、Dapr CLI ではなく拡張機能を引き続き使用することをお勧めします。 2 つのツールを組み合わせると、競合が発生し、望ましくない動作が発生する可能性があります。

次の手順

Dapr とそれによって解決されるいくつかの課題について学習した後は、Dapr クラスター拡張機能を使用してアプリケーションをデプロイしてみてください。