Kubernetes Operators for managing your SaaS: I'm w...
# general
l
Kubernetes Operators for managing your SaaS: I'm wondering if anyone here is looking into providing a k8s operator to drive changes in your SaaS. The idea is not new, in a nutshell if I'm providing some sort of infrastructure SaaS (e.g. MongoDB Atlas, Confluent Cloud, Nile 😊) my users may want to drive changes to this service using an operator. Why? Because it allows then to track changes to the service using Git(Ops) with PRs, reviews, etc. within their usual workflows. I'm wondering if there's a discussion on patterns for doing this here or somewhere else :)
g
Go on… this sounds promising :)
😇 1
➕ 1
It seems to be the general idea behind Crossplane too, but I think it's pretty much focused today in multi-cloud infrastructure, not really driving SaaS changes from Crossplane. Still I could write a Crossplane "provider" for my SaaS and make it available in their marketplace.
g
I haven’t seen a discussion, but I’m also really curious 👀
l
I'm wondering if there's enough interest on this approach. Atlas operator doesn't have that many stars, a bit more on ASO... AWS moved it to a community-driven approach and decommissioned its own operator... maybe it's a false good idea? Everyone is happy with ClickOps? People prefer to drive things with Terraform?
On the other hand, Crossplane is quite popular: https://github.com/crossplane/crossplane
I'm heavily influenced by the view that you showed here: https://www.infoq.com/presentations/kafka-clusters-control-plane
and the thing that's missing, in my view, is an operator to drive the control plane, as opposed to the UI that you showed in the beginning
a
I know someone who is doing this - https://github.com/baazhq/baaz
❤️ 2
l
I will have a look, thank you!
l
I would highly recommend just generating a Crossplane provider from your Terraform provider if you have one. Ideally your SaaS should have a general API on top of which you can build all infra-as-code implementations (Terraform, Pulumi, Crossplane, etc)
c
This workflow is somewhat amusing: 1. Create a CR (instance of a CRD) in my K8s cluster 2. Operator talks to Confluent's Control Plane 3. Confluent's Control Plane sends another
Kafka
CR to Confluent's Data Plane 4. Operator creates a Kafka cluster K8s -> Control Plane -> K8s 😂
😂 1