Skip to content

Latest commit

 

History

History
122 lines (104 loc) · 4.81 KB

README.md

File metadata and controls

122 lines (104 loc) · 4.81 KB

k8sviz

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.

Implementations

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.

Prerequisites

Bash script version

k8sviz.sh depends on below commands:

  • awk
  • bash
  • cat
  • dot (graphviz)
  • getopt
  • grep
  • kubectl
  • sed
  • seq
  • tr

Go version

k8sviz only depends dot (graphviz) command.

Installation

Bash script version

Just git clone this repository or copy k8sviz.sh file and icons directory with keeping directory structure.

Go version

$ 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.

Usage

Bash script version

$ ./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

Go version

$ ./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

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.

Examples for tutorial deployments in default namespace

  • 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

Examples for more complex deployment (kubeflow case)

  • Generate dot file for namespace kubeflow and istio-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 and istio-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

License

This project is licensed under the Apache License - see the LICENSE file for details