k8sviz is a tool to generate Kubernetes architecture diagrams from the actual state in a namespace. Currently, this only generates a diagram similar to https://github.com/kubernetes/community/tree/master/icons#usage-example by using graphviz. For examples of the generated diagrams, see Examples below.
There are two implementations, bash script version and go version. Bash script version was intended to be just a prototype. So, it will be migrated to go version.
k8sviz.sh
depends on below commands:
- awk
- bash
- cat
- dot (graphviz)
- getopt
- grep
- kubectl
- sed
- seq
- tr
k8sviz
only depends dot (graphviz) command.
Just git clone this repository or copy k8sviz.sh
file and icons
directory with keeping directory structure.
$ git clone https://github.com/mkimuram/k8sviz.git
$ cd k8sviz
$ export GO111MODULE=on
$ go build -o k8sviz .
k8sviz binary can be moved to another directory, but icons
directory needs to be in the same directory to the binary.
$ ./k8sviz.sh --help
Generate Kubernetes architecture diagrams from the actual state in a namespace
Usage:
k8sviz.sh [options]
Options:
-h, --help Displays the help text
-n, --namespace The namespace to visualize. Default is default
-o, --outfile The filename to output. Default is k8sviz.out
-t, --type The type of output. Default is dot
$ ./k8sviz -h
Usage of ./k8sviz:
-kubeconfig string
absolute path to the kubeconfig file (default "/root/.kube/config")
-n string
namespace to visualize (shorthand) (default "namespace")
-namespace string
namespace to visualize (default "namespace")
-o string
output filename (shorthand) (default "k8sviz.out")
-outfile string
output filename (default "k8sviz.out")
-t string
type of output (shorthand) (default "dot")
-type string
type of output (default "dot")
Examples are only shown for bash script version, but go version should work in the same way. Report bugs or critical differences, if you find any.
- Generate dot file for namespace
default
$ ./k8sviz.sh -n default -o default.dot
- Generate png file for namespace
default
$ ./k8sviz.sh -n default -t png -o default.png
- Output for an example wordpress deployment will be like below:
- Output for an example cassandra deployment with statefulset will be like below:
Examples for more complex deployment (kubeflow case)
- Generate dot file for namespace
kubeflow
andistio-system
$ ./k8sviz.sh -n kubeflow -o examples/kubeflow/kubeflow.dot
$ ./k8sviz.sh -n istio-system -o examples/kubeflow/istio-system.dot
- Generate png file for namespace
kubeflow
andistio-system
$ ./k8sviz.sh -n kubeflow -t png -o examples/kubeflow/kubeflow.png
$ ./k8sviz.sh -n istio-system -t png -o examples/kubeflow/istio-system.png
This project is licensed under the Apache License - see the LICENSE file for details