YAML to Helm Chart Generator

Convert Kubernetes YAML manifests to Helm chart templates with configurable values.

What is YAML to Helm Chart Generator?

Helm is the package manager for Kubernetes, and Helm charts are the standard way to package, configure, and deploy applications to Kubernetes clusters. Converting raw Kubernetes YAML manifests into a Helm chart is a common but tedious task: you need to create Chart.yaml, extract configurable values into values.yaml, and replace hardcoded values with Go template directives ({{ .Values.* }}) in the template files. This tool automates that entire process. It parses your Kubernetes Deployment YAML, identifies configurable values like container image, replica count, ports, environment variables, and resource limits, then generates a complete Helm chart structure with Chart.yaml for metadata, values.yaml with extracted defaults, and template files with proper Go templating.

How to Use

  1. Paste your Kubernetes Deployment YAML manifest into the input area — include the container spec with image, ports, environment variables, and resource limits
  2. Click "Generate" to parse the manifest and produce a Helm chart with Chart.yaml, values.yaml, and template files
  3. Review the generated output: values.yaml contains extracted defaults, and template files use Go template directives for dynamic values
  4. Copy each section into the corresponding files in your Helm chart directory (Chart.yaml, values.yaml, templates/deployment.yaml, templates/service.yaml, templates/_helpers.tpl)
  5. Run helm lint to validate the chart and helm template to preview the rendered output before deploying

Why Use This Tool?

Automatically extracts configurable values from raw Kubernetes YAML, eliminating manual identification of hardcoded values
Generates a complete Helm chart structure with proper Go template directives ({{ .Values.* }}) replacing static values
Handles environment variables, secret references, resource limits, container ports, and replica counts
Creates _helpers.tpl with standard Helm naming conventions for consistent resource naming across templates
Saves hours of manual conversion work when migrating existing Kubernetes manifests to Helm charts

Tips & Best Practices

  • Review the generated values.yaml and adjust defaults for your target environment (dev, staging, production)
  • Add additional templates like ingress.yaml, hpa.yaml, or serviceaccount.yaml as needed for your deployment
  • Run helm lint after generating to catch any template syntax errors before deploying
  • Create environment-specific override files (values-dev.yaml, values-prod.yaml) for different deployment targets
  • The generated chart is a starting point — extend it with hooks, tests, and schema validation as your application evolves

Frequently Asked Questions

What types of Kubernetes resources are supported?

The tool focuses on Deployment resources with container specs. It extracts image, replicas, ports, environment variables (including secret references), and resource limits. Service templates are also generated based on the container ports defined in the Deployment.

When should I NOT use this generator?

If you are creating a Helm chart from scratch (not converting existing manifests), use helm create instead. This tool is also not ideal for complex charts with subcharts, CRDs, or advanced templating logic that goes beyond simple value substitution.

How are secrets handled in the generated chart?

Environment variables that reference Kubernetes secrets (valueFrom.secretKeyRef) are extracted into values.yaml with secretName and secretKey references. The template uses the corresponding Go template directives so you can override secret names per environment.

Does this tool send my YAML to a server?

No. All processing happens entirely in your browser. Your Kubernetes manifests never leave your device, making this safe for internal or proprietary deployment configurations.

What if my YAML has multiple containers?

The tool processes the first container definition in the pod spec. For multi-container pods (sidecar patterns), you will need to manually adjust the generated templates to include additional containers with their own value references.

Can I customize the generated Helm chart?

Yes. The generated chart is a starting point that covers the most common Deployment and Service patterns. You can modify values.yaml to add or change defaults, extend templates with additional resources like Ingress or HPA, and add schema validation files.

Real-world Examples

Web application Deployment to Helm chart

Converting a standard web application Deployment YAML into a Helm chart with parameterized image, replicas, and environment variables.

Input
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
  template:
    spec:
      containers:
      - name: web-app
        image: myregistry/web-app:v1.2.0
        ports:
        - containerPort: 8080
        env:
        - name: DB_HOST
          value: postgres.default.svc.cluster.local
        resources:
          limits:
            memory: "512Mi"
            cpu: "500m"
Output
# values.yaml
replicaCount: 3
image:
  repository: myregistry/web-app
  tag: v1.2.0
  pullPolicy: IfNotPresent
service:
  port: 80
  targetPort: 8080
env:
  DB_HOST: postgres.default.svc.cluster.local
resources:
  limits:
    memory: "512Mi"
    cpu: "500m"

# templates/deployment.yaml (excerpt)
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
      - name: {{ .Chart.Name }}
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        ports:
        - containerPort: {{ .Values.service.targetPort }}

Microservice with secret references

Converting a microservice Deployment that references Kubernetes secrets into a Helm chart where secret names are parameterized.

Input
apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-service
spec:
  replicas: 2
  template:
    spec:
      containers:
      - name: auth
        image: company/auth:v2.0
        env:
        - name: JWT_SECRET
          valueFrom:
            secretKeyRef:
              name: auth-secrets
              key: jwt-token
Output
# values.yaml
replicaCount: 2
image:
  repository: company/auth
  tag: v2.0
secrets:
  jwtSecret:
    name: auth-secrets
    key: jwt-token

# templates/deployment.yaml (excerpt)
env:
- name: JWT_SECRET
  valueFrom:
    secretKeyRef:
      name: {{ .Values.secrets.jwtSecret.name }}
      key: {{ .Values.secrets.jwtSecret.key }}

Related Tools