VictoriaMetrics / VictoriaMetrics/operator

bug: helm-converter - legacy VMAlert values produce an invalid empty notifier and omit supported settings

Open
#2,601 1 comment 0 reactions 1 assignee View on GitHub

@Haleygo is already working on this.

Since Sep 10, 2026.

Dominant language
Go
Stars
589
Forks
229
Avg merge
1d 9h
Merged PRs (30d)
77

Description

Chart name and version

chart: victoria-metrics-alert
version: v0.48.0

Describe the bug

This is related to https://github.com/VictoriaMetrics/operator/issues/2398.

I reproduced this with the latest released victoria-metrics-alert chart (v0.48.0) and the current helm-converter from the Operator master branch (4797937241b23fdc9f6e31e1ecee91f2f02c9c0a).

The Helm chart still supports the legacy VMAlert keys below, as documented in https://github.com/VictoriaMetrics/helm-charts/pull/2765:

server.notifier.alertmanager -> server.notifier
server.remote.read          -> server.remoteRead
server.remote.write         -> server.remoteWrite
bearer.token                -> bearerToken

However, the following command generates a VMAlert with spec.notifier: {}:

go run ./cmd/helm-converter \
  -chart victoria-metrics-alert \
  -input reproducer-values.yaml \
  -output converted.yaml \
  -name legacy-vmalert \
  -namespace monitoring

Applying this manifest is rejected by the Operator webhook:

Error from server (Forbidden): admission webhook "vmalerts.operator.victoriametrics.com" denied the request: incorrect cr.spec.notifier syntax: notifier.url and notifier.selector cannot be empty at the same time, provide at least one setting

The source has an empty server.notifier.alertmanager.url. Helm does not configure --notifier.url for it, so the converter should omit spec.notifier instead of emitting an empty object.

The converter also silently omits these values from the same source:

- datasource bearer token
- remote.read URL and bearer token
- remote.write URL
- license.secret.name and license.secret.key

license.forceOffline is preserved under extraArgs, but the license Secret reference is missing from spec.license.

Expected behavior: the converter should translate these legacy aliases, including generated Secret references for authentication and spec.license.keyRef; or reject unsupported legacy values explicitly. It must not generate an invalid VMAlert manifest.

Attached files:
converted.yaml
reproducer-values.yaml

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.