plugin-kube
| Version | 2026.216.1851 |
| Repo | box/github.com/opencharly/plugin-kube:v2026.237.1424 |
| Plugin | yes — see the plugin reference |
OUT-OF-TREE charly plugin owning ALL Kubernetes cluster interaction: the
kube cluster-probe check VERB, the deploy:kubernetes SUBSTRATE (the
target: kubernetes workload deploy, F1 — kubectl apply -k on the
plugin-generated Kustomize tree (candy/plugin-kube/materialize.go’s materializeKustomize, on the host)), 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:kubernetes 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; this plugin
self-resolves any cluster: profile to a concrete kube_context itself
now, K-wave W3a A3-phase-2 — no host pre-resolve); target: kubernetes
resolves to this
plugin’s deploy:kubernetes 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, self-loading the project PLUGIN-SIDE (K-wave W3a A3-phase-2 —
no HostBuild round trip left in this leg), 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:kubernetes
substrate, PLUS the internal k3s-post-provision deploy seam (this
plugin’s own k3s_post.go: the guest-forward kubeconfig rewrite, now
self-loading the project PLUGIN-SIDE too, 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:kubernetes 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) |