plugin-kube
| Version | 2026.174.1200 |
| Repo | superproject |
| Plugin | yes — see the plugin reference |
OUT-OF-TREE charly plugin owning ALL Kubernetes cluster interaction: the
kube cluster-probe check VERB, the deploy:k8s SUBSTRATE (the
target: k8s workload deploy, F1 — kubectl apply -k on the
host-generated Kustomize tree), AND the k3s post-provision finalization
(S3, FINAL/K5 unit 6 — relocated wholesale from charly/k3s_post.go: the
guest-forward kubeconfig rewrite + the ~/.kube/config merge) the
k3s-server / target:k8s deploy seam needs — a standalone Go module
(go.mod + main.go) that speaks the Kubernetes API (client-go dynamic +
clientcmd) over go-plugin gRPC via the charly plugin SDK
(github.com/opencharly/sdk). charly’s loader fetches this candy’s repo,
go-builds the provider binary on the HOST, and serves it OUT-OF-PROCESS
via LocalTransport — so the k8s.io/client-go + k8s.io/apimachinery
dependency lives HERE, out of charly’s core go.mod (the goadb-analog of
candy/plugin-adb), while kube: authoring stays unchanged: the
kube: <method> sugar desugars to plugin/plugin_input — the method +
every kube-exclusive modifier ride the input map, validated against
this plugin’s own #KubeInput — and dispatches through the provider
registry exactly like a built-in (ResolveVerb → grpcProvider →
invokeVerbProvider hands it the full desugared #Op, after the host
pre-resolves any cluster: profile to a concrete kube_context in the
input map); target: k8s resolves to this
plugin’s deploy:k8s provider over the E3b reverse channel — THIS
plugin’s own preresolve.go (F6, FINAL/K5 unit 6a; dispatched via the
generalized deploy_preresolve.go:wireDeployPreresolver seam) resolves the
cluster template + image Capabilities into the egress-validated Kustomize
tree, reaching the host’s “deploy-entity-resolve” + “k8s-generate-
kustomize” HostBuild seams, and this plugin applies it. Provides the full
13-method probe surface
(nodes/wait-nodes/pods/wait-ready/ingress/ingressclass/storageclass/
service/lb-external-ip/addons/apply/delete/raw), the deploy:k8s
substrate, PLUS the internal k3s-post-provision deploy seam (this
plugin’s own k3s_post.go: the guest-forward kubeconfig rewrite via the
“deploy-entity-resolve” HostBuild seam, then the kubeconfig merge into
~/.kube/config). The R10 consumers are the check-k3s bed (the kube:
verb, via the k3s-server candy) and the check-k8s-deploy bed (the
deploy:k8s substrate).
Acceptance plan
Section titled “Acceptance plan”This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.
| Intent | Step |
|---|---|
check |
the cluster reports at least one Ready node (the out-of-process plugin verb dispatches through the registry and probes the live cluster) |