Kafka External Access
We have a trusted external provider which needs to connect to our Zerops kafka instance.
Is there any way todo this without them using the "zcli vpn"? Of which they wont do, it's a PaaS/SaaS offering.
8 Replies
Hello @motters , unfortunately, it's not currently possible. Kafka is not configured with TLS support. One way to do it would be to use a proxy that handles TLS and securely exposes its port.
https://github.com/grepplabs/kafka-proxy
Hi @Jan Saidl, thanks for replying.
We guessed this and have been trying to configure https://www.envoyproxy.io/. The documentation on ubuntu services is limited for Zerops.
This is what we have but it's failing at reading the yaml.
Could you help? Or do you suggest we use the proxy you suggested?
Docs: https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/kafka
https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/kafka_broker_filter.html
^^ Message was too long for Discord
envoy.yaml
Hi @motters , I'll definitely check it out and try to create a recipe that would solve it.
@Jan Saidl Thanks, I think we've solved it (just this second), just testing atm. We switched to using what you suggested.
It'd be good to have a guide wrote on this, as you'd be the only affordable kafka provider.
I'll update after testing.
Great job 👍 . Maybe it will even run without Docker.
Just a note on the original
zerops.yaml. In the prepareCommands for apt, you need to use sudo.We'd prefer this to run without docker as it can auto-scale resources.
Ah thanks, noted on 'sudo'.
if you don't mind me asking, how does the rest of your stack look like / what would be the reason not to run it fully inside Zerops?
@Aleš Our system itself doesn’t really need Kafka. The only reason we use it is because our external partner, who provides device management services for our IoT platform, can only stream device data via Kafka.
Their cloud (large and complex) needs access to the Kafka instance we’re hosting with you so they can push data in. From there, our cloud (hosted with you) can pull it out and process it.
Effectively, we can’t host our partner’s cloud with you, as dedicated instances would be prohibitively expensive.
It’s not really what Kafka is meant for, but it’s a reasonable solution given that we have no control over our partner’s development pipeline.
Hope that helps 👍
We’ve been testing the proxy over the weekend and everything is working well. We’ll leave it running for a few more days to continue monitoring. However always open to better suggestion or implementations.