Introduction #
Package managers in Kubernetes simplify the deployment, management and configuration of applications in the cluster. They let you describe, manage and automate complex deployments through standardised configuration files.
Helm #
The most popular package manager for Kubernetes.
Overview #
Helm is a package manager for Kubernetes that automates the deployment and management of applications. It uses “charts” to package and version complete applications.
Features #
Helm lets you manage application versions, define custom configuration values and simplify repetitive deployments thanks to templates.
Usage example #
helm install my-app stable/my-chart This command installs a chart named my-app from the stable repository.Kustomize #
A template-free approach to configuration management.
Overview #
Kustomize lets you manage Kubernetes configurations without needing templates. It applies transformations to YAML resources to customise deployments, while avoiding file duplication.
Features #
Kustomize handles overlays and YAML patches, and makes it easier to manage multiple environments with specific variations without duplicating resources.
Usage example #
kustomize build ./my-appThis command generates the deployment configuration by applying the overlays defined in my-app.Carvel #
A suite of tools for managing Kubernetes applications.
Overview #
Carvel is a collection of Kubernetes configuration management tools, offering a modular approach to packaging, dependency management and dynamic application configuration.
Features #
Carvel includes tools such as ytt for templating, kbld for image management and kapp for deploying and managing resources.Usage example #
ytt -f config/ | kapp deploy -a my-app -f -This command uses ytt to generate the configurations and kapp to deploy the application.GitOps #
A deployment management approach based on version control.
Overview #
GitOps is a methodology in which the source code in a Git repository represents the desired state of the Kubernetes cluster. Configuration changes made in Git automatically trigger cluster updates through operators such as ArgoCD or Flux.
Features #
GitOps provides traceability of changes, version management and configuration auditing by keeping a history in Git.
Usage example #
kubectl apply -f https://github.com/my-org/my-app-configThis command synchronises the cluster with the application configurations defined in Git.Operator #
Advanced application management through dedicated controllers. That said, more and more operators are now deployed via HELM.
Overview #
Operators let you manage complex applications through dedicated Kubernetes controllers. They automate state and lifecycle management for applications that require particular configurations and dependencies.
Features #
Operators encapsulate application-specific logic such as database backups, scaling and rolling updates, while respecting the application's own practices.
Usage example #
kubectl apply -f my-operator.yamlThis command installs an Operator dedicated to managing a complex application.Choosing a package manager #
- Helm: for packaged applications and simple deployments with many templates.
- Kustomize: for deployments that need fine-grained customisation without duplicating configurations.
- Carvel: for a modular, flexible approach with dedicated tools for each task.
- GitOps: for environments where configurations must be versioned and audited.
- Operator: for complex applications whose dependencies and lifecycles are managed automatically.