Sylva 1.4.x to 1.6.y upgrade removes SriovNetwork custom resources from the cluster
Summary
Upgrading Sylva from 1.4.17 to 1.6.24 deletes every SriovNetwork custom resource in the cluster.
Affected chart: sriov-crd (from suse-edge-charts, https://suse-edge.github.io/charts/), version bump 1.5.2+up1.5.0 → 1.6.4+up1.6.0
Steps to reproduce
Upgrade a cluster that has SRIOV enabled and SriovNetwork CR objects created from 1.4.x to 1.6.y. During the upgrade, the SriovNetwork objects will be deleted because all CRD definitions definded by sriov-crd helm chart will be deleted and recreated.
Relevant logs and root cause
SriovNetwork CRD before the upgrade, in 1.4.17:
$ k get crd sriovnetworks.sriovnetwork.openshift.io -o yaml | yq .metadata
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
meta.helm.sh/release-name: sriov-crd
meta.helm.sh/release-namespace: cattle-sriov-system
creationTimestamp: "2026-06-08T08:43:07Z"SriovNetwork after the upgrade, in 1.6.24, in which we can observe it was recreated by the timestamp:
$ k get crd sriovnetworks.sriovnetwork.openshift.io -o yaml | yq .metadata
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
meta.helm.sh/release-name: sriov-crd
meta.helm.sh/release-namespace: sylva-system
creationTimestamp: "2026-07-02T04:30:04Z"So namespace of the sriov-crd hr has changed from cattle-sriov-system to sylva-system between Sylva 1.4.x to 1.6.y as part of namespace refactoring MR: !4774 (merged)
$ kubectl get hr -n workload-cluster -o yaml | \
grep -E "crds|upgrade|install" -A3
upgrade:
crds: CreateReplace
valuesFrom: []
status:
conditions:
--
message: Helm install succeeded for release sylva-system/sriov-crd.v1 with chartFlux will see sylva-system/sriov-crd as a new hr and will delete and recreate all SRIOV related CRDs from sriov-crd hr, which I think will mean to also delete all SriovNetworks present on the cluster.
Because policy for upgrade is:
$ cat charts/sylva-units/values.yaml | yq .unit_helmrelease_spec_default.upgrade
crds: CreateReplacePossible fixes/workaround - not sure this is the best approach
Set Create instead of CreateReplace for sriov-crd hr to avoid recreation in case CRDs are already there.
units:
sriov-crd:
helmrelease_spec:
upgrade:
crds: Create