Toolbox & Manifest


k8s-tools.yml is a docker compose file with 20+ container specifications covering popular platforming tools and other utilities for working with Kubernetes.

Toolbox Manifest


Here's a quick overview of the manifest and some details about versioning:

Local parts of the tool bundle: (latest here)

Upstream parts of the tool bundle: (latest here)

Curated Tool Containers


The collection is structured in the following ways:

  1. Executable file, i.e. ./k8s-tools.yml ... is equivalent to docker compose -f k8s-tools.yml ...
  2. Tool containers are easy to change or extend, in place. We use the dockerfile_inline directive to avoid extra clutter. Customize them if you need to, and you can still avoid having N Dockerfiles cluttering up your whole repository.
  3. Default versions for container-bases are provided, but you can set an environment variable to override them individually.
  4. Sane defaults for volumes & environments are included for each tool-container, meaning that sharing the working directory, docker socket, and kubeconfigs is done automatically. For host vs. container file permissions, k8s-tools.yml also attempts to provide smoother operations with root-user containers to avoid the common problem of messing up file permissions on the host.
  5. All tool containers are just-in-time & on-demand, so that having these declared in case of eventual use won't saddle you with an enormous bootstrap process. As usual with docker-compose, containers aren't pulled until they are used, and build-when-changed mostly works as you'd expect.

The overall focus for k8s-tools.yml is to stand alone with no host dependencies (not even Dockerfiles), yet provide boilerplate that's parametric enough to work pretty well across different projects without changing the compose file. Read on in the next section for more details about the manifest.