Files
Asim Aslam 1250d33f86 deploy/kubernetes: dependency-light reconcile core (alpha) (#4853)
Adds Reconcile(desired, observed) — the pure decision an operator's
reconcile loop runs: given a desired Agent/Service/Flow resource and the
observed cluster state, it returns the one action to converge (create /
update / noop) plus Ready/Error status conditions.

No controller-runtime, no client-go: the decision is a pure function of
desired + observed, so it's fully unit-testable without a cluster. A
future operator binary supplies Observed from the live cluster and applies
the Action; only that adapter needs the Kubernetes client — keeping the
heavy dependency out of the core module.

Covers #4842 (Option B). Tests: create-when-absent, noop-when-matched-and-
ready, update-on-drift, progressing-when-under-replicated, error-on-invalid
-spec.


Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-15 15:12:20 +01:00
..
2026-07-12 13:01:09 +01:00
2026-07-12 13:01:09 +01:00

Kubernetes deployment foundation (alpha)

This package is the first opt-in Kubernetes foundation for the Go Micro lifecycle: Service, Agent, and Flow resources. It is intentionally experimental and additive. Nothing in the Go Micro runtime installs these resources or changes production defaults.

What is included

  • Alpha CRD manifests in config/crd/ for agents.micro.dev, services.micro.dev, and flows.micro.dev.
  • A small dependency-free mapper that turns a desired Go Micro resource into the Kubernetes Deployment shape an operator reconciliation loop will own.
  • A dependency-free Reconcile(desired, observed) core that decides the one action needed to converge (create / update / noop) and the Ready/Error status conditions — no controller-runtime, no client-go, fully unit-testable. A future operator binary supplies the observed state and applies the action; only that adapter needs the Kubernetes client.
  • Unit tests that validate the structural CRD fragments, the Agent-to-Deployment mapping, and the reconcile decision/conditions.

Local validation

go test ./deploy/kubernetes

If you have a Kubernetes cluster and kubectl available, you can also perform a server-side dry run of the CRDs:

kubectl apply --dry-run=server -f deploy/kubernetes/config/crd/

The manifests are v1alpha1; expect the API shape to evolve before this becomes a production operator.