Lightweight Golang package for executing commands in remote Kubernetes pods
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.circleci
examples
.gitignore
CODE_OF_CONDUCT.md
Gopkg.lock
Gopkg.toml
LICENSE
Makefile
README.md
cmd.go
kube_util.go

README.md

kube-exec

CircleCI Go Report Card Documentation

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 through stdout and stderr

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:

Disclaimer

This is not an official Microsoft project.