Applications deployed on Kubernetes are typically made up of multiple parts. A common practice is to combine multiple components into a single yaml file that will be submitted to the cluster using kubectl apply with the -f switch. It is also common to deploy the same application across multiple environments, whether those environments are separate Kubernetes clusters or different namespaces within the same cluster. There are several shortcomings to the approach of using a single yaml file and kubectl for application deployment across multiple environments. Helm was created to address some of these shortcomings.