Helm Chart Generator
Scaffold a minimal Helm chart (Chart.yaml, values.yaml, Deployment, Service) from a simple form, runs entirely in your browser.
About this tool
Enter a chart name, container image, port, and replica count, and get back the four files a minimal but real Helm chart needs: Chart.yaml, values.yaml, templates/deployment.yaml, and templates/service.yaml. The Deployment and Service templates read their configuration from values.yaml via {{ .Values.* }} references rather than hardcoding it, the actual point of templating a chart instead of writing static manifests.
The image is split into its repository and tag automatically (mindful of registry hosts that include a port, like registry:5000/my-app, so that colon is never mistaken for the tag separator), matching the separate image.repository/image.tag keys Helm’s values.yaml convention expects.
This scaffolds a genuinely minimal chart: one Deployment, one Service, no ConfigMap, Ingress, HorizontalPodAutoscaler, or _helpers.tpl. It is meant as a correct starting point to build on with helm create-style additions, not a complete production chart.
Frequently asked questions
- Where do I put these four files?
- Chart.yaml and values.yaml go at the root of your chart directory (e.g. my-app/Chart.yaml), and the other two go inside a templates/ subdirectory (my-app/templates/deployment.yaml and my-app/templates/service.yaml), matching the directory layout Helm itself expects.
- Why do the Deployment and Service reference {{ .Values.replicaCount }} instead of a literal number?
- That is what makes it a template rather than a static manifest: values.yaml holds the actual number, so a user of the chart can override it per-environment (helm install --set replicaCount=5) without editing the template files themselves.
- What is {{ .Release.Name }} in the resource names?
- It is a built-in Helm template variable containing the release name given at install time (helm install my-release ./my-app), letting the same chart be installed multiple times in one cluster under different release names without its resource names colliding.
- Is my configuration sent anywhere?
- No. Every file is assembled entirely in your browser, no network request is made.
Continue learning
- DocumentationGitOps PrinciplesWhy treating Git as the single source of truth for cluster state changes how deployments, rollbacks, and audits actually work.
- BlogKubernetes OOMKilled Troubleshooting GuideA practical Kubernetes OOMKilled troubleshooting guide using kubectl describe, previous logs, events, metrics, requests, limits, QoS, and node memory pressure.
- ToolKubernetes Manifest GeneratorGenerate a Deployment and Service manifest pair from a simple form, runs entirely in your browser.
- DocumentationKubernetes FundamentalsLearn Kubernetes through Pods, Deployments, Services, probes, resources, rollouts, and an official-docs-based troubleshooting workflow.
- BlogTerraform Troubleshooting Guide: Fix the Errors Engineers Actually HitDiagnose Terraform initialization, validation, provider, authentication, state, drift, import, replacement, timeout, and CI failures with a safe workflow.
- ToolDockerfile GeneratorGenerate a working Dockerfile for Node.js, Python, Go, or a static site, runs entirely in your browser.