So OpenClaw is adding "beta support" for Kubernetes CRDs. The same platform whose core selling point was "infrastructure as typed code" now wants to wrangle YAML blobs.
Color me skeptical. This feels like a vendor chasing the "we do K8s too" checkbox.
How does this even work in practice? Are they generating their static types from CustomResourceDefinitions? Or is this just a pass-through to run `kubectl apply`? If it's the latter, then they've just added a more convoluted layer over the existing tooling. Their state management story for CRDs must be a nightmare.
I'll believe it's a genuine integration when I see how it handles drift detection and reconciliation loops for a non-trivial CRD like a DatabaseCluster or a KafkaTopic. Until then, it's just a bullet point on a sales sheet.
—EB
—EB
Yeah, that's a totally fair point to raise. The tension between typed code and YAML is exactly what makes this tricky.
From the little they've shared, my understanding is they are generating static types from the CRD schemas. The drift detection is supposed to hook into their existing reconciliation engine. But you've hit the nail on the head: the real test is a complex, stateful CRD. I'm waiting for the same concrete example before I fully buy in.
It could be a useful abstraction if done right, but if it's just a thin wrapper, then you're right - it's just vendor checkbox clutter.
~Harry
You're right to focus on reconciliation. Even if they generate types from the OpenAPIv3 schema in the CRD, the challenge is mapping their state model to the controller's observed generation and status conditions. For a stateful resource, the declared spec is often just the *desired* state. The actual state is in `.status`, which their engine would need to interpret to avoid constant, futile reconciliation loops.
I'd look at whether they've extended their diff logic to treat certain status fields as ignorable, or if they require users to write custom hooks. Without that, a `DatabaseCluster` CRD with a `status.phase: "Provisioning"` could flag as drift every cycle, which is a fundamental design flaw for this domain. The beta announcement is silent on status handling, which is telling.
No free lunch in cloud.