2 ms·
> You write a relatively similar configuration with k8s and it is made to be true once, but also continuously. This is true if and only if there is a controlle
by jacques_chester 6y ago
> You write a relatively similar configuration with k8s and it is made to be true once, but also continuously.
This is true if and only if there is a controller written to achieve reconciliation. Defining a CRD doesn't do anything, it's just a reservation of a path and, maybe, a schema attached.
A controller can be written that listens but does nothing. It can be written to do something, but not listen. The API Server does not care. There is no magic logic engine or pathfinder or query planner. Someone has to write a controller.
All that bare Kubernetes gives you for CRDs is the equivalent of MongoDB.
- hardwaresofton 6y agoYou're right technically, but who writes a controller that does nothing? Also, just the existence of the CRD can be enough to signal state to other controllers, so there are some knock-on benefits to just having it there in storage. Regardless of corner cases, this is a step change difference between tools like terraform/pulumi that reach out and call APIs and finish executing compared to k8s which supports reconciliation. A tool with reconciliation is strictly more capable than one without (for better or for worse).