HTTPS上的可携式调度事件消息



我配置了一个Knative触发器。事件应由通过HTTPS运行的服务来处理。

apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
name: my-trigger
namespace: my-ns
spec:
broker: my-broker
filter:
attributes:
type: dev.knative.sources.ping
subscriber:
ref:
apiVersion: v1
kind: Service
namespace: event-handler-ns
name: event-handler-service
uri: /handle/event
---
kind: Service
apiVersion: v1
metadata:
name: event-handler-service
namespace: event-handler-ns
spec:
selector:
app: event-handler
ports:
- protocol: TCP
port: 443
targetPort: 8443

如果我查看代理过滤器的日志,我可以看到事件是通过HTTP发送的。我找不到任何关于如何通过HTTPS进行POST的文档。我能找到的唯一文档是将knative服务配置为在HTTPS上运行(而不是我的负责事件处理的自定义服务(。

{
"level": "error",
"ts": "2022-10-12T08:05:13.202Z",
"logger": "mt_broker_filter",
"caller": "filter/filter_handler.go:216",
"msg": "failed to send event",
"commit": "e825770",
"error": "failed to dispatch message: Post "http://event-handler-service.event-handler-ns.svc.cluster.local/handle/event": EOF",
"stacktrace": "knative.dev/eventing/pkg/broker/filter.(*Handler).sendntknative.dev/eventing/pkg/broker/filter/filter_handler.go:216nknative.dev/eventing/pkg/broker/filter.(*Handler).ServeHTTPntknative.dev/eventing/pkg/broker/filter/filter_handler.go:209ngo.opencensus.io/plugin/ochttp.(*Handler).ServeHTTPntgo.opencensus.io@v0.23.0/plugin/ochttp/server.go:92nknative.dev/pkg/network/handlers.(*Drainer).ServeHTTPntknative.dev/pkg@v0.0.0-20220524202603-19adf798efb8/network/handlers/drain.go:110nnet/http.serverHandler.ServeHTTPntnet/http/server.go:2879nnet/http.(*conn).serventnet/http/server.go:1930"
}

是否可以在触发器中为订阅者指定协议?

uri可以是一个绝对URL,具有非空方案和指向目标的非空主机(或相对URI(。从文档

因此,当只使用uri:时,您应该能够指定协议

subscriber:
uri: https://event-handler-service.event-handler-ns/handle/event

正确,URI可以是HTTPS端点,但实际实现取决于broker中的dispatcher代码。通常,它通过提供自定义TLS证书(如果有的话(来工作,类似于tag解析的这种方法。

您正在使用哪种broker

最新更新