1. Kapitan: The Engine Under the Hood
You can't talk about Commodore without mentioning Kapitan. Commodore is fundamentally an opinionated management layer on top of Kapitan, a tool that compiles complex configurations from various sources. Kapitan does the heavy lifting of rendering templates
and managing a hierarchical configuration structure. It supports multiple templating languages, including Jsonnet and Jinja2, allowing teams to generate Kubernetes manifests, Terraform plans, and more from a single source of truth. Understanding how Commodore uses Kapitan helps you create more sophisticated and maintainable components, which are the building blocks of Commodore's management system.
2. Jsonnet: For Powerful Templating
While Kapitan supports multiple input types, Jsonnet is where the real power lies. Jsonnet is a data templating language that helps you write cleaner, more maintainable, and less repetitive configurations. Because Commodore components often use Jsonnet, mastering it is essential for advanced use cases. It allows you to create abstractions, functions, and variables to manage complex Kubernetes object definitions that would be unwieldy in plain YAML. This pairing lets you define a library of standard configurations that can be easily customized and reused across different applications and environments, reducing both errors and boilerplate code.
3. Helm: For Kubernetes Package Management
Helm is the de facto package manager for Kubernetes, used to find, share, and use software built for Kubernetes. While Commodore manages the overall cluster configuration, it doesn't replace the need to package individual applications. Commodore can integrate with and manage Helm charts, allowing you to leverage the vast ecosystem of pre-built applications. For example, Commodore can post-process the output of a Helm template to inject necessary cluster-specific details, giving you the best of both worlds: the convenience of Helm packages and the strict, tenant-aware configuration control of Commodore.
4. Terraform: For Infrastructure as Code
Commodore manages the configuration inside a Kubernetes cluster, but what about the cluster itself? That's where Terraform comes in. As a leading Infrastructure as Code (IaC) tool, Terraform is used to provision and manage the underlying cloud infrastructure, such as VPCs, subnets, and the Kubernetes clusters themselves. A typical workflow involves using Terraform to create the foundational infrastructure. Once the cluster is running, Commodore takes over to deploy and manage the applications and services within it. This creates a clean separation of concerns between infrastructure provisioning and application configuration management.
5. Argo CD: For GitOps Continuous Delivery
Commodore compiles your desired state into a set of Kubernetes manifests and stores it in a Git repository. But how do you get that state into the cluster? Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes that is a perfect match for this task. Argo CD continuously monitors a Git repository (your Commodore-managed catalog) and automatically syncs the live state of the cluster with the desired state defined in Git. This pull-based model enhances security and provides a clear audit trail of all changes, making your deployment process more reliable and observable.
6. Open Policy Agent (OPA): For Policy as Code
As your Kubernetes environment grows, enforcing organizational policies becomes critical. Open Policy Agent (OPA) is a general-purpose policy engine that decouples policy decisions from your application logic. When paired with Commodore, you can use OPA (often via its Kubernetes integration, Gatekeeper) to enforce rules on the configurations that Commodore generates. For example, you can create policies that prevent services from being exposed to the public internet, require all container images to come from a trusted registry, or enforce specific resource limits. This adds a crucial layer of automated governance to your configuration management workflow.
7. Crossplane: For Cloud-Native Infrastructure Management
For teams that want to manage everything through the Kubernetes API, Crossplane offers a compelling alternative or complement to Terraform. Crossplane extends Kubernetes, turning your cluster into a universal control plane that can provision and manage external resources like databases, storage buckets, and even other Kubernetes clusters. Commodore components can be used to deploy Crossplane's compositions and resource definitions (XRDs). This allows platform teams to define their own infrastructure APIs within Kubernetes, which application teams can then consume in a self-service manner, all while the entire configuration is managed through Commodore and Git.













