-
Bug
-
Resolution: Unresolved
-
Critical
-
None
-
quay-v3.16.0
-
Quality / Stability / Reliability
-
False
-
-
False
-
-
-
Important
Description
Quay operator failed to reconcile storageclass from default to custom for postgres and clairpostgres components
Version
FBC: quay.io/redhat-user-workloads/quay-eng-tenant/stable-3-16-v4-20@sha256:b0064dee7b039fce305bc9650c958e5084b758bc02df6ad609de59bdec4f1001
operator: quay-operator-rhel9@sha256:cfda81d8db6de8628e82d08177f7555d681d734ecbf5b91d05f062e32680f821
Reproduced Steps
- login openshift, install quay operator
- install quay by operator with managed postgres and clairpostgres components
- Reconcile storageclass from default to custom in quayregistry CR
spec: components: - kind: postgres managed: true overrides: storageClassName: sc - kind: clairpostgres managed: true overrides: storageClassName: sc
Actual Results
Operator does not create pvc with custom storageclass
Additional Info
operator logs:
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"finished creating/updating object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"ServiceAccount","name":"quayregistry-quay-app"}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"creating/updating object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"Secret","name":"quayregistry-quay-config-secret-g4mmf68hmk"}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"finished creating/updating object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"Secret","name":"quayregistry-quay-config-secret-g4mmf68hmk"}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"creating/updating object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"Service","name":"quayregistry-quay-database"}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"finished creating/updating object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"Service","name":"quayregistry-quay-database"}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"creating/updating object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"PersistentVolumeClaim","name":"quayregistry-clair-postgres-15"}
{"level":"error","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistry","msg":"failed to create/update object","quayregistry":"quay-enterprise-3959/quayregistry","kind":"PersistentVolumeClaim","name":"quayregistry-clair-postgres-15","error":"PersistentVolumeClaim \"quayregistry-clair-postgres-15\" is invalid: spec: Forbidden: spec is immutable after creation except resources.requests and volumeAttributesClassName for bound claims\n core.PersistentVolumeClaimSpec{\n \t... // 2 identical fields\n \tResources: {Requests: {s\"storage\": {i: {...}, s: \"50Gi\", Format: \"BinarySI\"}}},\n \tVolumeName: \"pvc-b7b71fc6-b655-4b48-b357-5e681377646d\",\n- \tStorageClassName: &\"gp3-csi\",\n+ \tStorageClassName: &\"gp2-csi\",\n \tVolumeMode: &\"Filesystem\",\n \tDataSource: nil,\n \t... // 2 identical fields\n }\n","stacktrace":"github.com/quay/quay-operator/controllers/quay.(*QuayRegistryReconciler).createOrUpdateObject\n\t/workspace/controllers/quay/quayregistry_controller.go:1060\ngithub.com/quay/quay-operator/controllers/quay.(*QuayRegistryReconciler).Reconcile\n\t/workspace/controllers/quay/quayregistry_controller.go:749\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile\n\t/workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:316\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:266\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:227"}
{"level":"debug","ts":"2025-12-05T08:48:18Z","logger":"events","msg":"error creating/updating object PersistentVolumeClaim quayregistry-clair-postgres-15: PersistentVolumeClaim \"quayregistry-clair-postgres-15\" is invalid: spec: Forbidden: spec is immutable after creation except resources.requests and volumeAttributesClassName for bound claims\n core.PersistentVolumeClaimSpec{\n \t... // 2 identical fields\n \tResources: {Requests: {s\"storage\": {i: {...}, s: \"50Gi\", Format: \"BinarySI\"}}},\n \tVolumeName: \"pvc-b7b71fc6-b655-4b48-b357-5e681377646d\",\n- \tStorageClassName: &\"gp3-csi\",\n+ \tStorageClassName: &\"gp2-csi\",\n \tVolumeMode: &\"Filesystem\",\n \tDataSource: nil,\n \t... // 2 identical fields\n }\n","type":"Warning","object":{"kind":"QuayRegistry","namespace":"quay-enterprise-3959","name":"quayregistry","uid":"c1926229-ef58-4fff-9677-7213b1f23aaa","apiVersion":"quay.redhat.com/v1","resourceVersion":"126473"},"reason":"ComponentCreationFailed"}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistryStatus","msg":"quay components conditions reconciled","quayregistrystatus":{"name":"quayregistry","namespace":"quay-enterprise-3959"}}
{"level":"info","ts":"2025-12-05T08:48:18Z","logger":"controllers.QuayRegistryStatus","msg":"quay components conditions reconciled","quayregistrystatus":{"name":"quayregistry","namespace":"quay-enterprise-3959"}}
{"level":"info","ts":"2025-12-05T08:48:28Z","logger":"controllers.QuayRegistry","msg":"begin reconcile","quayregistry":"quay-enterprise-3959/quayregistry"}
{"level":"info","ts":"2025-12-05T08:48:28Z","logger":"controllers.QuayRegistry","msg":"TLS cert/key pair not provided, using default cluster wildcard cert"}
{"level":"info","ts":"2025-12-05T08:48:28Z","logger":"controllers.QuayRegistry","msg":"cluster supports `Routes` API"}
{"level":"info","ts":"2025-12-05T08:48:29Z","logger":"controllers.QuayRegistry","msg":"Detected cluster hostname apps.quayfipstest-3959.qe.devcluster.openshift.com"}
{"level":"info","ts":"2025-12-05T08:48:29Z","logger":"controllers.QuayRegistry","msg":"getting postgres version"}