共用方式為


快速入門:使用 Azure Kubernetes Service (AKS) 或已啟用 Arc 的 Kubernetes 的 Dapr 叢集擴充功能部署應用程式

在本快速入門中,您將在 AKS 或已啟用 Arc 的 Kubernetes 叢集中使用 Dapr 叢集擴充功能。 您可以部署範例hello world,其中包含產生訊息的 Python 應用程式,以及取用和保存訊息的Node.js應用程式。

必要條件

複製存放庫

  1. 使用 git clone 命令來複製 Dapr 快速入門存放庫

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. 變更為 dapr-aks-extension-quickstart 目錄。

建立及設定 Redis 存放區

開啟 Azure 入口網站以啟動 Azure Cache for Redis 建立流程。

  1. 根據 「建立開放原始碼 Redis 快取」快速入門指示,填寫建議的資訊。
  2. 選取 [建立] 以開始 Redis 執行個體部署。

確認資源資訊

  1. 部署 Redis 資源之後,請流覽至其概觀頁面。
  2. 記下:
    • 主機名,位於 快取概觀頁面的 [基本資訊 ] 區段中。 主機名格式看起來類似: xxxxxx.redis.cache.windows.net
    • 在快取的 [進階設定] 刀鋒視窗中找到的 SSL 連接埠。 預設值是 6380
  3. 流覽至 [ 驗證] 刀鋒視窗,並確認已在您的資源上啟用 entra Authentication Microsoft。

新增受控識別

  1. 在 [驗證] 刀鋒視窗中,輸入您在 [啟用 Microsoft Entra Authentication] 複選框下,以必要條件建立的受控識別名稱。

    此螢幕快照顯示您可以選取要新增為 Redis 使用者的受控識別欄位。

  2. 確認您的受控識別已新增為 Redis 使用者指派的數據擁有者存取原則許可權。

啟用公用網路存取

在此案例中,您的 Redis 快取會使用公用網路存取。 當您完成本快速入門時, 請務必清除資源

  1. 流覽至 [ 私人端點] 刀鋒視窗。
  2. 點擊頂端選單中的 [ 啟用公用網络存取 ]。

設定 Dapr 元件

在 中 redis.yaml,元件會設定為使用已啟用 AKS 叢集工作負載身分識別的 Entra ID 驗證。 不需要存取金鑰。

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. 在慣用的程式代碼編輯器中,流覽至 deploy 範例中的目錄,然後開啟 redis.yaml

  2. 針對redisHost,請將佔位元<REDIS_HOST>:<REDIS_PORT>值取代為您稍早從 Azure 入口網站 儲存的 Redis 快取主機名和 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中,Pod 規格已新增標籤以使用工作負載身分識別,:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. 瀏覽至 deploy 目錄並開啟 node.yaml

  2. 將的佔位元 <SERVICE_ACCOUNT_NAME>serviceAccountName 取代為您 建立的服務帳戶名稱。

    • 此值應該是您用來建立同盟身分識別認證的相同服務帳戶。

套用設定

  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中,Pod 規格已新增標籤以使用工作負載身分識別,:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. 瀏覽至 deploy 目錄並開啟 python.yaml

  2. 將的佔位元 <SERVICE_ACCOUNT_NAME>serviceAccountName 取代為您 建立的服務帳戶名稱。

    • 此值應該是您用來建立同盟身分識別認證的相同服務帳戶。

套用設定

  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

下一步