Skip to content

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).

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)