helmgen Tag Reference
helmgen compiles tagged YAML manifests into complete Helm charts. Each YAML tag maps to a Helm template construct.
!var <path>
Reference a .Values path. Optionally provide a default with = and pipes with |.
name: !var name
replicas: !var replicaCount=3
image: !var image.repository|quote Compiles to:
name: {{ .Values.name }}
replicas: {{ .Values.replicaCount | default 3 }}
image: {{ .Values.image.repository | quote }} !helm <expr>
Raw Helm/Go template expression passthrough. Use as an escape hatch for anything helmgen doesn't natively support.
namespace: !helm .Release.Namespace
version: !helm .Chart.AppVersion !block / !block-forced
!block path wraps in with .Values.path + toYaml. !block-forced uses default dict to always emit.
resources: !block resources
tolerations: !block-forced tolerations !if / !else
Conditional on a .Values path being truthy.
hostNetwork: !if controller.hostNetwork
dnsPolicy: !else ClusterFirst !when
Conditional using an hx expression. Scalar form for single values, tagged-key form for wrapping multiple children.
# Scalar form
enableServiceLinks: !when 'controller.enabled and controller.exposeServices'
dnsPolicy: !else ClusterFirst
# Tagged-key form (wraps children)
!when 'int(replicaCount) > 1':
minReadySeconds: 30
strategy:
type: RollingUpdate !expr
Computed scalar value from an hx expression.
containerPort: !expr 'int(controller.containerPort)'
enabled: !expr 'controller.enabled ? "true" : "false"' !let
Bind a template variable from an hx expression. Must be used as a tagged key.
!let 'replicas=controller.replicaCount':
replicas: !expr '$replicas' Compiles to:
{{- $replicas := .Values.controller.replicaCount }}
replicas: {{ $replicas }} !each / !each-map
Range over a list or map from .Values.
# List
containers:
- !each:containers:item
name: !var item.name
image: !var item.image
# Map
annotations:
key: !each-map:annotations:k:v !include
Include a named Helm template partial.
labels: !include mychart.labels
name: !include mychart.fullname | trunc 63 !tpl
Evaluate a values path as a Go template.
annotations: !tpl annotations !required
Require a value, failing with a message if missing.
image: !required '"image.repository is required" image.repository' helmgen build
helmgen build -i manifests/ -o my-chart/ --name my-chart --version 1.0.0 Compiles tagged YAML manifests into a complete Helm chart with Chart.yaml, values.yaml, and templates.
helmgen validate
helmgen validate -i manifests/
helmgen validate -i manifests/ -v custom-values.yaml Full round-trip validation: compile → helm template → parse rendered YAML. Requires helm on PATH.
helmgen import
helmgen import -i my-chart/ -o helmgen-manifests/ Convert an existing Helm chart's Go templates into helmgen tagged YAML.