你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在本快速入门中,将在已启用 AKS 或 Arc 的 Kubernetes 群集中使用 Dapr 扩展 。 你将部署一个hello world示例,它由一个生成消息的 Python 应用程序和一个使用和持久化消息的 Node.js 应用程序组成。
Prerequisites
- Azure 订阅。 如果没有帐户,可以 创建一个免费帐户。
- 已安装 Azure CLI
- AKS 群集,其中包含:
- 启用了工作负载标识
- 在同一订阅中创建了托管标识
- Kubernetes 服务帐户
- 联合标识凭据
- AKS 群集上安装的 Dapr 扩展
- 本地已安装 kubectl
克隆存储库
-
git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git 切换到
dapr-aks-extension-quickstart目录。cd dapr-aks-extension-quickstart
创建和配置 Redis 存储
打开 Azure 门户以启动 Azure Cache for Redis 创建流。
根据创建 Azure Cache for Redis 实例快速入门填写建议的信息。
选择“创建”以启动 Redis 实例部署。
验证资源信息
部署 Redis 资源后,导航到其概述页。
记下以下内容:
- 主机名,位于缓存概述页的“概要”部分中。 主机名格式类似于:
xxxxxx.redis.cache.windows.net。 - SSL 端口,位于“设置高级设置”>中。 默认值是
6380。
- 主机名,位于缓存概述页的“概要”部分中。 主机名格式类似于:
导航到设置>身份验证,并验证是否在资源上启用了 Microsoft Entra 身份验证。
添加托管标识
在身份验证部分,启用 Microsoft Entra 身份验证复选框下,输入作为先决条件创建的托管标识的名称。
验证是否已将托管标识添加为 Redis 用户分配的数据所有者访问策略权限。
启用公共网络访问
对于此方案,Redis 缓存将使用公用网络访问。 完成本快速入门后,请务必 清理资源 。
导航到 设置>专用终结点。
从菜单中选择 “启用公用网络访问 ”。
配置 Dapr 组件
在 redis.yaml 文件中,该组件被配置为使用为 AKS 群集启用的工作负载标识进行 Entra ID 身份验证。 无需访问密钥。
- name: useEntraID
value: "true"
- name: enableTLS
value: true
在首选代码编辑器中,导航到示例存储库中的 部署 目录并打开 redis.yaml。
对于
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"
导航到
deploy目录并打开 node.yaml。将占位符
<SERVICE_ACCOUNT_NAME>值替换为 创建的服务帐户名称。- 此值应与你用于创建联合标识凭据的服务帐户相同。
应用配置
使用
kubectl apply命令将 Node.js 应用部署应用到群集。kubectl apply -f ./deploy/node.yamlKubernetes 部署异步进行;因此在继续执行后续步骤之前,请使用以下命令验证部署是否已完成:
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>值替换为 创建的服务帐户名称。- 此值应与你用于创建联合标识凭据的服务帐户相同。
应用配置
使用
kubectl apply命令将 Python 应用部署到 Kubernetes 群集。kubectl apply -f ./deploy/python.yamlKubernetes 部署异步进行;因此在继续执行后续步骤之前,请使用以下命令验证部署是否已完成:
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 <your-resource-group>