Dapr

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

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

Dapr は段階的に導入可能です。 必要に応じて、任意の API 構成要素を使用できます。

HTTP または gRPC を介して Dapr のさまざまな構成要素とやり取りできるさまざまなコード フレームワークの数を示す図。

機能と特徴

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 拡張機能を使用した VS Code との統合
  • 分散アプリケーションの課題を解決するためのその他の API

よく寄せられる質問

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 コントロール プレーンをプロビジョニングするなど)。

ヘルムまたは Dapr CLI を使用して Dapr OSS をインストールする場合、ランタイムのバージョンと構成オプションは開発者とクラスターの管理者の責任です。

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

Dapr OSS から AKS 用 Dapr 拡張機能への移行の詳細についてはこちらをご覧ください

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

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

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

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

次の手順

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