- A Deployment (or StatefulSet for databases) for Pods that run MySQL or the web server
- A PersistentVolume (PV) and PersistentVolumeClaim (PVC) to persist database data
- A Service to expose the web server
- A Secret to store credentials (e.g., admin passwords)
- Additional objects such as CronJobs for backups, Jobs, ConfigMaps, Ingress, etc.
kubectl apply commands and manually editing many manifests whenever defaults or configuration values change. That process becomes error-prone and difficult to scale as the application evolves.
Here is an example of multiple Kubernetes manifests concatenated in a single file (three documents separated by ---). This shows the many pieces an application may require:
- Packages all manifests needed for an application into a chart
- Supports templating so you can provide values to customize the chart for different environments
- Manages releases and revisions so you can upgrade or roll back an application reliably
- Installs and uninstalls all objects that belong to a release with a single command
helm install generally expects both a release name and a chart, for example:
values.yaml file or with --set on the command line. Helm renders templates using those values and submits the rendered manifests to Kubernetes.
Helm keeps track of release history. When you upgrade a release, Helm computes the diff between the current and desired states and applies the minimal changes necessary to the cluster. It stores revisions so you can roll back to a previous release if needed. Uninstalling a release with helm uninstall removes the objects that belong to that release, although you may need to manually clean up some cluster-level resources (or volumes with reclaimPolicy: Retain) afterward.
Common Helm operations
Helm treats a related set of Kubernetes objects as a single release. It handles templating, installs, upgrades, rollbacks, and uninstalls so you can manage an application as a unit instead of micromanaging each file.
- Simplifies deployment and lifecycle management of complex applications
- Enables reusable charts you can publish and share
- Allows environment-specific customization via
values.yamlor CLI overrides - Provides release history and safe rollbacks
- Chart structure (Chart.yaml, templates/, values.yaml)
- Helm templating language and functions
- Best practices for writing and sharing charts
- Helm release lifecycle and debugging upgrades/rollbacks
- Helm documentation: https://helm.sh/docs/
- Kubernetes documentation: https://kubernetes.io/docs/