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-dexecby 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
Runningstate - attaches to the pod and allows you to stream data to the pod through
stdin, and from the pod back to the program throughstdoutandstderr
How to use it
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: