通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用适用于 Azure Kubernetes 服务(AKS)或 Arc 启用的 Kubernetes 的 Dapr 扩展来部署应用程序

在本快速入门中,将在已启用 AKS 或 Arc 的 Kubernetes 群集中使用 Dapr 扩展 。 你将部署一个hello world示例,它由一个生成消息的 Python 应用程序和一个使用和持久化消息的 Node.js 应用程序组成。

Prerequisites

克隆存储库

  1. 使用命令克隆 git clone

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. 切换到 dapr-aks-extension-quickstart 目录。

    cd dapr-aks-extension-quickstart
    

创建和配置 Redis 存储

打开 Azure 门户以启动 Azure Cache for Redis 创建流。

  1. 根据创建 Azure Cache for Redis 实例快速入门填写建议的信息。

  2. 选择“创建”以启动 Redis 实例部署。

验证资源信息

  1. 部署 Redis 资源后,导航到其概述页。

  2. 记下以下内容:

    • 主机名,位于缓存概述页的“概要”部分中。 主机名格式类似于:xxxxxx.redis.cache.windows.net
    • SSL 端口,位于“设置高级设置”>中。 默认值是 6380
  3. 导航到设置>身份验证,并验证是否在资源上启用了 Microsoft Entra 身份验证。

添加托管标识

  1. 身份验证部分,启用 Microsoft Entra 身份验证复选框下,输入作为先决条件创建的托管标识的名称。

    屏幕截图显示了可在其中选择要添加为 Redis 用户的托管标识的字段。

  2. 验证是否已将托管标识添加为 Redis 用户分配的数据所有者访问策略权限。

启用公共网络访问

对于此方案,Redis 缓存将使用公用网络访问。 完成本快速入门后,请务必 清理资源

  1. 导航到 设置>专用终结点

  2. 从菜单中选择 “启用公用网络访问 ”。

配置 Dapr 组件

redis.yaml 文件中,该组件被配置为使用为 AKS 群集启用的工作负载标识进行 Entra ID 身份验证。 无需访问密钥。

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. 在首选代码编辑器中,导航到示例存储库中的 部署 目录并打开 redis.yaml

  2. 对于 redisHost,请将占位符 <REDIS_HOST>:<REDIS_PORT> 值替换为 之前从 Azure 门户保存的 Redis 缓存主机名和 SSL 端口。

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

应用配置

使用命令应用 kubectl apply 文件。

kubectl apply -f ./deploy/redis.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> 值替换为 创建的服务帐户名称

    • 此值应与你用于创建联合标识凭据的服务帐户相同。

应用配置

  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> 值替换为 创建的服务帐户名称

    • 此值应与你用于创建联合标识凭据的服务帐户相同。

应用配置

  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 <your-resource-group>

后续步骤