次の方法で共有


クイックスタート: Azure Kubernetes Service (AKS) または Arc 対応 Kubernetes 用の Dapr クラスター拡張機能を使用してアプリケーションをデプロイする

このクイックスタートでは、AKS または Arc 対応 Kubernetes クラスターで Dapr クラスター拡張機能を使用します。 hello world の例をデプロイします。これは、メッセージを生成する Python アプリケーションと、メッセージを使用して保持する Node.js アプリケーションで構成されます。

前提条件

リポジトリの複製

  1. git clone コマンドを使用して、Dapr quickstarts リポジトリをクローンします。

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. dapr-aks-extension-quickstart ディレクトリに変更します。

Redis ストアを作成して構成する

Azure portal を開いて、Azure Cache for Redis の作成フローを開始します。

  1. 「オープンソースの Redis Cache を作成する」のクイックスタートの手順に従って、推奨される情報を入力します。
  2. [作成] を選択して、Redis インスタンスのデプロイを開始します。

リソース情報を確認する

  1. Redis リソースがデプロイされたら、その概要ページに移動します。
  2. 次の値を書き留めておきます。
    • キャッシュの概要ページの [Essentials] セクションにあるホスト名。 ホスト名の形式は次のようになります: xxxxxx.redis.cache.windows.net
    • キャッシュの [詳細設定] ブレードにある SSL ポート。 既定値は 6380 です。
  3. [認証] ブレードに移動し、リソースで Microsoft Entra 認証が有効になっていることを確認します。

マネージド ID の追加

  1. [認証] ブレードで、前提条件として作成したマネージド ID の名前を、[Enable Microsoft Entra Authentication]\(Microsoft Entra 認証を有効にする\) チェックボックスの下のフィールドに入力します。

    Redis ユーザーとして追加するマネージド ID を選択できるフィールドを示すスクリーンショット。

  2. マネージド ID が Redis ユーザー割り当てデータ所有者アクセス ポリシーのアクセス許可として追加されていることを確認します。

パブリック ネットワーク アクセスを有効にする

このシナリオでは、Redis Cache は公衆ネットワーク アクセスを使用します。 このクイック スタートが完了したらリソースをクリーンアップしてください。

  1. [プライベート エンドポイント] ブレードに移動します。
  2. 上部のメニューから [パブリック ネットワーク アクセスを有効にする] をクリックします。

Dapr コンポーネントを構成する

redis.yaml では、コンポーネントは、AKS クラスターで有効になっているワークロード ID を使用して Entra ID 認証を使用するように構成されています。 アクセス キーは必要ありません。

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. 好みのコード エディターで、サンプルの deploy ディレクトリに移動し、redis.yaml を開きます。

  2. redisHost の場合は、プレースホルダーの <REDIS_HOST>:<REDIS_PORT> 値を、Azure portal から以前に保存した Redis Cache のホスト名と SSL ポートに置き換えます。

    - name: redisHost
    value: <your-cache-name>.redis.cache.windows.net:6380
    

構成を適用する

  1. kubectl apply コマンドを使用して redis.yaml ファイルを適用します。

    kubectl apply -f ./deploy/redis.yaml
    
  2. kubectl get components.redis コマンドを使用して、状態ストアが正常に構成されたことを確認します。

    kubectl get components.redis -o yaml
    

    想定される出力

    component.dapr.io/statestore created
    

Dapr サイドカーを使用して Node.js アプリをデプロイする

Node.js アプリを構成する

node.yaml では、ポッド スペックにはワークロード ID を使用するために追加されたラベルがあります。

labels:
  app: node
  azure.workload.identity/use: "true"
  1. deploy ディレクトリに移動して node.yaml を開きます。

  2. serviceAccountName のプレースホルダーの <SERVICE_ACCOUNT_NAME> 値を、作成したサービス アカウント名に置き換えます。

    • この値は、フェデレーション ID 資格情報の作成に使用したのと同じサービス アカウントにします。

構成を適用する

  1. kubectl apply コマンドを使用して、クラスターに Node.js アプリのデプロイを適用します。

    kubectl apply -f ./deploy/node.yaml
    
  2. Kubernetes デプロイは非同期であるため、次の手順に進む前に、次のコマンドを使用してデプロイが完了していることを確認します。

    kubectl rollout status deploy/nodeapp
    
  3. kubectl get svc コマンドを使用して、サービスにアクセスします。

    kubectl get svc nodeapp
    
  4. 出力内の EXTERNAL-IP をメモします。

Node.js サービスを確認する

  1. curl を使用して、EXTERNAL-IP でサービスを呼び出します。

    curl $EXTERNAL_IP/ports
    

    出力例

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. アプリケーションに命令を送信します。

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. 命令を確認します。

    curl $EXTERNAL_IP/order
    

    想定される出力

    { "orderId": "42" }
    

Dapr サイドカーを使用して Python アプリをデプロイする

Python アプリを構成する

python.yaml では、ポッド スペックにはワークロード ID を使用するために追加されたラベルがあります。

labels:
  app: node
  azure.workload.identity/use: "true"
  1. deploy ディレクトリに移動して python.yaml を開きます。

  2. serviceAccountName のプレースホルダーの <SERVICE_ACCOUNT_NAME> 値を、作成したサービス アカウント名に置き換えます。

    • この値は、フェデレーション ID 資格情報の作成に使用したのと同じサービス アカウントにします。

構成を適用する

  1. kubectl apply コマンドを使用して、Python アプリを Kubernetes クラスターにデプロイします。

    kubectl apply -f ./deploy/python.yaml
    
  2. Kubernetes デプロイは非同期であるため、次の手順に進む前に、次のコマンドを使用してデプロイが完了していることを確認します。

    kubectl rollout status deploy/pythonapp
    

メッセージを監視し、永続化を確認する

Node.js と Python の両方のアプリケーションがデプロイされたので、メッセージを見ることができます。

  1. kubectl logs コマンドを使用して、Node.js アプリのログを取得します。

    kubectl logs --selector=app=node -c node --tail=-1
    

    想定される出力

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. curl を使用して、Node.js アプリの命令エンドポイントを呼び出して、最新の命令を取得します。

    curl $EXTERNAL_IP/order
    

    応答に最新の JSON 出力が表示されます。

リソースをクリーンアップする

このクイックスタートのリソースを今後使用する予定がない場合は、リソース グループを削除することで、関連付けられているすべてのリソースを削除できます。

az group delete コマンドを使用して、リソース グループ、クラスター、名前空間、すべての関連リソースを削除します。

az group delete --name MyResourceGroup

次のステップ