-
Notifications
You must be signed in to change notification settings - Fork 846
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Benthos-Captain, the Kubernetes Operator #519
Comments
😍 I love this. Personally I'd lean towards option B as it seems more true to the k8s ethos, but I'd love to hear from more k8s users about preferences. If this were to become the recommended way to deploy Benthos on k8s then I would want to update |
Very relevant, indeed, and makes me wonder about what the advantages of having an operator would be. |
Okay let's limit this to the scope of running Benthos in streams mode. I'm in the process of defining a rough spec for expanding streams mode to be more of a managed platform so this could end up working nicely with that, issue soon to come. |
I probably wouldn't exclude also option B for now, I was thinking how simpler it would be when using GitOps, to create only a HelmRelease for the |
I've created a skeleton of a "working"
|
I made a operator some time last year for benthos pipelines and abandoned it before it hitting production for other priorities. This is great and I would love to use it. One feature we were trying to get into our pipeline operator was in two parts:
The default (cpu,mem) autoscaler is only useful if you have your pipeline capable of saturating the CPU (or mem) of your pod, so the idea was to scale the #threads and brokered inputs and outputs until it does pack the pod, then put on the hpa. This was a little more difficult and we never implemented it. Awesome work, thanks! |
wouldn't this overlap with knative eventing https://github.com/knative/eventing or tekton pipeline https://github.com/tektoncd/pipeline ? |
I'm not familiar with those projects, but I don't think they would overlap with an Operator. But yes, there are many ways to deploy to Kubernetes, GitOps with Flux, for example. The idea behind this Operator would be to make the process of deploy Benthos pipelines in Kubernetes easier, using simple Custom Resource Definitions for the pipelines definition and letting the Operator do all the rest. |
Hi!
I’ve been having this crazy idea of creating a benthos Kubernetes operator, but I'm unsure if this would be something worth to pursue. I would very much appreciate any thoughts that you might have on this.
And I'd be more than happy to bootstrap a project if anyone thinks this might be of interest.
Summary
The general idea would be having a controller/operator running inside a Kubernetes cluster, which basically would be listening to events triggered when a
pipeline
resource is created, changed or deleted, and orchestrating the corresponding benthos pipelines described by acustom resources definition
(CRD), for example:To deploy a new pipeline all we’d have to do would be to create a new
pipeline
resource:benthos-captain
I’d imagine two possibilities in the way we'd run the
benthos-captain
controller/operator:option a:
The benthos containers running inside the controller instance(s) in streams mode. We'd have to figure out a way to distribute evenly the workloads (benthos pipelines) among the workers.
option b:
The operator starting a new workload (k8s deployment) for each registered benthos
pipeline
install
To install
benthos-captain
operator we could create a helm chart, for example:blobctl
It could also be useful to create a CLI to communicate with the operator and perform some actions, i.e., pause or resume a pipeline, etc.
The text was updated successfully, but these errors were encountered: