I have Kubernetes manifests for a Deployment, Service, and Ingress, and I’m trying to understand how Helm fits into deploying them. Do I need to turn every setting into a template variable, or can I start with the YAML I already have?
Do I need to rewrite my Kubernetes YAML to use Helm?
Answers
You can start with the manifests as they are. Put the resource YAML files in a chart’s templates directory and add the chart metadata file. Helm can render plain Kubernetes YAML without any placeholders.
Templating is useful when you want to change things between installations, such as the image tag, replica count, or host name. Put those values in a values file and reference them from the templates. You don’t have to make every field configurable.
Reply to this answer
Think of Helm as a way to package and render Kubernetes resources, not a different kind of Kubernetes YAML. A basic chart has chart metadata and a templates directory. Your Deployment, Service, and Ingress can go there.
One practical workflow is to get the existing manifests working first, move copies into the chart, and test the rendered result with Helm. Then decide which fields should differ across environments and template only those. Keep the rendered manifests valid Kubernetes resources, and avoid maintaining separate copies of the same app configuration if you can.
Reply to this answer
For a small app, don’t over-template it. If the YAML is stable and you only need Helm to install the resources together, static templates are fine. Add a values file when you have a real need to set different images, resource limits, ingress settings, or replica counts for different installations.
A generated chart scaffold can be a starting point, but you can also make a minimal chart yourself. Either way, review the templates and rendered YAML rather than assuming the scaffold is already a good fit.
Reply to this answer
Add your answer
Answers are reviewed before publication.
3F~Caliper:
So a chart can work before I add any values or template expressions?
9R__Grommet:
Yes. Start with static manifests, then add values for the parts you actually need to vary. Check the rendered output before deploying it.