Continuous patching of already reconcilied resources with Kubernetes 1.19
Summary
StackGres operator is continuously patching deployed resources when running in Kubernetes 1.19.
Current Behaviour
Resource comparison between required and deployed fail to detect that a required resource did not change and try to patch the deployed one even if the deployed resource did not change.
Steps to reproduce
- Create a Kubernetes cluster with version 1.19
- Create a StackGres cluster
Expected Behaviour
Required resources are created and never patched.
Possible Solution
Add logic in the io.stackgres.operator.conciliation.comparator.DefaultComparator
class that allow to skip patches that are triggering the reconciliation cycle to patch an already deployed instance.
Environment
- StackGres version: 1.0.0-beta1
- Kubernetes version: 1.19
- Cloud provider or hardware configuration: ?
Relevant logs and/or screenshots
2021-06-30 14:18:40,970 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Cluster default/my-db-cluster it's not up to date. Reconciling
2021-06-30 14:18:40,970 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-failover of kind: Endpoints
2021-06-30 14:18:41,030 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-prometheus-postgres-exporter of kind: Service
2021-06-30 14:18:41,104 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource default-my-db-cluster-stackgres-postgres-exporter of kind: ServiceMonitor
2021-06-30 14:18:41,177 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-patroni of kind: ServiceAccount
2021-06-30 14:18:41,241 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-patroni of kind: Role
2021-06-30 14:18:41,322 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-patroni of kind: RoleBinding
2021-06-30 14:18:41,418 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster of kind: Endpoints
2021-06-30 14:18:41,473 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-config of kind: Endpoints
2021-06-30 14:18:41,536 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-backup of kind: CronJob
2021-06-30 14:18:41,610 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster of kind: StatefulSet
2021-06-30 14:18:41,688 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster of kind: ConfigMap
2021-06-30 14:18:41,753 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-backup of kind: ConfigMap
2021-06-30 14:18:41,817 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-backup of kind: Secret
2021-06-30 14:18:41,819 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Checking reconciliation status of cluster default/my-distributed-logs
2021-06-30 14:18:41,881 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-internal-00000-prometheus-postgres-exporter-initx of kind: ConfigMap
2021-06-30 14:18:41,946 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-00001-create-some-fake-data of kind: ConfigMap
2021-06-30 14:18:42,013 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-envoy-config of kind: ConfigMap
2021-06-30 14:18:42,072 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-fluent-bit of kind: ConfigMap
2021-06-30 14:18:42,093 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Cluster default/my-distributed-logs it's not up to date. Reconciling
2021-06-30 14:18:42,137 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-prometheus-postgres-exporter-config of kind: ConfigMap
2021-06-30 14:18:42,200 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-connection-pooling-config of kind: ConfigMap
2021-06-30 14:18:42,261 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-templates of kind: ConfigMap
2021-06-30 14:18:42,334 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster of kind: Secret
2021-06-30 14:18:42,395 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-prometheus-envoy of kind: Service
2021-06-30 14:18:42,465 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource default-my-db-cluster-stackgres-envoy of kind: ServiceMonitor
2021-06-30 14:18:42,530 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-sync of kind: Endpoints
2021-06-30 14:18:42,594 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-config of kind: Service
2021-06-30 14:18:42,657 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-rest of kind: Service
2021-06-30 14:18:42,730 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster of kind: Service
2021-06-30 14:18:42,799 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-primary of kind: Service
2021-06-30 14:18:42,861 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource my-db-cluster-replicas 2021-06-30 14:18:45,147 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Checking reconciliation status of cluster default/my-db-cluster
2021-06-30 14:18:45,958 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Cluster default/my-db-cluster it's not up to date. Reconciling
2021-06-30 14:18:45,958 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource default-my-db-cluster-stackgres-postgres-exporter of kind: ServiceMonitor
2021-06-30 14:18:46,095 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Creating resource default-my-db-cluster-stackgres-envoy of kind: ServiceMonitor
2021-06-30 14:18:46,224 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-failover of kind: Endpoints
2021-06-30 14:18:46,285 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-prometheus-postgres-exporter of kind: Service
2021-06-30 14:18:46,362 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-patroni of kind: ServiceAccount
2021-06-30 14:18:46,430 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-patroni of kind: Role
2021-06-30 14:18:46,495 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-patroni of kind: RoleBinding
2021-06-30 14:18:46,568 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster of kind: Endpoints
2021-06-30 14:18:46,633 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-config of kind: Endpoints
2021-06-30 14:18:46,695 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-backup of kind: CronJob
2021-06-30 14:18:46,777 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster of kind: StatefulSet
2021-06-30 14:18:47,066 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster of kind: ConfigMap
2021-06-30 14:18:47,131 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-backup of kind: ConfigMap
2021-06-30 14:18:47,193 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-backup of kind: Secret
2021-06-30 14:18:47,255 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-internal-00000-prometheus-postgres-exporter-initx of kind: ConfigMap
2021-06-30 14:18:47,320 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-00001-create-some-fake-data of kind: ConfigMap
2021-06-30 14:18:47,400 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-envoy-config of kind: ConfigMap
2021-06-30 14:18:47,473 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-fluent-bit of kind: ConfigMap
2021-06-30 14:18:47,532 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-prometheus-postgres-exporter-config of kind: ConfigMap
2021-06-30 14:18:47,613 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-connection-pooling-config of kind: ConfigMap
2021-06-30 14:18:47,685 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-templates of kind: ConfigMap
2021-06-30 14:18:47,758 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster of kind: Secret
2021-06-30 14:18:47,818 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-prometheus-envoy of kind: Service
2021-06-30 14:18:47,885 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-sync of kind: Endpoints
2021-06-30 14:18:47,953 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-config of kind: Service
2021-06-30 14:18:48,029 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-rest of kind: Service
2021-06-30 14:18:48,096 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster of kind: Service
2021-06-30 14:18:48,168 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-primary of kind: Service
2021-06-30 14:18:48,235 INFO [io.st.reconciliator] (OkHttp https://10.100.0.1/...) Patching resource my-db-cluster-replicas of kind: Service