快速入門:使用 Azure Kubernetes Service (AKS) 或已啟用 Arc 的 Kubernetes 的 Dapr 叢集擴充功能部署應用程式
在本快速入門中,您將在 AKS 或已啟用 Arc 的 Kubernetes 叢集中使用 Dapr 叢集擴充功能。 您可以部署範例hello world
,其中包含產生訊息的 Python 應用程式,以及取用和保存訊息的Node.js應用程式。
必要條件
- Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,您可以建立免費帳戶。
- 已安裝 Azure CLI 或 Azure PowerShell。
- AKS 叢集,其中包含:
- kubectl 安裝在本機。
複製存放庫
使用
git clone
命令來複製 Dapr 快速入門存放庫。git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
變更為
dapr-aks-extension-quickstart
目錄。
建立及設定 Redis 存放區
開啟 Azure 入口網站以啟動 Azure Cache for Redis 建立流程。
- 根據 「建立開放原始碼 Redis 快取」快速入門指示,填寫建議的資訊。
- 選取 [建立] 以開始 Redis 執行個體部署。
確認資源資訊
- 部署 Redis 資源之後,請流覽至其概觀頁面。
- 記下:
- 主機名,位於 快取概觀頁面的 [基本資訊 ] 區段中。 主機名格式看起來類似:
xxxxxx.redis.cache.windows.net
。 - 在快取的 [進階設定] 刀鋒視窗中找到的 SSL 連接埠。 預設值是
6380
。
- 主機名,位於 快取概觀頁面的 [基本資訊 ] 區段中。 主機名格式看起來類似:
- 流覽至 [ 驗證] 刀鋒視窗,並確認已在您的資源上啟用 entra Authentication Microsoft。
新增受控識別
在 [驗證] 刀鋒視窗中,輸入您在 [啟用 Microsoft Entra Authentication] 複選框下,以必要條件建立的受控識別名稱。
確認您的受控識別已新增為 Redis 使用者指派的數據擁有者存取原則許可權。
啟用公用網路存取
在此案例中,您的 Redis 快取會使用公用網路存取。 當您完成本快速入門時, 請務必清除資源 。
- 流覽至 [ 私人端點] 刀鋒視窗。
- 點擊頂端選單中的 [ 啟用公用網络存取 ]。
設定 Dapr 元件
在 中 redis.yaml
,元件會設定為使用已啟用 AKS 叢集工作負載身分識別的 Entra ID 驗證。 不需要存取金鑰。
- name: useEntraID
value: "true"
- name: enableTLS
value: true
在慣用的程式代碼編輯器中,流覽至
deploy
範例中的目錄,然後開啟redis.yaml
。針對
redisHost
,請將佔位元<REDIS_HOST>:<REDIS_PORT>
值取代為您稍早從 Azure 入口網站 儲存的 Redis 快取主機名和 SSL 埠。- name: redisHost value: <your-cache-name>.redis.cache.windows.net:6380
套用設定
使用
kubectl apply
命令套用redis.yaml
檔案。kubectl apply -f ./deploy/redis.yaml
使用
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"
瀏覽至
deploy
目錄並開啟node.yaml
。將的佔位元
<SERVICE_ACCOUNT_NAME>
值serviceAccountName
取代為您 建立的服務帳戶名稱。- 此值應該是您用來建立同盟身分識別認證的相同服務帳戶。
套用設定
使用
kubectl apply
命令,將 Node.js 應用程式的部署套用至叢集。kubectl apply -f ./deploy/node.yaml
Kubernetes 部署是異步的,因此在繼續進行後續步驟之前,請使用下列命令確認部署已完成:
kubectl rollout status deploy/nodeapp
使用
kubectl get svc
命令存取服務。kubectl get svc nodeapp
記下輸出中的
EXTERNAL-IP
。
確認Node.js服務
使用
curl
,以您的EXTERNAL-IP
呼叫服務。curl $EXTERNAL_IP/ports
範例輸出
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
將訂單提交至應用程式。
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
確認訂單。
curl $EXTERNAL_IP/order
預期輸出
{ "orderId": "42" }
使用 Dapr 側車部署 Python 應用程式
設定 Python 應用程式
在 python.yaml
中,Pod 規格已新增標籤以使用工作負載身分識別,:
labels:
app: node
azure.workload.identity/use: "true"
瀏覽至
deploy
目錄並開啟python.yaml
。將的佔位元
<SERVICE_ACCOUNT_NAME>
值serviceAccountName
取代為您 建立的服務帳戶名稱。- 此值應該是您用來建立同盟身分識別認證的相同服務帳戶。
套用設定
使用
kubectl apply
命令,將 Python 應用程式部署至 Kubernetes 叢集。kubectl apply -f ./deploy/python.yaml
Kubernetes 部署是異步的,因此在繼續進行後續步驟之前,請使用下列命令確認部署已完成:
kubectl rollout status deploy/pythonapp
觀察訊息並確認持續性
現在已部署Node.js和 Python 應用程式,您可以監看訊息。
使用
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
使用
curl
,呼叫Node.js應用程式的訂單端點,以取得最新的訂單。curl $EXTERNAL_IP/order
您應該會在回應中看到最新的 JSON 輸出。
清除資源
如果您不再打算從本快速入門使用資源,您可以移除資源群組來刪除所有相關聯的資源。
使用 az group delete 命令移除資源群組、叢集、命名空間及所有相關資源。
az group delete --name MyResourceGroup