我正在用Dapr做一些测试,但这些测试不起作用,场景不是很常见(目前只是一些测试)。部署在Azure中的Web应用程序使用也位于Azure中的Dapr Sidecar,但它并不运行在同一个“网络”中。在这种情况下,sidecar是AKS中的部署/服务。在Dapr文档中,我没有看到应用程序和它的Sidecar通过互联网通信的任何障碍(是的,我知道这是一个奇怪的场景)。是这样吗?也就是说,在理论上这样做是不是没有障碍?
Sidecar的部署如下。
apiVersion: apps/v1
kind: Deployment
metadata:
name: dapr-sidecar
spec:
selector:
matchLabels:
app: dapr-sidecar
replicas: 1
template:
metadata:
labels:
app: dapr-sidecar
spec:
containers:
- name: daprd
image: "daprio/daprd:latest"
imagePullPolicy: Always
command:
- "./daprd"
args:
- "--app-id"
- "daprtestbackend"
- "--app-port"
- "80"
- "--dapr-grpc-port"
- "50001"
- "--dapr-http-port"
- "8078"
- "--components-path"
- "/components"
- "--log-level"
- "debug"
volumeMounts:
- name: components-volume
mountPath: /components
ports:
- containerPort: 50001
name: grpc-port
- containerPort: 8078
name: http-port
volumes:
- name: components-volume
configMap:
name: dapr-components
---
apiVersion: v1
kind: Service
metadata:
name: dapr-sidecar-service
spec:
selector:
app: dapr-sidecar
ports:
- name: grpc
port: 50001
targetPort: 50001
- name: http
port: 8078
targetPort: 8078
type: LoadBalancer
在Web应用程序方面,我基本上做了以下几点:
// Here I basically put the IP of the AKS Service (load balancer type) and the port that
// I have configured there, I have tried with HTTP, gRPC etc...
const string httpEndPoint = "http://{SERVICE_SIDECAR}:{PORT}";
builder.Services.AddDaprClient(options =>
{
options.UseHttpEndpoint(httpEndPoint);
});
...
...
// Dapr will send a serialized event object instead of a raw CloudEvent.
app.UseCloudEvents();
// required for Dapr's pub/sub routing.
app.MapSubscribeHandler();
// Dapr subscription in [Topic] routes topic requests to this path
app.MapPost("/jobs", [Topic("jobpubsub", "jobs")] (Job job) => {
Console.WriteLine("Call to /jobs");
/Register the job
Console.WriteLine("Subscriber received : " + job);
return Results.Ok(job);
});
...
我已经尝试过gRPC,HTTP,但没有办法得到消息....有什么建议吗?
1条答案
按热度按时间ccrfmcuu1#
这一点都不奇怪。我创建这个沙盒项目的原因与您在这里描述的相同:
https://github.com/dapr-sandbox/dapr-ambient
现在,这是一种简单的方法,将sidecar作为您的应用程序可以连接到的单独部署/deamonset运行。这里的想法是推动这个原型来支持多个应用程序连接到同一个环境,但这仍然不起作用,因为我们需要创建一个提案来定义我们如何实现这一点。
在您的部署定义中,我认为您缺少此参数:https://github.com/dapr-sandbox/dapr-ambient/blob/main/chart/dapr-ambient/templates/daemonset.yaml#L74
我们正在使用Dapr-Ambient。如果你想让Dapr-Ambient为你的用例工作,让我知道,因为有一个社区驱动的方法比维护你的内部解决方案要好得多。
希望这能帮上忙。干杯