Overview
The k8s-tools suite aggregates 20+ individual utilities for working with kubernetes into a single dockerized toolchain, and provides a zero-dependency automation framework for extending and interacting it. Project-local clusters, cluster lifecycle automation, customizable TUIs, and more.
This is a sibling project for compose.mk, which is a more general automation framework, and also serves as a reference implementation for extending it. Docs are incomplete and still a work in progress.
k8s-tools operates at a project-automation layer and is designed to embrace and extend other tools, so it doesn't really conflict or compete with anything. It's useful for CI/CD pipelines or general development, and is designed to be embedded alongside existing projects.
Introduction
At a high level, the k8s-tools suite has 2 main components that can be used individually or together. Those components are a collection of tool-container definitions, and an automation framework for extending and interacting with the containers.
This reference focuses on a few use-cases in particular:
- Cluster lifecycle / development / debugging workflows in general.
- Project-local kubernetes clusters & corresponding lifecycle automation using
kind
ork3d
. - Decoupling project automation from the choice of CI/CD backend.
- Separation of automation tasks from specifications for runtime / container context.
- Per-project tool-versioning, providing defaults but allowing overrides, and ensuring versions match everywhere.
- Less shell code in general, but where we need it: it shouldn't be embedded in YAML, Jenkinsfiles, etc.
k8s-tools.yml
-
Aggregates 20+ individual utilities for working with kubernetes into one dockerized toolchain, hosted inside a single docker-compose file. Official sources are used where possible.. Containers defined here aren't built from scratch. Low-level tools (like
kubectl
,helm
, etc) mostly come from alpine/k8s but many other tools (likeargo
,helm
,knative
,cdk
,k9s
,k3d
,ansible
, etc) are also included. Tools containers are versioned independently, using defaults but allowing overrides, and are pulled only if/when they are used. k8s.mk
-
A library/utility that builds on k8s-tools.yml, providing powerful ways to run automation inside the tool-containers and script orchestration across them. As a stand-alone utility,
k8s.mk
can enable interactive workflows like inspection, debugging, and prototyping. As a library, you can very quickly build on it to express custom project automation that's surprisingly portable, powerful, and flexible.
Getting Started
Jump directly to the quickstart if you want to start experimenting, but if you're waiting to learn more about what this project can do, start at the main demo for cluster lifecycle management.