Skip to content

Kapitan: Keep your ship together

GitHub Sponsors GitHub Stars

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.

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

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.

Full installation guide

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 #kapitan Slack channel.
  • Related projectsTesoro (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?

Video tutorials

Kapitan Youtube Channel