Documentation
¶
Overview ¶
Package kubectl provides helpers for running kubectl commands with the correct KUBECONFIG environment variable set. It centralises the pattern that was previously duplicated across network, x402, model, agent, and cmd/obol packages.
Index ¶
- Variables
- func Apply(binary, kubeconfig string, data []byte) error
- func ApplyOutput(binary, kubeconfig string, data []byte) (string, error)
- func ApplyServerSideForceConflicts(binary, kubeconfig string, data []byte, fieldManager string) error
- func EnsureCluster(cfg *config.Config) error
- func FormatClusterDownError(err error, args []string) string
- func Output(binary, kubeconfig string, args ...string) (string, error)
- func Paths(cfg *config.Config) (binary, kubeconfig string)
- func PipeCommands(binary, kubeconfig string, args1, args2 []string) error
- func Run(binary, kubeconfig string, args ...string) error
- func RunSilent(binary, kubeconfig string, args ...string) error
Constants ¶
This section is empty.
Variables ¶
var ErrClusterDown = errors.New("cluster appears to be stopped — run 'obol stack up' to start it")
ErrClusterDown indicates the Kubernetes API server is unreachable, typically because the k3d cluster is stopped.
Functions ¶
func ApplyOutput ¶ added in v0.8.0
ApplyOutput pipes the given data into kubectl apply -f - and returns stdout.
func ApplyServerSideForceConflicts ¶ added in v0.9.0
func ApplyServerSideForceConflicts(binary, kubeconfig string, data []byte, fieldManager string) error
ApplyServerSideForceConflicts pipes the given data into kubectl apply --server-side --force-conflicts -f -. Use it only for narrow compatibility migrations where the caller has already decided which manager must own the restored fields.
func EnsureCluster ¶
EnsureCluster verifies that the Kubernetes API server is reachable using the kubeconfig under cfg.ConfigDir. It checks the kubeconfig file exists, then actively probes the API server (kubectl is the source of truth — file presence alone does not mean ops will succeed). When the probe fails with a "cluster down"-shaped error AND the deployment looks like a k3d stack, it attempts ONE kubeconfig refresh via `k3d kubeconfig write` and retries the probe before giving up. This recovers from the common port-drift case after `k3d cluster stop && k3d cluster start`, where the kubeconfig on disk still points at the previous (now-defunct) API server port.
func FormatClusterDownError ¶ added in v0.8.0
FormatClusterDownError returns a contextual message for a cluster-down error based on the CLI arguments. Returns empty string if err is not ErrClusterDown.
func Output ¶
Output executes kubectl and returns the captured stdout. Stderr is captured and included in the returned error on failure.
func PipeCommands ¶ added in v0.8.0
PipeCommands pipes the stdout of the first kubectl command into the stdin of the second. Both commands run with the correct KUBECONFIG. This is useful for patterns like "kubectl create --dry-run -o yaml | kubectl replace -f -" which avoid the 262KB annotation limit that kubectl apply imposes.
Types ¶
This section is empty.