---
title: Exploring Kapitan
date: '2019-04-29T22:12:03.284Z'
author: Ben Ebsworth
description: >-
  Exploring the capabilities of Kapitan for configuration management, with an
  analysis of its fit for contextualising per-environment configuration
labels: 'technology,kubernetes,developer experience'
keywords: >-
  kustomize,kubernetes,CI/CD,CI,CD,GCP,skaffold,tekton,declarative,platform,templating,yaml,google
  cloud platform,knative,kubectl
release: true
markdown_url: /blog/using-kapitan/
canonical_url: 'https://benebsworth.com/blog/using-kapitan/'
---
![kustomize](/blog/using-kapitan/kustomize.jpg)

Kustomize is a fairly new templating tool that has come out of the efforts by the team at [GoogleCloudPlatform](https://github.com/GoogleCloudPlatform). It seeks to provide a different approach to managing the packaging or contextualisation of a number of Kubernetes resources. Compared to Helm which uses variable substitution and other even more obfuscating ways of constructing resources, such as conditionals and iterations available in the Golang templating tool [Sprig](https://github.com/Masterminds/sprig), Kustomize forces the definition of all required resources and then provides a mechanism of merging, replacing and sourcing resources for the given environment or context.

In terms of complexity I would argue that Kustomize is an intermediate step between using raw Kubernetes resources and going deep into templating via [Helm](https://helm.sh/) or other tools. Where I believe Helm still has a strong use-case when it comes to building more complex abstractions, as well as providing a strong story around sharing and versioning, through its packaging and repository system.
