Live data from Hacker News

Writing a Kubernetes CRD Controller in Rust

technosophos.com

1–10 of 76 posts

Re: Writing a Kubernetes CRD Controller in Rust

#3
How has Kubernetes being a giant reactive resource API panned out? My first reaction was to like it, but near the end of when I was very invested in the space it started feeling like there were too many moving parts and a hectic mess. Stacks became more difficult to reproduce (controllers, their versions and platform limitations) and people moved too many things into custom resources.

Did the custom resource controllers pan out well?

Re: Writing a Kubernetes CRD Controller in Rust

#4
post #3

How has Kubernetes being a giant reactive resource API panned out? My first reaction was to like it, but near the end of when I was very invested in the space it started feeling like there were too many moving parts and a hectic mess. Stacks became more difficult to reproduce (controllers, their versions and platform limitations) and people moved too many things into custom resources. Did the custom resource controll…

Don’t know but it’s a shame that the k8s API doesn’t have link fields... it kind of breaks the whole concept of automatic interfacing

Re: Writing a Kubernetes CRD Controller in Rust

#5
post #4
post #3

How has Kubernetes being a giant reactive resource API panned out? My first reaction was to like it, but near the end of when I was very invested in the space it started feeling like there were too many moving parts and a hectic mess. Stacks became more difficult to reproduce (controllers, their versions and platform limitations) and people moved too many things into custom resources. Did the custom resource controll…

Don’t know but it’s a shame that the k8s API doesn’t have link fields... it kind of breaks the whole concept of automatic interfacing

Can you elaborate on what you mean by link field? I've searched a bit but I'm not certain what you're referring to in this context.

Re: Writing a Kubernetes CRD Controller in Rust

#7
post #4

Earlier quoted context omitted.

Don’t know but it’s a shame that the k8s API doesn’t have link fields... it kind of breaks the whole concept of automatic interfacing

Can you elaborate on what you mean by link field? I've searched a bit but I'm not certain what you're referring to in this context.

HATEOAS I suppose. https://restfulapi.net/hateoas/

Re: Writing a Kubernetes CRD Controller in Rust

#8
post #3

How has Kubernetes being a giant reactive resource API panned out? My first reaction was to like it, but near the end of when I was very invested in the space it started feeling like there were too many moving parts and a hectic mess. Stacks became more difficult to reproduce (controllers, their versions and platform limitations) and people moved too many things into custom resources. Did the custom resource controll…

Well look how popular Kubernetes is, how many thousands of things built on top of it because its powerful and extensible API model.

Re: Writing a Kubernetes CRD Controller in Rust

#9
post #3

How has Kubernetes being a giant reactive resource API panned out? My first reaction was to like it, but near the end of when I was very invested in the space it started feeling like there were too many moving parts and a hectic mess. Stacks became more difficult to reproduce (controllers, their versions and platform limitations) and people moved too many things into custom resources. Did the custom resource controll…

> How has Kubernetes being a giant reactive resource API panned out?

It was never reactive, at least in the sense of the Reactive Manifesto. There is no system of backpressure.

> Did the custom resource controllers pan out well?

I think it will prove to be useful for a handful of uses, but that in general, it will wind up like Wordpress and Jenkins plugins. Powerful, popular, but a guaranteed mess.

Kubernetes was not originally designed to accommodate CRDs. There's no concept of tenancy, only things you can cobble together into tenancy-ish-alike-kinda shapes. There's RBAC, but it was designed before CRDs and means that poorly designed custom controllers can be attack vectors.

I think CRDs are useful and necessary[0], but that they are greatly overused and have expensive design flaws. Unfortunately, I don't have the wits to join into the multi-billion dollar market of "papering over things Kubernetes doesn't do very well but which can't now be changed".

[0] I mean, I wrote a book about Knative, which is a purely CRD-based architecture.

Re: Writing a Kubernetes CRD Controller in Rust

#10
post #6

"The Go version was over 1700 lines long and was loaded with boilerplate and auto-generated code. The Rust version was only 127 lines long" Right ...

I've written CRD controllers. This is an accurate description of what your code looks like.

Because of Golang's anemic type system, massive code generation is the only viable way to deal with the dynamic blackboard that the API Server presents to clients.

Post reply on HN