Skip to content

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

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)