Kapitan: Keep your ship together
Kapitan is an open source configuration management tool for complex infrastructure systems. It helps teams generate, organize, reuse, validate, and manage Kubernetes, Terraform, and other configuration across environments using inventory, templates, Jsonnet, Jinja2, Kadet, Helm, Kustomize, CUE, and external references.
-
Quick start
Get up and running in minutes with the getting started guide or the Kapitan Reference repository.
-
Core concepts
Learn how Kapitan uses inventory, targets, classes, and input types to turn templates into structured output.
-
Examples
Explore working examples in the Kapitan Reference repository, covering Kubernetes, Terraform, and multiple input types.
-
Contribute
Help improve Kapitan by contributing code, documentation, or feedback. We welcome pull requests and issue reports.
What Kapitan does
Kapitan turns a hierarchical inventory and a set of input templates into compiled configuration files ready for deployment. You define reusable classes, per-environment targets, and parameters in YAML. Kapitan compiles them into Kubernetes manifests, Terraform plans, scripts, documentation, or any text-based output you need.
graph LR
A["Inventory\n(classes + targets)"] --> B["kapitan compile"]
C["Input types\n(Jsonnet, Jinja, Helm, Kustomize, CUE, Kadet)"] --> B
D["References\n(secrets)"] --> B
B --> E["Compiled output\n(manifests, plans, scripts)"]
When Kapitan fits
- You manage the same application across many environments (dev, staging, prod, regions) and need a single source of truth.
- You want to reuse configuration fragments (classes) across targets without copy-paste.
- You need to combine multiple templating tools (Helm, Kustomize, Jsonnet, Jinja2, Python, CUE) in one pipeline.
- You want native secret management (GPG, Vault, AWS KMS, GCP KMS, Azure Key Vault) embedded in the same workflow.
- You prefer a GitOps-friendly compile step that generates fully rendered output before deployment.
When another tool may be enough
- Helm alone is sufficient if you only need to template a single chart with values files and do not share complex configuration across many services.
- Kustomize alone is sufficient if your environment differences are mostly patches and overlays on a small set of bases.
- Plain YAML with a CD tool is sufficient if you have very few environments and simple configuration with little reuse.
- Terraform alone is sufficient if you only manage infrastructure resources and do not need a broader multi-language configuration layer.
Install and try
Docker (recommended)
alias kapitan="docker run -t --rm -v $(pwd):/src:delegated kapicorp/kapitan"
kapitan compile -h
Pip
pip3 install --user --upgrade kapitan
Kapitan requires Python 3.10 or newer.
Trust and community
- Open source — MIT license, actively maintained by KapiCorp.
- Releases — regular tagged releases with release notes on GitHub.
- Community — ask questions and share patterns in the
#kapitanSlack channel. - Related projects — Tesoro (Kubernetes admission controller for Kapitan secrets) and Kapitan Reference (working examples).
View on GitHub · Join #kapitan · Sponsor us
Learn more
Why Kapitan?
Read the original motivation and design thinking in the blog post: Why do I need Kapitan?