kube-exec
is a library similar to os/exec
that allows you to run commands in a Kubernetes pod, as if that command was executed locally.
It is inspired from
go-dexec
by ahmetb, which does the same thing, but for a Docker engine.
The interface of the package is similar to os/exec
, and essentially this:
- creates a new pod in Kubernetes based on a user-specified image
- waits for the pod to be in
Running
state - attaches to the pod and allows you to stream data to the pod through
stdin
, and from the pod back to the program throughstdout
andstderr
cfg := kube.Config{
Kubeconfig: os.Getenv("KUBECONFIG"),
Image: "ubuntu",
Name: "kube-example",
Namespace: "default",
}
cmd := kube.Command(cfg, "/bin/sh", "-c", "sleep 2; echo Running from Kubernetes pod;")
cmd.Stdout = os.Stdout
err := cmd.Run()
if err != nil {
log.Fatalf("error: %v", err)
}
Here's a list of full examples you can find in this repo: