次の方法で共有


Azure Container Apps の Dapr コンポーネント

Dapr では、機能がコンポーネントとして提供されるモジュール設計を使用します。 Dapr コンポーネントの使用はオプションであり、アプリケーションのニーズによって排他的に決まります。

コンテナー アプリの Dapr コンポーネントは、次のようなことを行う環境レベルのリソースです。

  • サポート対象の外部サービスに接続するためのプラグ可能な抽象化モデルを提供できる。
  • コンテナー アプリ間で共有することも、特定のコンテナー アプリにスコープを設定することもできる。
  • Dapr シークレットを使用して、構成メタデータを安全に取得できる。

このガイドでは、Azure Container Apps サービス向けに Dapr コンポーネントを構成する方法について説明します。

コンポーネントのスキーマ

Dapr オープンソース プロジェクトでは、すべてのコンポーネントは次の基本的なスキーマに準拠しています。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: [COMPONENT-NAME]
  namespace: [COMPONENT-NAMESPACE]
spec:
  type: [COMPONENT-TYPE]
  version: v1
  initTimeout: [TIMEOUT-DURATION]
  ignoreErrors: [BOOLEAN]
  metadata:
    - name: [METADATA-NAME]
      value: [METADATA-VALUE]

Azure Container Apps では、Dapr コンポーネントに対応し、不要なフィールド (apiVersionkind など) と冗長なメタデータや仕様のプロパティが削除されるように、上記のスキーマが少し簡略化されています。

componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
  - name: [METADATA-NAME]
    value: [METADATA-VALUE]

コンポーネントのスコープ

既定では、同じ環境内のすべての Dapr 対応コンテナー アプリは、デプロイされたコンポーネントの完全なセットを読み込みます。 実行時に適切なコンテナー アプリのみがコンポーネントを読み込むようにするには、アプリケーション スコープを使う必要があります。 次の例では、コンポーネントは、Dapr アプリケーション ID が APP-ID-1APP-ID-2 の 2 つの Dapr 対応コンテナー アプリによってのみ読み込まれます。

componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
  - name: [METADATA-NAME]
    value: [METADATA-VALUE]
scopes:
  - [APP-ID-1]
  - [APP-ID-2]

Note

Dapr コンポーネント スコープでは、より優れたセキュリティ対策が提供され、コンテナー アプリ名ではなく、コンテナー アプリの Dapr アプリケーション ID に対応します。

コンポーネントの例

Container Apps CLI を使用して Dapr コンポーネントを作成するには、コンテナー アプリの YAML マニフェストを使用できます。 複数のコンポーネントを構成する場合は、コンポーネントごとに別個の YAML ファイルを作成して適用する必要があります。

az containerapp env dapr-component set --name ENVIRONMENT_NAME --resource-group RESOURCE_GROUP_NAME --dapr-component-name pubsub --yaml "./pubsub.yaml"
# pubsub.yaml for Azure Service Bus component
componentType: pubsub.azure.servicebus.queue
version: v1
secretStoreComponent: "my-secret-store"
metadata:
  - name: namespaceName
    # Required when using Azure Authentication.
    # Must be a fully-qualified domain name
    value: "[your_servicebus_namespace.servicebus.windows.net]"
  - name: azureTenantId
    value: "[your_tenant_id]"
  - name: azureClientId 
    value: "[your_client_id]"
  - name: azureClientSecret
    secretRef: azClientSecret
scopes:
  - publisher-app
  - subscriber-app

次のステップ

Dapr コンポーネントを使用して Azure と外部サービスに接続する方法について学習します。