github.com/arkadijs/kubevars

Print Kubernetes services env vars for technology-agnostic consumption


Install
go get github.com/arkadijs/kubevars

Documentation

Kubevars

Kubernetes Pod has environment variables set via Docker to point to services running on the same cluster:

"Env": [
    "KUBERNETES_SERVICE_HOST=10.84.0.1",
    "KUBERNETES_SERVICE_PORT=443",
    "KUBERNETES_PORT=tcp://10.84.0.1:443",
    "KUBERNETES_PORT_443_TCP=tcp://10.84.0.1:443",
    "KUBERNETES_PORT_443_TCP_PROTO=tcp",
    "KUBERNETES_PORT_443_TCP_PORT=443",
    "KUBERNETES_PORT_443_TCP_ADDR=10.84.0.1",
    "KUBERNETES_RO_SERVICE_HOST=10.84.0.2",
    "KUBERNETES_RO_SERVICE_PORT=80",
    "KUBERNETES_RO_PORT=tcp://10.84.0.2:80",
    "KUBERNETES_RO_PORT_80_TCP=tcp://10.84.0.2:80",
    "KUBERNETES_RO_PORT_80_TCP_PROTO=tcp",
    "KUBERNETES_RO_PORT_80_TCP_PORT=80",
    "KUBERNETES_RO_PORT_80_TCP_ADDR=10.84.0.2",
    "INFLUX_MASTER_SERVICE_HOST=10.84.0.3",
    "INFLUX_MASTER_SERVICE_PORT=8085",
    "INFLUX_MASTER_PORT=tcp://10.84.0.3:8085",
    "INFLUX_MASTER_PORT_8085_TCP=tcp://10.84.0.3:8085",
    "INFLUX_MASTER_PORT_8085_TCP_PROTO=tcp",
    "INFLUX_MASTER_PORT_8085_TCP_PORT=8085",
    "INFLUX_MASTER_PORT_8085_TCP_ADDR=10.84.0.3",
    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],

I want to get the same information for my applications that are launched by other means, like CoreOS Fleet or Deis.

kubevars come to rescue:

$ ./bin/kubevars.amd64 -h
Usage: kubevars [-etcd http://host[:port]] [-format <docker|json|plain>]
Flags:
  -etcd="http://localhost:4001": The ETCD endpoint
  -format="docker": One of: docker, json, plain
$ ./bin/kubevars.amd64
-e INFLUX_MASTER_SERVICE_HOST="10.84.0.3"
-e INFLUX_MASTER_SERVICE_PORT="8085"
-e INFLUX_MASTER_PORT="tcp://10.84.0.3:8085"
-e INFLUX_MASTER_PORT_8085_TCP="tcp://10.84.0.3:8085"
-e INFLUX_MASTER_PORT_8085_TCP_PROTO="tcp"
-e INFLUX_MASTER_PORT_8085_TCP_PORT="8085"
-e INFLUX_MASTER_PORT_8085_TCP_ADDR="10.84.0.3"
-e KUBERNETES_SERVICE_HOST="10.84.0.1"
-e KUBERNETES_SERVICE_PORT="443"
-e KUBERNETES_PORT="tcp://10.84.0.1:443"
-e KUBERNETES_PORT_443_TCP="tcp://10.84.0.1:443"
-e KUBERNETES_PORT_443_TCP_PROTO="tcp"
-e KUBERNETES_PORT_443_TCP_PORT="443"
-e KUBERNETES_PORT_443_TCP_ADDR="10.84.0.1"
-e KUBERNETES_RO_SERVICE_HOST="10.84.0.2"
-e KUBERNETES_RO_SERVICE_PORT="80"
-e KUBERNETES_RO_PORT="tcp://10.84.0.2:80"
-e KUBERNETES_RO_PORT_80_TCP="tcp://10.84.0.2:80"
-e KUBERNETES_RO_PORT_80_TCP_PROTO="tcp"
-e KUBERNETES_RO_PORT_80_TCP_PORT="80"
-e KUBERNETES_RO_PORT_80_TCP_ADDR="10.84.0.2"