Subresource status is not added after operator upgrade
Summary
After operator upgrade from version affected_version1.0.0-alpha4 to affected_version1.0.0-beta1 the status
subresource is not added to the existing CRD causing issues.
Current Behaviour
The reconciliation cycle is working as expected but the status of the SGCluster
is never updated by the operator.
Steps to reproduce
- Install operator version affected_version1.0.0-alpha4
- Create a cluster
- Upgrade operator to version affected_version1.0.0-beta1
Expected Behaviour
The status subresource should be available and status be updated.
Possible Solution
Add subresources to the CRDs when performing the CRD upgrade job in the helm chart.
Environment
- StackGres version: affected_version1.0.0-beta1
- Kubernetes version: ?
- Cloud provider or hardware configuration: ?
Relevant logs and/or screenshots
021-07-05 12:15:40,478 INFO [io.st.reconciliator] (ReconciliationShceduler) Checking reconciliation status of cluster scale-up-and-down-60e2f35f/scale-up-and-down
2021-07-05 12:15:40,694 INFO [io.st.reconciliator] (ReconciliationShceduler) Cluster scale-up-and-down-60e2f35f/scale-up-and-down it's up to date
2021-07-05 12:15:40,744 ERROR [io.st.reconciliator] (ReconciliationShceduler) Reconciliation of cluster scale-up-and-down-60e2f35f/scale-up-and-down failed: io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: PUT at: https://10.96.0.1/apis/stackgres.io/v1/namespaces/scale-up-and-down-60e2f35f/sgclusters/scale-up-and-down/status. Message: sgclusters.stackgres.io "scale-up-and-down" not found. Received status: Status(apiVersion=v1, code=404, details=StatusDetails(causes=[], group=stackgres.io, kind=sgclusters, name=scale-up-and-down, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=sgclusters.stackgres.io "scale-up-and-down" not found, metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=NotFound, status=Failure, additionalProperties={}).
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:639)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:578)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:543)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:504)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleUpdate(OperationSupport.java:330)
at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleUpdate(OperationSupport.java:310)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleUpdate(BaseOperation.java:898)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.updateStatus(BaseOperation.java:753)
at io.fabric8.kubernetes.client.dsl.base.BaseOperation.updateStatus(BaseOperation.java:86)
at io.stackgres.common.resource.AbstractCustomResourceScheduler.updateStatus(AbstractCustomResourceScheduler.java:91)
at io.stackgres.common.resource.ClusterScheduler_ClientProxy.updateStatus(ClusterScheduler_ClientProxy.zig:128)
at io.stackgres.operator.conciliation.cluster.ClusterReconciliator.onPostReconciliation(ClusterReconciliator.java:92)
at io.stackgres.operator.conciliation.cluster.ClusterReconciliator.onPostReconciliation(ClusterReconciliator.java:34)
at io.stackgres.operator.conciliation.StackGresReconciliator.lambda$reconcile$3(StackGresReconciliator.java:81)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at io.stackgres.operator.conciliation.StackGresReconciliator.reconcile(StackGresReconciliator.java:33)
at io.stackgres.operator.conciliation.cluster.ClusterReconciliator_ClientProxy.reconcile(ClusterReconciliator_ClientProxy.zig:126)
at io.stackgres.operator.app.ReconciliationClockImpl.reconcile(ReconciliationClockImpl.java:30)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)