Uploaded image for project: 'Project Quay'
  1. Project Quay
  2. PROJQUAY-9934

Quay operator failed to reconcile storageclass from default to custom for postgres and clairpostgres components

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None
    • quay-v3.16.0
    • quay-operator
    • Quality / Stability / Reliability
    • False
    • Hide

      None

      Show
      None
    • 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
      1. login openshift, install quay operator
      2. install quay by operator with managed postgres and clairpostgres components
      3. Reconcile storageclass from default to custom in quayregistry CR
        1.   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"}

       

              Unassigned Unassigned
              rhn-support-dyan Dongbo Yan
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated: