---
next_cursor: eyJzY29yZSI6MCwic2VxIjoxMDgyLCJzaW5jZSI6bnVsbCwidG9vbCI6ImhlbG1maWxlIiwidiI6MX0
has_more: true
next: https://sincecutoff.com/v1/changes.md?tool=helmfile&score=0&cursor=eyJzY29yZSI6MCwic2VxIjoxMDgyLCJzaW5jZSI6bnVsbCwidG9vbCI6ImhlbG1maWxlIiwidiI6MX0
items: 10
---
# sincecutoff.com changes: helmfile

## helmfile adds helmfile unittest integration (helmfile, 2026-02-19)
Published 2026-10-16
- slug: helmfile-adds-helmfile-unittest-integration-282d669d8508
- score: 0.96

How to use it:

When a Helmfile release defines `unitTests`, run `helmfile unittest` to execute its helm-unittest tests using the release’s merged values.

Examples:

```
helmfile unittest
```

```
releases:
  - name: my-app
    chart: ./charts/my-app
    unitTests:
      - tests
```

```
helm plugin install https://github.com/helm-unittest/helm-unittest
```

- why_it_matters: Run helm-unittest tests for a Helmfile-managed chart from the Helmfile workflow.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.3.0>, <https://github.com/helmfile/helmfile/blob/main/docs/cli.md>
- gotchas: "Version: v1.3.0"; "unitTests: Release-level list of helm-unittest test file or directory paths. When set, the release is tested; paths are relative to the chart directory. Releases without it are skipped."; "Prerequisite: Install the helm-unittest Helm plugin."; "Prerequisite: The Helmfile release must define `unitTests`; releases without it are skipped."

## helmfile HCL values allow overrides across imported files (helmfile, 2026-02-25)
Published 2026-10-16
- slug: helmfile-hcl-values-allow-overrides-across-imported-files-a04516521a78
- score: 0.95

How to use it:

When multiple imported `.hcl` files define the same key in `values` blocks, define the override in the later-loaded file. Maps merge per key; lists are replaced as a whole, and mixed-type overrides use the later value and type.

Examples:

```
# values1.hcl
values {
  my_var = 1
}

# values2.hcl
values {
  my_var = 2
}
```

- why_it_matters: When layering Helmfile values across imported HCL files, define the same key in a later file to override the earlier value.
- before: Avoid defining the same variable in multiple HCL `values` blocks because it caused a variable naming collision; use distinct variables and merge them instead.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.3.2>, <https://github.com/helmfile/helmfile/pull/2402>, <https://github.com/helmfile/helmfile/blob/main/docs/environments.md>
- gotchas: "Version: v1.3.2"; "values block key (required): The key to define in each imported HCL `values` block; later files override earlier files. Map values merge per key; lists are replaced as a whole; mixed types use the latest value and type."; "HCL file order (required): List the imported `.hcl` files in load order; the last file loaded wins for duplicate keys."; "Prerequisite: HCL is supported for environment values; only files suffixed `.hcl` are interpreted as HCL."

## helmfile HCL templates add CIDR functions (helmfile, 2026-03-02)
Published 2026-10-16
- slug: helmfile-hcl-templates-add-cidr-functions-54f88d5c193c
- score: 0.97

How to use it:

When templating IP addresses or subnet ranges from HCL in Helmfile v1.4.0, use `cidrhost`, `cidrnetmask`, `cidrsubnet`, or `cidrsubnets` with the required arguments for the calculation. [HCL Functions](https://github.com/helmfile/helmfile/blob/v1.4.0/docs/hcl_funcs.md)

Examples:

```
cidrhost("10.0.0.0/8", 2)
```

```
cidrsubnet("10.0.0.0/8", 8, 2)
```

```
cidrsubnets("10.0.0.0/8", 4, 4)
```

- why_it_matters: Template static IP addresses or subnet ranges for Kubernetes resources from HCL in a Helmfile repository.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.4.0>, <https://github.com/helmfile/helmfile/pull/2426>, <https://github.com/helmfile/helmfile/blob/v1.4.0/docs/hcl_funcs.md>
- gotchas: "Version: v1.4.0"; "cidrhost(prefix, hostnum): `prefix` (required): IP network address prefix."; "cidrhost(prefix, hostnum): `hostnum` (required): Host number within the prefix."; "cidrnetmask(prefix): `prefix` (required): IPv4 address prefix in CIDR notation."; "cidrsubnet(prefix, newbits, netnum): `prefix` (required): IP network address prefix."; "cidrsubnet(prefix, newbits, netnum): `newbits` (required): Number of bits used to extend the prefix."; "cidrsubnet(prefix, newbits, netnum): `netnum` (required): Subnet number within the prefix."; "cidrsubnets(prefix, newbits...): `prefix` (required): CIDR prefix containing the consecutive ranges."; "cidrsubnets(prefix, newbits...): `newbits...` (required): One or more bit counts for the ranges to calculate."; "The release describes these functions as additions to Helmfile's supported HCL functions."

## helmfile passes a description to `helm upgrade` (helmfile, 2026-03-24)
Published 2026-10-16
- slug: helmfile-passes-a-description-to-helm-upgrade-85e3b157a828
- score: 0.96

How to use it:

When upgrading releases through Helmfile v1.4.3, use `helmfile apply --description <description>` to pass a description to `helm upgrade`; the CLI description applies to all releases and overrides descriptions in the Helmfile.

Examples:

```
helmfile apply --description "<description>"
```

- why_it_matters: Upgrade a Helm release with a description from a Helmfile workflow.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.4.3>, <https://github.com/helmfile/helmfile/blob/v1.4.3/cmd/apply.go>
- gotchas: "Version: v1.4.3"; "--description <description>: Sets the description for all releases; overrides descriptions in the Helmfile and is passed to `helm upgrade --description`."; "Prerequisite: Use Helmfile v1.4.3 or later for this feature."

## helmfile create scaffolds deployment projects (helmfile, 2026-05-03)
Published 2026-10-16
- slug: helmfile-create-scaffolds-deployment-projects-c00309fd7b53
- score: 0.95

How to use it:

When scaffolding a Helmfile deployment project, run `helmfile create` with an optional project name; use `--output-dir` to choose the destination or `--force` to overwrite existing scaffold files.

Examples:

```
helmfile create [<NAME>] [-o <OUTPUT_DIR>] [--force]
```

- why_it_matters: Scaffold a Helmfile deployment project in a repository.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.5.0>, <https://github.com/helmfile/helmfile/pull/2574>, <https://github.com/helmfile/helmfile/blob/v1.5.0/docs/cli.md>
- gotchas: "Version: v1.5.0"; "NAME: Project name; when omitted, the scaffold is created in the current directory. Name validation rejects path separators, `.`, `..`, and whitespace-only names."; "-o, --output-dir <OUTPUT_DIR>: Output directory; defaults to NAME or the current directory."; "--force: Overwrite existing scaffold files. Without it, target paths are checked before writing to avoid partial scaffolds."; "Project names are validated against path traversal."

## helmfile environment values support mergeStrategy: fallback (helmfile, 2026-05-11)
Published 2026-10-16
- slug: helmfile-environment-values-support-mergestrategy-fallback-2bb408d47c8f
- score: 0.98

How to use it:

When an environment loads shared defaults and cluster-specific values, set `mergeStrategy: fallback` so earlier files take precedence and later files fill missing keys.

Examples:

```
environments:
  production:
    mergeStrategy: fallback
    values:
      - cluster-specific.yaml
      - shared-defaults.yaml.gotmpl
```

- why_it_matters: Configure an environment so cluster-specific values take precedence over shared defaults when loading multiple values files.
- before: By default, later files listed under `values:` override earlier files.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.5.1>, <https://github.com/helmfile/helmfile/pull/2578>, <https://github.com/helmfile/helmfile/blob/v1.5.1/docs/environments.md>
- gotchas: "Version: v1.5.1"; "mergeStrategy: Set to `fallback` to make earlier environment values files take precedence. The default is `override` behavior."; "values (required): Ordered list of environment values files to merge."; "values[] (required): File paths in order: under `fallback`, explicit non-null values in earlier files are preserved, including `false`, `0`, empty strings, and empty lists; maps are deep-merged so later files can add nested keys."; "The fallback strategy is opt-in per environment."; "Explicit non-nil values in earlier files, including false, 0, empty strings, and empty lists, are preserved against later files."; "Maps are deep-merged, allowing later files to add nested keys."

## helmfile accepts HELMFILE_NAMESPACE for the default namespace (helmfile, 2026-05-22)
Published 2026-10-16
- slug: helmfile-accepts-helmfile-namespace-for-the-default-namespace-54be40108850
- score: 0.90

How to use it:

When you want Helmfile to use a default namespace without passing it on each run, set `HELMFILE_NAMESPACE` before invoking Helmfile. An explicit `--namespace` value takes precedence over the environment variable.

Examples:

```
HELMFILE_NAMESPACE=<namespace> helmfile apply
```

- why_it_matters: Run Helmfile against a repository's default namespace without specifying it on each invocation.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.5.2>, <https://github.com/helmfile/helmfile/blob/main/docs/templating.md>, <https://github.com/helmfile/helmfile/pull/2592>
- gotchas: "Version: v1.5.2"; "HELMFILE_NAMESPACE: Sets the namespace fallback; an explicit `--namespace` overrides it. If neither is set, Helmfile uses the namespace from the Kubernetes context."

## helmfile applies defaultInherit templates to releases (helmfile, 2026-05-22)
Published 2026-10-16
- slug: helmfile-applies-defaultinherit-templates-to-releases-5bcc7376cf16
- score: 0.98

How to use it:

When releases share templates, set top-level `defaultInherit` in `helmfile.yaml` to a template name or ordered list; Helmfile applies them to every release and does not duplicate templates already explicitly inherited. Use release `inherit[].except` to omit fields.

Examples:

```
templates:
  defaults:
    namespace: kube-system
defaultInherit: defaults
releases:
- name: <release-name>
  chart: <chart>
  version: <version>
```

```
defaultInherit:
  - ns-template
  - defaults
```

```
releases:
- name: <release-name>
  chart: <chart>
  inherit:
  - template: defaults
    except:
    - values
```

- why_it_matters: Configure a Helmfile repository whose releases share one or more templates without repeating `inherit` on every release.
- before: Specify `inherit` on each release that should inherit the template.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.5.2>, <https://github.com/helmfile/helmfile/pull/2600>, <https://github.com/helmfile/helmfile/blob/v1.5.2/docs/writing-helmfile.md>
- gotchas: "Version: v1.5.2"; "defaultInherit: Top-level default template name or list of template names applied to all releases; list order determines merge order."; "inherit[].template (required): Name of the release template to inherit."; "inherit[].except: List of fields to exclude from that template."; "Prerequisite: Use Helmfile v1.5.2 or later for this feature."; "A referenced template must exist; the source mentions an error for a non-existent template."

## helmfile supports HELMFILE_* environment variables for more global flags (helmfile, 2026-05-22)
Published 2026-10-16
- slug: helmfile-supports-helmfile-environment-variables-for-more-global-flags-733813967029
- score: 0.95

How to use it:

When a workflow needs Helmfile global flag defaults, set the corresponding supported `HELMFILE_*` environment variable; for example, set `HELMFILE_NAMESPACE` before running `helmfile sync`.

Examples:

```
HELMFILE_NAMESPACE=<namespace> helmfile sync
```

```
HELMFILE_KUBE_CONTEXT=<context> helmfile sync
```

```
HELMFILE_ENVIRONMENT=<environment> helmfile sync
```

- why_it_matters: Configure Helmfile's global flags through environment variables in a repository workflow.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.5.2>, <https://raw.githubusercontent.com/helmfile/helmfile/v1.5.2/cmd/root.go>
- gotchas: "Version: v1.5.2"; "HELMFILE_NAMESPACE: Sets the default namespace; `--namespace` overrides it."; "HELMFILE_KUBE_CONTEXT: Sets the default Kubernetes context; `--kube-context` overrides it."; "HELMFILE_ENVIRONMENT: Sets the Helmfile environment name; `--environment` overrides it."; "HELMFILE_HELM_BINARY: Sets the Helm binary path; `--helm-binary` overrides it."; "HELMFILE_KUSTOMIZE_BINARY: Sets the Kustomize binary path; `--kustomize-binary` overrides it."; "HELMFILE_LOG_LEVEL: Sets the log level; `--log-level` overrides it."; "HELMFILE_QUIET: Sets quiet mode; `--quiet` overrides it."; "HELMFILE_DEBUG: Sets debug mode; `--debug` overrides it."; "HELMFILE_NO_COLOR: Disables color output; `--no-color` overrides it. The CLI also recognizes `NO_COLOR`; precedence between the environment variables is not documented here."; "Prerequisite: Use Helmfile v1.5.2 or later for the release-note change."

## helmfile apply tracks kubedog progress in parallel with Helm (helmfile, 2026-06-22)
Published 2026-10-16
- slug: helmfile-apply-tracks-kubedog-progress-in-parallel-with-helm-f462c48dfff2
- score: 0.98

How to use it:

When applying a Helmfile release with live kubedog progress, run `helmfile apply --track-mode kubedog`. Helmfile tracks resources in parallel with Helm and buffers Helm output per release. [Release notes](https://github.com/helmfile/helmfile/releases/tag/v1.6.0)

Examples:

```
helmfile apply --track-mode kubedog
```

```
helmfile apply --track-mode kubedog --track-timeout <seconds>
```

- why_it_matters: Apply a Helmfile release with live resource convergence progress while Helm installs or upgrades it.
- before: Tracking ran only after Helm finished; there was no progress feedback during the release.
- sources: <https://github.com/helmfile/helmfile/releases/tag/v1.6.0>, <https://github.com/helmfile/helmfile/pull/2654>, <https://github.com/helmfile/helmfile/blob/v1.6.0/cmd/apply.go>, <https://github.com/helmfile/helmfile>
- gotchas: "Version: v1.6.0"; "--track-mode: Tracking mode for releases: `helm` (default), `helm-legacy` (Helm v4 only), or `kubedog`."; "--track-timeout: Kubedog tracking timeout in seconds; `0` uses the default 300-second timeout."; "Prerequisite: Helm and helm-diff must be installed for Helmfile to delegate to Helm."; "The parallel tracking behavior applies with `--track-mode kubedog`."; "A tracker that does not return within the release timeout is treated as a failure."

Next: https://sincecutoff.com/v1/changes.md?tool=helmfile&score=0&cursor=eyJzY29yZSI6MCwic2VxIjoxMDgyLCJzaW5jZSI6bnVsbCwidG9vbCI6ImhlbG1maWxlIiwidiI6MX0
Save `next_cursor`; next visit, pass it to get only what was published since.
<!-- end of page -->
