micro--go-micro
1250d33f86
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>
37 行
1.4 KiB
Markdown
37 行
1.4 KiB
Markdown
# 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
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
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.
|