如何从Azure App Service调用运行在AKS集群上的Dapr Actor
Dapr Actors跨环境调用问题解答
问题1:无Dapr Sidecar的Azure App Service REST API能否调用AKS内的Dapr Actor方法
可以实现,但是不能直接使用Dapr Actor SDK的原生调用逻辑,需要通过Dapr Sidecar开放的HTTP/gRPC接口间接发起请求:
- 首先需要将AKS集群内Dapr的调用入口(默认端口3500)通过Ingress、LoadBalancer类型服务暴露,更推荐通过VNet集成让Azure App Service和AKS集群处于同一私有网络,避免公网暴露带来的安全风险
- App Service中的REST API直接按照Dapr官方定义的Actor调用规范发起HTTP请求即可,调用路径格式为:
POST http://<AKS集群Dapr入口地址>/v1.0/actors/<actor类型>/<actor实例ID>/method/<要调用的方法名>,请求体传入对应方法所需的参数即可 - 该方案需要你自行处理调用的超时、重试、错误码解析逻辑,Dapr SDK内置的容错、状态校验能力不会自动生效
问题2:是否需要配置AKS集群的DNS名称才能让Dapr找到对应的Actor
需要根据调用场景判断:
场景1:AKS集群内部的Dapr Sidecar互相调用Actor
完全不需要额外配置AKS集群的DNS名称,Dapr默认依赖Kubernetes原生的CoreDNS服务完成集群内的服务发现,配合Dapr的Placement服务自动完成Actor实例的寻址、状态同步,无需外部DNS介入。
场景2:集群外服务(如本问题中的Azure App Service)调用AKS内的Actor
需要配置可被调用方解析的访问地址,这个地址可以是AKS集群的公网DNS,也可以是VNet内部的私有DNS域名,只要能让App Service的请求正常路由到AKS内部暴露的Dapr入口即可,Dapr本身不需要额外绑定集群DNS配置。
内容的提问来源于stack exchange,提问作者Markus S.
相关产品推荐
相关产品推荐

