-
Dependency: vmoperator: Updated default versions for VM apps to v1.154.1.
-
Dependency: vmoperator: Updated default versions for VT apps to v0.12.0.
-
Dependency: vmoperator: Updated default version for VMAnomaly to v1.31.1.
-
FEATURE: vmuser, vmauth: allow
VTAgentintargetRef.crd.kind, sovmauthcan route to aVTAgentby name instead of a static URL. The CRDs must be updated to use it. See #2687. -
FEATURE: vmanomaly, vmanomalyconfig: support the experimental
peer_outliermodel and its peer-group parameters in managed configuration, available since vmanomaly v1.31.0. See #2714. -
FEATURE: vmcluster, vlcluster, vtcluster: with the default
rollingUpdateStrategy: OnDelete, do not wait for storage pods listed in bothmaintenanceInsertNodeIDsandmaintenanceSelectNodeIDsto become ready, and defer spec changes to these pods and their volumes until they leave maintenance. WithRollingUpdate, Kubernetes still blocks pod updates while such a pod isn't ready. Previously, such a pod stuckPendingorTerminating(e.g. while its node is under maintenance and its volume is bound to that node) made every reconcile fail at the storage step, so changes to the insert and select components were not applied until the pod came back. See these docs and #2665. -
BUGFIX: vmsingle, vmcluster, vlsingle, vlcluster, vtsingle, vtcluster: accept the months unit
MinretentionPeriodandfutureRetention. Previously, the CRD rejected values such as3M, even though VictoriaMetrics, VictoriaLogs and VictoriaTraces accept them. The CRDs must be updated to get this fix. See #2693. -
BUGFIX: vmanomaly: allow
spec.configRawYamlandspec.configSecretwithoutreader.querieswhen selected VMAnomalyConfig objects provide the queries. Previously, such a config failed reconciliation withreader.queries must be provided via configRawYaml or configSecret, so queries could not come fromVMAnomalyConfigobjects alone. A config with no queries from any source is still rejected. This bug was introduced in v0.69.0 withVMAnomalyConfig. See #2685. -
BUGFIX: vmauth, vmuser: resolve each
targetRef.crdreference with its own object. Previously, concurrent config builds for differentVMAuthobjects shared one object per kind, so a reference could resolve to another object of the same kind andurl_prefixsilently routed traffic to the wrong backend until the next reconcile. See #2690. Thanks to @lewis-treacy. -
BUGFIX: vmauth, vmcluster, vlcluster, vtcluster: keep the replica count set by HPA when a
DeploymentorStatefulSetupdate is retried after a conflict. Previously, the retry used the replica count from the failed attempt, which could revert a newer value set by HPA. This bug was introduced in v0.73.0. See #2716. -
BUGFIX: vmagent, vmsingle: respect
spec.ignoreNamespaceSelectors. Previously,VMServiceScrape,VMPodScrapeandVMProbeobjects still discovered targets in the namespaces from theirnamespaceSelector, andany: truegave cluster-wide discovery. Targets outside the scrape object's own namespace are no longer discovered when the flag is set. This bug was introduced in v0.69.0, when scraping support was added toVMSingle. See #2684. -
BUGFIX: vmuser: render tenant IDs explicitly set to
0inspec.jwt.defaultVMAccessClaim. Previously, they were dropped from the generatedvmauthconfig, sometricsAccountID: 0rendered as the samedefault_vm_access_claim: {}as an empty object. Routing was not affected, sincevmauthtreats a missing ID as0. This bug was introduced in v0.74.0, whendefaultVMAccessClaimwas added. See #2718. -
BUGFIX: vmdistributed: fix reconcile of a
VMDistributedwithspec.licenseset and nospec.zoneCommon.vmsingle.spec. Previously, such objects failed to reconcile with a nil pointer error and their zones were neither created nor updated. This hit every licensed object with the defaultVMClusterbackend. This bug was introduced in v0.73.0. See #2709 and #2712. -
BUGFIX: vmdistributed, vldistributed: propagate
spec.licenseto theVMSingleorVLSingleof each zone whenspec.backendTypeisVMSingleorVLSingle. Previously, the license was copied intozoneCommon.vmclusterorzoneCommon.vlclusterinstead, so every reconcile failed withbackendType=VMSingle is incompatible with zoneCommon.vmcluster configuration(or itsVLSinglevariant) and no zone was created or updated. This bug was introduced in v0.73.0 forVMDistributedand in v0.74.0 forVLDistributed. See #2720. -
BUGFIX: vmdistributed, vldistributed: stop forwarding the client
Authorizationheader from the generatedVMAuthto zone components. Previously, when a zoneVMClusterorVLClusterhadrequestsLoadBalancerenabled, itsvmauthtreated the forwarded header as an invalid token. This could result in delays for every read request due to brute-force protection invmauthv1.154.0. See VictoriaMetrics#11774 and #2742. -
BUGFIX: vmalertmanager, vmcluster, vlcluster, vtcluster, vmagent, vlagent, vtagent, vmanomaly: fix reconcile failing when scaling up from 0 replicas. Previously, the operator could check PVCs before the
StatefulSetcontroller had created them, so reconcile failed withgot 0 pvcs, the object status was set tofailedand aReconciliationErrorevent was emitted. The error went away on the next reconcile. This bug was introduced in v0.69.0. See #2694. -
BUGFIX: vmalert: reload
vmalertwhen the Secret referenced byspec.notifierConfigRefchanges. Previously, theconfig-reloaderdid not watch the notifier config mount, sovmalertkept using the old notifier config until its pods were restarted. Pods withspec.notifierConfigRefwill be rolled out once after the upgrade. See #2746. -
BUGFIX: helm-converter: convert the
victoria-metrics-alertchart's legacy values the same way the chart does:server.remote.read,server.remote.write,server.notifier.alertmanager, nestedbasicAuth/bearerauth keys and a list-valuedserver.notifier.url. Previously, they were silently dropped, so the generatedVMAlertlost its remote storage, notifiers and credentials. Plaintextserver.remoteWritecredentials, legacy or not, are now moved into a generated Secret like the other blocks; before, they were dropped too. The bug has existed since the converter was added in v0.69.0. See #2601. -
BUGFIX: helm-converter: omit
spec.notifierfor thevictoria-metrics-alertchart when no notifier URL is set. Previously, the converter generatedspec.notifier: {}, which the operator webhook rejects, so the output could not be applied. The conversion now fails with an explicit error when the values contain alerting rules but no notifier, since the operator would silently ignore those rules, and whenalertmanager.enabled: truewould make the chart use its bundled Alertmanager, which has no CR equivalent. See #2601. -
BUGFIX: helm-converter: convert the charts'
licenseandglobal.licenseblocks intospec.licenseofVMSingle,VMCluster,VMAgent,VMAlert,VMAuth,VMAnomaly,VLClusterandVLAgent(from bothvictoria-logs-agentandvictoria-logs-collector). Previously, they were dropped, so the generated CRs started without the enterprise license. The precedence matches the charts: a plaintext key (license.key, thenglobal.license.key) wins over any Secret reference, which is taken fromlicense.secret,global.license.secret,license.keyRefandglobal.license.keyRef, in that order. See #2601.