kube-gen
is a template rendering tool that generates files and executes commands based on Kubernetes events and metadata.
See the Releases page
kube-gen
can be run as a standalone container, or bundled in a container with other applications.
Images are available on Dockerhub:
$ docker run kylemcc/kube-gen ...
$ docker run ghcr.io/kylemcc/kube-gen/kube-gen ...
When run with no arguments (or with -h/-help
), kube-gen
prints the following usage message.
$ kube-gen
Usage: kube-gen [options] <template> [<output>]
Render templates using Kubernetes metadata and events
Options:
-host string
If not set will use kubeconfig. If using proxy - set it to http:https://localhost:8001
-interval int
-kubeconfig string
(optional) absolute path to the kubeconfig file (default "/Users/kyle/.kube/config")
-log-cmd
log the output of the pre/post commands (default true)
-overwrite
overwrite the output file if it exists (default true)
-post-cmd string
command to run after template generation in complete
-pre-cmd string
command to run before template generation
-quiet
when set to true, nothing is logged
-type value
types of resources to pull [pods, services, endpoints] - May be specified multiple times. If not specified, all types will be returned
-version
display version information
-wait string
<minimum>[:<maximum>] - the minimum and optional maximum time to wait after an event fires.E.g.: 500ms:5s
-watch
watch for new events
Arguments:
template: path or URL of the template file to render, or - to read from STDIN
output: (Optional) path to write the rendered content. If not specified,
rendered content is printed to STDOUT. By default, this file will
be overwritten if it exists. Use -overwrite=false to return an
error instead
By default, kube-gen
will look for a kubeconfig file at $HOME/.kube/config
. A different kubeconfig file may be specified by using the -kubeconfig
flag. Alternatively, kube-gen
provides a -host
flag that, if set, will supersede the -kubeconfig
. The -host
flag is best paired with kubectl proxy
, which listens on 127.0.0.1:8001 by default. The -host
flag may also be set to the value of kube-apiserver
's --insecure-bind-address
/ --insecure-port
.
The -watch
flag configures kube-gen
to watch the API for changes to Services
, Pods
, and Endpoints
(support for other types is forthcoming). This mode is useul when combined with the -pre-cmd
, -post-cmd
, and -wait
parameters.
kube-gen
supports templates written in Go`s text/template language. It supports all of the built in functions, as well as numerous custom functions described below. Many of the custom functions (and the documentation for those functions) have been borrowed from docker-gen. Those functions, along with the accompanying License and Copyright are located in the dockergen_template_functions.go source file.