Helm Service

Deploy Services with local, OCI, or public Helm charts.

The helm Service type deploys applications with Helm charts. It supports local charts, OCI registries, and public Helm repositories. You can include an optional Docker build step for custom images.

Native Helm includes environment variable mapping and advanced deployment features.

See Native Helm deployment for more information.

Examples

Local chart with Docker build:

Chart configuration

The chart section is required and defines which Helm chart to deploy. Set the chart fields in the Service configuration.

chart.name (required)

The chart name can be one of:

ValueDescription
"./" or "../" prefixRelative path to local chart
"oci://..."OCI registry chart URL
Chart namePublic chart name from a repository

chart.repoUrl

URL of the Helm repository. This field is necessary for public charts.

chart.version

Specified chart version to deploy.

chart.values

Array of Helm values in key=value format.

chart.valueFiles

Array of value file paths relative to the repository root.

Docker configuration

The optional docker section defines how to build a custom image. Its configuration matches the GitHub Service Docker section.

docker.defaultTag

The default Docker image tag, typically matching the branch name.

docker.builder

Configuration for the Docker build operation. See GitHub Service docker.builder for the full field list. That section includes the resources field and the safe-to-evict pod annotation.

FieldTypeDescription
enginestringBuild engine: buildkit, kaniko, or ci
resources.requestsobjectMinimum CPU/memory guaranteed for the build job
resources.limitsobjectMaximum CPU/memory allowed for the build job
podAnnotationsRecord<string,string>Custom annotations applied to the build pod template

docker.app (required with docker)

Configuration for the main application container:

  • dockerfilePath - Required. Path to Dockerfile relative to repo root
  • command - Override container entrypoint
  • arguments - Arguments passed to the command. Use %%SPLIT%% to delimit spaces, for example, -c%%SPLIT%%npm run start.
  • env - Environment variables
  • ports - Exposed container ports

docker.init (optional)

Configuration for an init container that runs before the main application. The init container has the fields from docker.app.

Field reference

FieldTypeRequiredDescription
chart.namestringYesChart name or path
chart.repoUrlstringFor publicHelm repository URL
chart.versionstringNoChart version
chart.valuesarrayNoInline Helm values
chart.valueFilesarrayNoValue file paths
repositorystringFor buildsGitHub repository
branchNamestringFor buildsBranch to build from
dockerobjectNoDocker build config
argsstringNoMore Helm arguments
versionstringNoHelm CLI version
deploymentMethodstringNo"native" or "ci"
envLensbooleanNoEnable the Environment Lens ingress banner
grpcbooleanNoEnable gRPC behavior for the Helm Service
disableIngressHostbooleanNoDisable Lifecycle’s generated ingress host
overrideDefaultIpWhitelistbooleanNoLet the Service configuration replace the default IP whitelist

Native Helm configuration

When deploymentMethod: "native" is enabled, configure more native Helm Job settings with the nativeHelm block.

FieldTypeRequiredDescription
nativeHelm.enabledbooleanNoWhen no deploymentMethod override exists, enable native Helm
nativeHelm.defaultHelmVersionstringNoHelm version used by the runner
nativeHelm.jobTimeoutnumberNoNative Helm Job timeout
nativeHelm.serviceAccountstringNoKubernetes ServiceAccount for the Job
nativeHelm.defaultArgsstringNoDefault Helm arguments
nativeHelm.imagestringNoCustom native Helm runner image
nativeHelm.postRenderer.enabledbooleanNoEnables or disables an inherited post-renderer
nativeHelm.postRenderer.commandstringNoExecutable passed to Helm with --post-renderer
nativeHelm.postRenderer.argsarrayNoHelm receives one --post-renderer-args flag for each argument

Templated variables

Write Lifecycle template variables with triple braces. See the Template variables for the full list.

Triple braces {{{variable}}} distinguish a Lifecycle variable from a Helm template function.

Native Helm deployment

To control Helm deployments, enable native Helm:

Native Helm runs the deployment as a Kubernetes Job. It streams deployment logs and accepts Helm arguments.

See Native Helm deployment for more information.