zalando / postgres-operator

Postgres operator creates and manages PostgreSQL clusters running in Kubernetes
https://postgres-operator.readthedocs.io/
MIT License
4.3k stars 974 forks source link

Helm install for 1.9.0 fails #2203

Open jensjohansen opened 1 year ago

jensjohansen commented 1 year ago

Please, answer some short questions which should help us to understand your problem / question better?

Some general remarks when posting a bug report:

Trying to run

helm upgrade --install postgres-operator postgres-operator-charts/postgres-operator -n datastore

Error:

Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [ValidationError(OperatorConfiguration.configuration): unknown field "enable_team_id_clustername_prefix" in do.zala
n.acid.v1.OperatorConfiguration.configuration, ValidationError(OperatorConfiguration.configuration.kubernetes): unknown field "enable_readiness_probe" in do.zalan.acid.v1.OperatorConfiguration.configuration.kubernetes, Valid
ationError(OperatorConfiguration.configuration.kubernetes): unknown field "pod_antiaffinity_preferred_during_scheduling" in do.zalan.acid.v1.OperatorConfiguration.configuration.kubernetes, ValidationError(OperatorConfigurati
on.configuration.kubernetes): unknown field "share_pgsocket_with_sidecars" in do.zalan.acid.v1.OperatorConfiguration.configuration.kubernetes, ValidationError(OperatorConfiguration.configuration.load_balancer): unknown field
 "master_legacy_dns_name_format" in do.zalan.acid.v1.OperatorConfiguration.configuration.load_balancer, ValidationError(OperatorConfiguration.configuration.load_balancer): unknown field "replica_legacy_dns_name_format" in do
.zalan.acid.v1.OperatorConfiguration.configuration.load_balancer]

We tried to roll back to 1.82, but that install now fails to authenticate any database besides postgres and any user besides postgres. 1.82 is working in all the environments we haven't upgraded yet.

dariaserkova commented 1 year ago

you need to install crd-s first

k apply -f https://raw.githubusercontent.com/zalando/postgres-operator/master/charts/postgres-operator/crds/operatorconfigurations.yaml
k apply -f https://raw.githubusercontent.com/zalando/postgres-operator/master/charts/postgres-operator/crds/postgresqls.yaml
k apply -f https://raw.githubusercontent.com/zalando/postgres-operator/master/charts/postgres-operator/crds/postgresteams.yaml

https://postgres-operator.readthedocs.io/en/latest/administrator/#upgrading-the-operator When using helm, be aware that installing the new chart will not update the Postgresql and OperatorConfiguration CRD. Make sure to update them before with the provided manifests in the crds folder. Otherwise, you might face errors about new Postgres manifest or configuration options being unknown to the CRD schema validation.

devops-matriz commented 1 year ago

I have errors when I try to update the CRDs:

k apply -f https://raw.githubusercontent.com/zalando/postgres-operator/master/charts/postgres-operator/crds/operatorconfigurations.yaml
k apply -f https://raw.githubusercontent.com/zalando/postgres-operator/master/charts/postgres-operator/crds/postgresqls.yaml
k apply -f https://raw.githubusercontent.com/zalando/postgres-operator/master/charts/postgres-operator/crds/postgresteams.yaml

Errors:

Warning: resource customresourcedefinitions/operatorconfigurations.acid.zalan.do is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
The request is invalid: patch: Invalid value: "map[metadata:map[annotations:map[kubectl.kubernetes.io/last-applied-configuration:{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/name\":\"postgres-operator\"},\"name\":\"operatorconfigurations.acid.zalan.do\"},\"spec\":{\"group\":\"acid.zalan.do\",\"names\":{\"categories\":[\"all\"],\"kind\":\"OperatorConfiguration\",\"listKind\":\"OperatorConfigurationList\",\"plural\":\"operatorconfigurations\",\"shortNames\":[\"opconfig\"],\"singular\":\"operatorconfiguration\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"description\":\"Spilo image to be used for Pods\",\"jsonPath\":\".configuration.docker_image\",\"name\":\"Image\",\"type\":\"string\"},{\"description\":\"Label for K8s resources created by operator\",\"jsonPath\":\".configuration.kubernetes.cluster_name_label\",\"name\":\"Cluster-Label\",\"type\":\"string\"},{\"description\":\"Name of service account to be used\",\"jsonPath\":\".configuration.kubernetes.pod_service_account_name\",\"name\":\"Service-Account\",\"type\":\"string\"},{\"description\":\"Minimum number of instances per Postgres cluster\",\"jsonPath\":\".configuration.min_instances\",\"name\":\"Min-Instances\",\"type\":\"integer\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"}],\"name\":\"v1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"apiVersion\":{\"enum\":[\"acid.zalan.do/v1\"],\"type\":\"string\"},\"configuration\":{\"properties\":{\"aws_or_gcp\":{\"properties\":{\"additional_secret_mount\":{\"type\":\"string\"},\"additional_secret_mount_path\":{\"default\":\"/meta/credentials\",\"type\":\"string\"},\"aws_region\":{\"default\":\"eu-central-1\",\"type\":\"string\"},\"enable_ebs_gp3_migration\":{\"default\":false,\"type\":\"boolean\"},\"enable_ebs_gp3_migration_max_size\":{\"default\":1000,\"type\":\"integer\"},\"gcp_credentials\":{\"type\":\"string\"},\"kube_iam_role\":{\"type\":\"string\"},\"log_s3_bucket\":{\"type\":\"string\"},\"wal_az_storage_account\":{\"type\":\"string\"},\"wal_gs_bucket\":{\"type\":\"string\"},\"wal_s3_bucket\":{\"type\":\"string\"}},\"type\":\"object\"},\"connection_pooler\":{\"properties\":{\"connection_pooler_default_cpu_limit\":{\"default\":\"1\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"connection_pooler_default_cpu_request\":{\"default\":\"500m\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"connection_pooler_default_memory_limit\":{\"default\":\"100Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"connection_pooler_default_memory_request\":{\"default\":\"100Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"connection_pooler_image\":{\"default\":\"registry.opensource.zalan.do/acid/pgbouncer:master-26\",\"type\":\"string\"},\"connection_pooler_max_db_connections\":{\"default\":60,\"type\":\"integer\"},\"connection_pooler_mode\":{\"default\":\"transaction\",\"enum\":[\"session\",\"transaction\"],\"type\":\"string\"},\"connection_pooler_number_of_instances\":{\"default\":2,\"minimum\":1,\"type\":\"integer\"},\"connection_pooler_schema\":{\"default\":\"pooler\",\"type\":\"string\"},\"connection_pooler_user\":{\"default\":\"pooler\",\"type\":\"string\"}},\"type\":\"object\"},\"crd_categories\":{\"items\":{\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"debug\":{\"properties\":{\"debug_logging\":{\"default\":true,\"type\":\"boolean\"},\"enable_database_access\":{\"default\":true,\"type\":\"boolean\"}},\"type\":\"object\"},\"docker_image\":{\"default\":\"ghcr.io/zalando/spilo-15:2.1-p9\",\"type\":\"string\"},\"enable_crd_registration\":{\"default\":true,\"type\":\"boolean\"},\"enable_crd_validation\":{\"default\":true,\"description\":\"deprecated\",\"type\":\"boolean\"},\"enable_lazy_spilo_upgrade\":{\"default\":false,\"type\":\"boolean\"},\"enable_pgversion_env_var\":{\"default\":true,\"type\":\"boolean\"},\"enable_shm_volume\":{\"default\":true,\"type\":\"boolean\"},\"enable_spilo_wal_path_compat\":{\"default\":false,\"type\":\"boolean\"},\"enable_team_id_clustername_prefix\":{\"default\":false,\"type\":\"boolean\"},\"etcd_host\":{\"default\":\"\",\"type\":\"string\"},\"ignore_instance_limits_annotation_key\":{\"type\":\"string\"},\"kubernetes\":{\"properties\":{\"additional_pod_capabilities\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"cluster_domain\":{\"default\":\"cluster.local\",\"type\":\"string\"},\"cluster_labels\":{\"additionalProperties\":{\"type\":\"string\"},\"default\":{\"application\":\"spilo\"},\"type\":\"object\"},\"cluster_name_label\":{\"default\":\"cluster-name\",\"type\":\"string\"},\"custom_pod_annotations\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"delete_annotation_date_key\":{\"type\":\"string\"},\"delete_annotation_name_key\":{\"type\":\"string\"},\"downscaler_annotations\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"enable_cross_namespace_secret\":{\"default\":false,\"type\":\"boolean\"},\"enable_init_containers\":{\"default\":true,\"type\":\"boolean\"},\"enable_pod_antiaffinity\":{\"default\":false,\"type\":\"boolean\"},\"enable_pod_disruption_budget\":{\"default\":true,\"type\":\"boolean\"},\"enable_readiness_probe\":{\"default\":false,\"type\":\"boolean\"},\"enable_sidecars\":{\"default\":true,\"type\":\"boolean\"},\"ignored_annotations\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"infrastructure_roles_secret_name\":{\"type\":\"string\"},\"infrastructure_roles_secrets\":{\"items\":{\"properties\":{\"defaultrolevalue\":{\"type\":\"string\"},\"defaultuservalue\":{\"type\":\"string\"},\"details\":{\"type\":\"string\"},\"passwordkey\":{\"type\":\"string\"},\"rolekey\":{\"type\":\"string\"},\"secretname\":{\"type\":\"string\"},\"template\":{\"type\":\"boolean\"},\"userkey\":{\"type\":\"string\"}},\"required\":[\"secretname\",\"userkey\",\"passwordkey\"],\"type\":\"object\"},\"nullable\":true,\"type\":\"array\"},\"inherited_annotations\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"inherited_labels\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"master_pod_move_timeout\":{\"default\":\"20m\",\"type\":\"string\"},\"node_readiness_label\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"node_readiness_label_merge\":{\"enum\":[\"AND\",\"OR\"],\"type\":\"string\"},\"oauth_token_secret_name\":{\"default\":\"postgresql-operator\",\"type\":\"string\"},\"pdb_name_format\":{\"default\":\"postgres-{cluster}-pdb\",\"type\":\"string\"},\"pod_antiaffinity_preferred_during_scheduling\":{\"default\":false,\"type\":\"boolean\"},\"pod_antiaffinity_topology_key\":{\"default\":\"kubernetes.io/hostname\",\"type\":\"string\"},\"pod_environment_configmap\":{\"type\":\"string\"},\"pod_environment_secret\":{\"type\":\"string\"},\"pod_management_policy\":{\"default\":\"ordered_ready\",\"enum\":[\"ordered_ready\",\"parallel\"],\"type\":\"string\"},\"pod_priority_class_name\":{\"type\":\"string\"},\"pod_role_label\":{\"default\":\"spilo-role\",\"type\":\"string\"},\"pod_service_account_definition\":{\"default\":\"\",\"type\":\"string\"},\"pod_service_account_name\":{\"default\":\"postgres-pod\",\"type\":\"string\"},\"pod_service_account_role_binding_definition\":{\"default\":\"\",\"type\":\"string\"},\"pod_terminate_grace_period\":{\"default\":\"5m\",\"type\":\"string\"},\"secret_name_template\":{\"default\":\"{username}.{cluster}.credentials.{tprkind}.{tprgroup}\",\"type\":\"string\"},\"share_pgsocket_with_sidecars\":{\"default\":false,\"type\":\"boolean\"},\"spilo_allow_privilege_escalation\":{\"default\":true,\"type\":\"boolean\"},\"spilo_fsgroup\":{\"type\":\"integer\"},\"spilo_privileged\":{\"default\":false,\"type\":\"boolean\"},\"spilo_runasgroup\":{\"type\":\"integer\"},\"spilo_runasuser\":{\"type\":\"integer\"},\"storage_resize_mode\":{\"default\":\"pvc\",\"enum\":[\"ebs\",\"mixed\",\"pvc\",\"off\"],\"type\":\"string\"},\"toleration\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"watched_namespace\":{\"type\":\"string\"}},\"type\":\"object\"},\"kubernetes_use_configmaps\":{\"default\":false,\"type\":\"boolean\"},\"load_balancer\":{\"properties\":{\"custom_service_annotations\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"db_hosted_zone\":{\"default\":\"db.example.com\",\"type\":\"string\"},\"enable_master_load_balancer\":{\"default\":true,\"type\":\"boolean\"},\"enable_master_pooler_load_balancer\":{\"default\":false,\"type\":\"boolean\"},\"enable_replica_load_balancer\":{\"default\":false,\"type\":\"boolean\"},\"enable_replica_pooler_load_balancer\":{\"default\":false,\"type\":\"boolean\"},\"external_traffic_policy\":{\"default\":\"Cluster\",\"enum\":[\"Cluster\",\"Local\"],\"type\":\"string\"},\"master_dns_name_format\":{\"default\":\"{cluster}.{namespace}.{hostedzone}\",\"type\":\"string\"},\"master_legacy_dns_name_format\":{\"default\":\"{cluster}.{team}.{hostedzone}\",\"type\":\"string\"},\"replica_dns_name_format\":{\"default\":\"{cluster}-repl.{namespace}.{hostedzone}\",\"type\":\"string\"},\"replica_legacy_dns_name_format\":{\"default\":\"{cluster}-repl.{team}.{hostedzone}\",\"type\":\"string\"}},\"type\":\"object\"},\"logging_rest_api\":{\"properties\":{\"api_port\":{\"default\":8080,\"type\":\"integer\"},\"cluster_history_entries\":{\"default\":1000,\"type\":\"integer\"},\"ring_log_lines\":{\"default\":100,\"type\":\"integer\"}},\"type\":\"object\"},\"logical_backup\":{\"properties\":{\"logical_backup_azure_storage_account_key\":{\"type\":\"string\"},\"logical_backup_azure_storage_account_name\":{\"type\":\"string\"},\"logical_backup_azure_storage_container\":{\"type\":\"string\"},\"logical_backup_cpu_limit\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"logical_backup_cpu_request\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"logical_backup_docker_image\":{\"default\":\"registry.opensource.zalan.do/acid/logical-backup:v1.9.0\",\"type\":\"string\"},\"logical_backup_google_application_credentials\":{\"type\":\"string\"},\"logical_backup_job_prefix\":{\"default\":\"logical-backup-\",\"type\":\"string\"},\"logical_backup_memory_limit\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"logical_backup_memory_request\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"logical_backup_provider\":{\"default\":\"s3\",\"enum\":[\"az\",\"gcs\",\"s3\"],\"type\":\"string\"},\"logical_backup_s3_access_key_id\":{\"type\":\"string\"},\"logical_backup_s3_bucket\":{\"type\":\"string\"},\"logical_backup_s3_endpoint\":{\"type\":\"string\"},\"logical_backup_s3_region\":{\"type\":\"string\"},\"logical_backup_s3_retention_time\":{\"type\":\"string\"},\"logical_backup_s3_secret_access_key\":{\"type\":\"string\"},\"logical_backup_s3_sse\":{\"type\":\"string\"},\"logical_backup_schedule\":{\"default\":\"30 00 * * *\",\"pattern\":\"^(\\\\d+|\\\\*)(/\\\\d+)?(\\\\s+(\\\\d+|\\\\*)(/\\\\d+)?){4}$\",\"type\":\"string\"}},\"type\":\"object\"},\"major_version_upgrade\":{\"properties\":{\"major_version_upgrade_mode\":{\"default\":\"off\",\"type\":\"string\"},\"major_version_upgrade_team_allow_list\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"minimal_major_version\":{\"default\":\"11\",\"type\":\"string\"},\"target_major_version\":{\"default\":\"15\",\"type\":\"string\"}},\"type\":\"object\"},\"max_instances\":{\"default\":-1,\"description\":\"-1 = disabled\",\"minimum\":-1,\"type\":\"integer\"},\"min_instances\":{\"default\":-1,\"description\":\"-1 = disabled\",\"minimum\":-1,\"type\":\"integer\"},\"patroni\":{\"properties\":{\"failsafe_mode\":{\"default\":false,\"type\":\"boolean\"}},\"type\":\"object\"},\"postgres_pod_resources\":{\"properties\":{\"default_cpu_limit\":{\"default\":\"1\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"default_cpu_request\":{\"default\":\"100m\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"default_memory_limit\":{\"default\":\"500Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"default_memory_request\":{\"default\":\"100Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"max_cpu_request\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"max_memory_request\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"min_cpu_limit\":{\"default\":\"250m\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"min_memory_limit\":{\"default\":\"250Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"}},\"type\":\"object\"},\"repair_period\":{\"default\":\"5m\",\"type\":\"string\"},\"resync_period\":{\"default\":\"30m\",\"type\":\"string\"},\"scalyr\":{\"properties\":{\"scalyr_api_key\":{\"type\":\"string\"},\"scalyr_cpu_limit\":{\"default\":\"1\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"scalyr_cpu_request\":{\"default\":\"100m\",\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"scalyr_image\":{\"type\":\"string\"},\"scalyr_memory_limit\":{\"default\":\"500Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"scalyr_memory_request\":{\"default\":\"50Mi\",\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"scalyr_server_url\":{\"default\":\"https://upload.eu.scalyr.com\",\"type\":\"string\"}},\"type\":\"object\"},\"set_memory_request_to_limit\":{\"default\":false,\"type\":\"boolean\"},\"sidecar_docker_images\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"sidecars\":{\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"nullable\":true,\"type\":\"array\"},\"teams_api\":{\"properties\":{\"enable_admin_role_for_users\":{\"default\":true,\"type\":\"boolean\"},\"enable_postgres_team_crd\":{\"default\":true,\"type\":\"boolean\"},\"enable_postgres_team_crd_superusers\":{\"default\":false,\"type\":\"boolean\"},\"enable_team_member_deprecation\":{\"default\":false,\"type\":\"boolean\"},\"enable_team_superuser\":{\"default\":false,\"type\":\"boolean\"},\"enable_teams_api\":{\"default\":true,\"type\":\"boolean\"},\"pam_configuration\":{\"default\":\"https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees\",\"type\":\"string\"},\"pam_role_name\":{\"default\":\"zalandos\",\"type\":\"string\"},\"postgres_superuser_teams\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"protected_role_names\":{\"default\":[\"admin\",\"cron_admin\"],\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"role_deletion_suffix\":{\"default\":\"_deleted\",\"type\":\"string\"},\"team_admin_role\":{\"default\":\"admin\",\"type\":\"string\"},\"team_api_role_configuration\":{\"additionalProperties\":{\"type\":\"string\"},\"default\":{\"log_statement\":\"all\"},\"type\":\"object\"},\"teams_api_url\":{\"default\":\"https://teams.example.com/api/\",\"type\":\"string\"}},\"type\":\"object\"},\"timeouts\":{\"properties\":{\"patroni_api_check_interval\":{\"default\":\"1s\",\"type\":\"string\"},\"patroni_api_check_timeout\":{\"default\":\"5s\",\"type\":\"string\"},\"pod_deletion_wait_timeout\":{\"default\":\"10m\",\"type\":\"string\"},\"pod_label_wait_timeout\":{\"default\":\"10m\",\"type\":\"string\"},\"ready_wait_interval\":{\"default\":\"4s\",\"type\":\"string\"},\"ready_wait_timeout\":{\"default\":\"30s\",\"type\":\"string\"},\"resource_check_interval\":{\"default\":\"3s\",\"type\":\"string\"},\"resource_check_timeout\":{\"default\":\"10m\",\"type\":\"string\"}},\"type\":\"object\"},\"users\":{\"properties\":{\"additional_owner_roles\":{\"items\":{\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"enable_password_rotation\":{\"default\":false,\"type\":\"boolean\"},\"password_rotation_interval\":{\"default\":90,\"type\":\"integer\"},\"password_rotation_user_retention\":{\"default\":180,\"type\":\"integer\"},\"replication_username\":{\"default\":\"standby\",\"type\":\"string\"},\"super_username\":{\"default\":\"postgres\",\"type\":\"string\"}},\"type\":\"object\"},\"workers\":{\"default\":8,\"minimum\":1,\"type\":\"integer\"}},\"type\":\"object\"},\"kind\":{\"enum\":[\"OperatorConfiguration\"],\"type\":\"string\"},\"status\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"}},\"required\":[\"kind\",\"apiVersion\",\"configuration\"],\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}}]}}\n]] spec:map[versions:[map[additionalPrinterColumns:[map[description:Spilo image to be used for Pods jsonPath:.configuration.docker_image name:Image type:string] map[description:Label for K8s resources created by operator jsonPath:.configuration.kubernetes.cluster_name_label name:Cluster-Label type:string] map[description:Name of service account to be used jsonPath:.configuration.kubernetes.pod_service_account_name name:Service-Account type:string] map[description:Minimum number of instances per Postgres cluster jsonPath:.configuration.min_instances name:Min-Instances type:integer] map[jsonPath:.metadata.creationTimestamp name:Age type:date]] name:v1 schema:map[openAPIV3Schema:map[properties:map[apiVersion:map[enum:[acid.zalan.do/v1] type:string] configuration:map[properties:map[aws_or_gcp:map[properties:map[additional_secret_mount:map[type:string] additional_secret_mount_path:map[default:/meta/credentials type:string] aws_region:map[default:eu-central-1 type:string] enable_ebs_gp3_migration:map[default:false type:boolean] enable_ebs_gp3_migration_max_size:map[default:1000 type:integer] gcp_credentials:map[type:string] kube_iam_role:map[type:string] log_s3_bucket:map[type:string] wal_az_storage_account:map[type:string] wal_gs_bucket:map[type:string] wal_s3_bucket:map[type:string]] type:object] connection_pooler:map[properties:map[connection_pooler_default_cpu_limit:map[default:1 pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] connection_pooler_default_cpu_request:map[default:500m pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] connection_pooler_default_memory_limit:map[default:100Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] connection_pooler_default_memory_request:map[default:100Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] connection_pooler_image:map[default:registry.opensource.zalan.do/acid/pgbouncer:master-26 type:string] connection_pooler_max_db_connections:map[default:60 type:integer] connection_pooler_mode:map[default:transaction enum:[session transaction] type:string] connection_pooler_number_of_instances:map[default:2 minimum:1 type:integer] connection_pooler_schema:map[default:pooler type:string] connection_pooler_user:map[default:pooler type:string]] type:object] crd_categories:map[items:map[type:string] nullable:true type:array] debug:map[properties:map[debug_logging:map[default:true type:boolean] enable_database_access:map[default:true type:boolean]] type:object] docker_image:map[default:ghcr.io/zalando/spilo-15:2.1-p9 type:string] enable_crd_registration:map[default:true type:boolean] enable_crd_validation:map[default:true description:deprecated type:boolean] enable_lazy_spilo_upgrade:map[default:false type:boolean] enable_pgversion_env_var:map[default:true type:boolean] enable_shm_volume:map[default:true type:boolean] enable_spilo_wal_path_compat:map[default:false type:boolean] enable_team_id_clustername_prefix:map[default:false type:boolean] etcd_host:map[default: type:string] ignore_instance_limits_annotation_key:map[type:string] kubernetes:map[properties:map[additional_pod_capabilities:map[items:map[type:string] type:array] cluster_domain:map[default:cluster.local type:string] cluster_labels:map[additionalProperties:map[type:string] default:map[application:spilo] type:object] cluster_name_label:map[default:cluster-name type:string] custom_pod_annotations:map[additionalProperties:map[type:string] type:object] delete_annotation_date_key:map[type:string] delete_annotation_name_key:map[type:string] downscaler_annotations:map[items:map[type:string] type:array] enable_cross_namespace_secret:map[default:false type:boolean] enable_init_containers:map[default:true type:boolean] enable_pod_antiaffinity:map[default:false type:boolean] enable_pod_disruption_budget:map[default:true type:boolean] enable_readiness_probe:map[default:false type:boolean] enable_sidecars:map[default:true type:boolean] ignored_annotations:map[items:map[type:string] type:array] infrastructure_roles_secret_name:map[type:string] infrastructure_roles_secrets:map[items:map[properties:map[defaultrolevalue:map[type:string] defaultuservalue:map[type:string] details:map[type:string] passwordkey:map[type:string] rolekey:map[type:string] secretname:map[type:string] template:map[type:boolean] userkey:map[type:string]] required:[secretname userkey passwordkey] type:object] nullable:true type:array] inherited_annotations:map[items:map[type:string] type:array] inherited_labels:map[items:map[type:string] type:array] master_pod_move_timeout:map[default:20m type:string] node_readiness_label:map[additionalProperties:map[type:string] type:object] node_readiness_label_merge:map[enum:[AND OR] type:string] oauth_token_secret_name:map[default:postgresql-operator type:string] pdb_name_format:map[default:postgres-{cluster}-pdb type:string] pod_antiaffinity_preferred_during_scheduling:map[default:false type:boolean] pod_antiaffinity_topology_key:map[default:kubernetes.io/hostname type:string] pod_environment_configmap:map[type:string] pod_environment_secret:map[type:string] pod_management_policy:map[default:ordered_ready enum:[ordered_ready parallel] type:string] pod_priority_class_name:map[type:string] pod_role_label:map[default:spilo-role type:string] pod_service_account_definition:map[default: type:string] pod_service_account_name:map[default:postgres-pod type:string] pod_service_account_role_binding_definition:map[default: type:string] pod_terminate_grace_period:map[default:5m type:string] secret_name_template:map[default:{username}.{cluster}.credentials.{tprkind}.{tprgroup} type:string] share_pgsocket_with_sidecars:map[default:false type:boolean] spilo_allow_privilege_escalation:map[default:true type:boolean] spilo_fsgroup:map[type:integer] spilo_privileged:map[default:false type:boolean] spilo_runasgroup:map[type:integer] spilo_runasuser:map[type:integer] storage_resize_mode:map[default:pvc enum:[ebs mixed pvc off] type:string] toleration:map[additionalProperties:map[type:string] type:object] watched_namespace:map[type:string]] type:object] kubernetes_use_configmaps:map[default:false type:boolean] load_balancer:map[properties:map[custom_service_annotations:map[additionalProperties:map[type:string] type:object] db_hosted_zone:map[default:db.example.com type:string] enable_master_load_balancer:map[default:true type:boolean] enable_master_pooler_load_balancer:map[default:false type:boolean] enable_replica_load_balancer:map[default:false type:boolean] enable_replica_pooler_load_balancer:map[default:false type:boolean] external_traffic_policy:map[default:Cluster enum:[Cluster Local] type:string] master_dns_name_format:map[default:{cluster}.{namespace}.{hostedzone} type:string] master_legacy_dns_name_format:map[default:{cluster}.{team}.{hostedzone} type:string] replica_dns_name_format:map[default:{cluster}-repl.{namespace}.{hostedzone} type:string] replica_legacy_dns_name_format:map[default:{cluster}-repl.{team}.{hostedzone} type:string]] type:object] logging_rest_api:map[properties:map[api_port:map[default:8080 type:integer] cluster_history_entries:map[default:1000 type:integer] ring_log_lines:map[default:100 type:integer]] type:object] logical_backup:map[properties:map[logical_backup_azure_storage_account_key:map[type:string] logical_backup_azure_storage_account_name:map[type:string] logical_backup_azure_storage_container:map[type:string] logical_backup_cpu_limit:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] logical_backup_cpu_request:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] logical_backup_docker_image:map[default:registry.opensource.zalan.do/acid/logical-backup:v1.9.0 type:string] logical_backup_google_application_credentials:map[type:string] logical_backup_job_prefix:map[default:logical-backup- type:string] logical_backup_memory_limit:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] logical_backup_memory_request:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] logical_backup_provider:map[default:s3 enum:[az gcs s3] type:string] logical_backup_s3_access_key_id:map[type:string] logical_backup_s3_bucket:map[type:string] logical_backup_s3_endpoint:map[type:string] logical_backup_s3_region:map[type:string] logical_backup_s3_retention_time:map[type:string] logical_backup_s3_secret_access_key:map[type:string] logical_backup_s3_sse:map[type:string] logical_backup_schedule:map[default:30 00 * * * pattern:^(\\d+|\\*)(/\\d+)?(\\s+(\\d+|\\*)(/\\d+)?){4}$ type:string]] type:object] major_version_upgrade:map[properties:map[major_version_upgrade_mode:map[default:off type:string] major_version_upgrade_team_allow_list:map[items:map[type:string] type:array] minimal_major_version:map[default:11 type:string] target_major_version:map[default:15 type:string]] type:object] max_instances:map[default:-1 description:-1 = disabled minimum:-1 type:integer] min_instances:map[default:-1 description:-1 = disabled minimum:-1 type:integer] patroni:map[properties:map[failsafe_mode:map[default:false type:boolean]] type:object] postgres_pod_resources:map[properties:map[default_cpu_limit:map[default:1 pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] default_cpu_request:map[default:100m pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] default_memory_limit:map[default:500Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] default_memory_request:map[default:100Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] max_cpu_request:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] max_memory_request:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] min_cpu_limit:map[default:250m pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] min_memory_limit:map[default:250Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string]] type:object] repair_period:map[default:5m type:string] resync_period:map[default:30m type:string] scalyr:map[properties:map[scalyr_api_key:map[type:string] scalyr_cpu_limit:map[default:1 pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] scalyr_cpu_request:map[default:100m pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] scalyr_image:map[type:string] scalyr_memory_limit:map[default:500Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] scalyr_memory_request:map[default:50Mi pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] scalyr_server_url:map[default:https://upload.eu.scalyr.com type:string]] type:object] set_memory_request_to_limit:map[default:false type:boolean] sidecar_docker_images:map[additionalProperties:map[type:string] type:object] sidecars:map[items:map[type:object x-kubernetes-preserve-unknown-fields:true] nullable:true type:array] teams_api:map[properties:map[enable_admin_role_for_users:map[default:true type:boolean] enable_postgres_team_crd:map[default:true type:boolean] enable_postgres_team_crd_superusers:map[default:false type:boolean] enable_team_member_deprecation:map[default:false type:boolean] enable_team_superuser:map[default:false type:boolean] enable_teams_api:map[default:true type:boolean] pam_configuration:map[default:https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees type:string] pam_role_name:map[default:zalandos type:string] postgres_superuser_teams:map[items:map[type:string] type:array] protected_role_names:map[default:[admin cron_admin] items:map[type:string] type:array] role_deletion_suffix:map[default:_deleted type:string] team_admin_role:map[default:admin type:string] team_api_role_configuration:map[additionalProperties:map[type:string] default:map[log_statement:all] type:object] teams_api_url:map[default:https://teams.example.com/api/ type:string]] type:object] timeouts:map[properties:map[patroni_api_check_interval:map[default:1s type:string] patroni_api_check_timeout:map[default:5s type:string] pod_deletion_wait_timeout:map[default:10m type:string] pod_label_wait_timeout:map[default:10m type:string] ready_wait_interval:map[default:4s type:string] ready_wait_timeout:map[default:30s type:string] resource_check_interval:map[default:3s type:string] resource_check_timeout:map[default:10m type:string]] type:object] users:map[properties:map[additional_owner_roles:map[items:map[type:string] nullable:true type:array] enable_password_rotation:map[default:false type:boolean] password_rotation_interval:map[default:90 type:integer] password_rotation_user_retention:map[default:180 type:integer] replication_username:map[default:standby type:string] super_username:map[default:postgres type:string]] type:object] workers:map[default:8 minimum:1 type:integer]] type:object] kind:map[enum:[OperatorConfiguration] type:string] status:map[additionalProperties:map[type:string] type:object]] required:[kind apiVersion configuration] type:object]] served:true storage:true subresources:map[status:map[]]]]]]": cannot convert int64 to float64
Warning: resource customresourcedefinitions/postgresqls.acid.zalan.do is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically.
The request is invalid: patch: Invalid value: "map[metadata:map[annotations:map[kubectl.kubernetes.io/last-applied-configuration:{\"apiVersion\":\"apiextensions.k8s.io/v1\",\"kind\":\"CustomResourceDefinition\",\"metadata\":{\"annotations\":{},\"labels\":{\"app.kubernetes.io/name\":\"postgres-operator\"},\"name\":\"postgresqls.acid.zalan.do\"},\"spec\":{\"group\":\"acid.zalan.do\",\"names\":{\"categories\":[\"all\"],\"kind\":\"postgresql\",\"listKind\":\"postgresqlList\",\"plural\":\"postgresqls\",\"shortNames\":[\"pg\"],\"singular\":\"postgresql\"},\"scope\":\"Namespaced\",\"versions\":[{\"additionalPrinterColumns\":[{\"description\":\"Team responsible for Postgres cluster\",\"jsonPath\":\".spec.teamId\",\"name\":\"Team\",\"type\":\"string\"},{\"description\":\"PostgreSQL version\",\"jsonPath\":\".spec.postgresql.version\",\"name\":\"Version\",\"type\":\"string\"},{\"description\":\"Number of Pods per Postgres cluster\",\"jsonPath\":\".spec.numberOfInstances\",\"name\":\"Pods\",\"type\":\"integer\"},{\"description\":\"Size of the bound volume\",\"jsonPath\":\".spec.volume.size\",\"name\":\"Volume\",\"type\":\"string\"},{\"description\":\"Requested CPU for Postgres containers\",\"jsonPath\":\".spec.resources.requests.cpu\",\"name\":\"CPU-Request\",\"type\":\"string\"},{\"description\":\"Requested memory for Postgres containers\",\"jsonPath\":\".spec.resources.requests.memory\",\"name\":\"Memory-Request\",\"type\":\"string\"},{\"jsonPath\":\".metadata.creationTimestamp\",\"name\":\"Age\",\"type\":\"date\"},{\"description\":\"Current sync status of postgresql resource\",\"jsonPath\":\".status.PostgresClusterStatus\",\"name\":\"Status\",\"type\":\"string\"}],\"name\":\"v1\",\"schema\":{\"openAPIV3Schema\":{\"properties\":{\"apiVersion\":{\"enum\":[\"acid.zalan.do/v1\"],\"type\":\"string\"},\"kind\":{\"enum\":[\"postgresql\"],\"type\":\"string\"},\"spec\":{\"properties\":{\"additionalVolumes\":{\"items\":{\"properties\":{\"mountPath\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"subPath\":{\"type\":\"string\"},\"targetContainers\":{\"items\":{\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"volumeSource\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"required\":[\"name\",\"mountPath\",\"volumeSource\"],\"type\":\"object\"},\"type\":\"array\"},\"allowedSourceRanges\":{\"items\":{\"pattern\":\"^(\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])\\\\.(\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])\\\\.(\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])\\\\.(\\\\d|[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])\\\\/(\\\\d|[1-2]\\\\d|3[0-2])$\",\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"clone\":{\"properties\":{\"cluster\":{\"type\":\"string\"},\"s3_access_key_id\":{\"type\":\"string\"},\"s3_endpoint\":{\"type\":\"string\"},\"s3_force_path_style\":{\"type\":\"boolean\"},\"s3_secret_access_key\":{\"type\":\"string\"},\"s3_wal_path\":{\"type\":\"string\"},\"timestamp\":{\"pattern\":\"^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\\\.[0-9]+)?(([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$\",\"type\":\"string\"},\"uid\":{\"format\":\"uuid\",\"type\":\"string\"}},\"required\":[\"cluster\"],\"type\":\"object\"},\"connectionPooler\":{\"properties\":{\"dockerImage\":{\"type\":\"string\"},\"maxDBConnections\":{\"type\":\"integer\"},\"mode\":{\"enum\":[\"session\",\"transaction\"],\"type\":\"string\"},\"numberOfInstances\":{\"minimum\":1,\"type\":\"integer\"},\"resources\":{\"properties\":{\"limits\":{\"properties\":{\"cpu\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"memory\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"}},\"type\":\"object\"},\"requests\":{\"properties\":{\"cpu\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"memory\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"schema\":{\"type\":\"string\"},\"user\":{\"type\":\"string\"}},\"type\":\"object\"},\"databases\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"dockerImage\":{\"type\":\"string\"},\"enableConnectionPooler\":{\"type\":\"boolean\"},\"enableLogicalBackup\":{\"type\":\"boolean\"},\"enableMasterLoadBalancer\":{\"type\":\"boolean\"},\"enableMasterPoolerLoadBalancer\":{\"type\":\"boolean\"},\"enableReplicaConnectionPooler\":{\"type\":\"boolean\"},\"enableReplicaLoadBalancer\":{\"type\":\"boolean\"},\"enableReplicaPoolerLoadBalancer\":{\"type\":\"boolean\"},\"enableShmVolume\":{\"type\":\"boolean\"},\"env\":{\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"nullable\":true,\"type\":\"array\"},\"initContainers\":{\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"nullable\":true,\"type\":\"array\"},\"init_containers\":{\"description\":\"deprecated\",\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"nullable\":true,\"type\":\"array\"},\"logicalBackupSchedule\":{\"pattern\":\"^(\\\\d+|\\\\*)(/\\\\d+)?(\\\\s+(\\\\d+|\\\\*)(/\\\\d+)?){4}$\",\"type\":\"string\"},\"maintenanceWindows\":{\"items\":{\"pattern\":\"^\\\\ *((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\\\\d):([0-5]?\\\\d)|(2[0-3]|[01]?\\\\d):([0-5]?\\\\d))-((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\\\\d):([0-5]?\\\\d)|(2[0-3]|[01]?\\\\d):([0-5]?\\\\d))\\\\ *$\",\"type\":\"string\"},\"type\":\"array\"},\"masterServiceAnnotations\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"nodeAffinity\":{\"properties\":{\"preferredDuringSchedulingIgnoredDuringExecution\":{\"items\":{\"properties\":{\"preference\":{\"properties\":{\"matchExpressions\":{\"items\":{\"properties\":{\"key\":{\"type\":\"string\"},\"operator\":{\"type\":\"string\"},\"values\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"required\":[\"key\",\"operator\"],\"type\":\"object\"},\"type\":\"array\"},\"matchFields\":{\"items\":{\"properties\":{\"key\":{\"type\":\"string\"},\"operator\":{\"type\":\"string\"},\"values\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"required\":[\"key\",\"operator\"],\"type\":\"object\"},\"type\":\"array\"}},\"type\":\"object\"},\"weight\":{\"format\":\"int32\",\"type\":\"integer\"}},\"required\":[\"preference\",\"weight\"],\"type\":\"object\"},\"type\":\"array\"},\"requiredDuringSchedulingIgnoredDuringExecution\":{\"properties\":{\"nodeSelectorTerms\":{\"items\":{\"properties\":{\"matchExpressions\":{\"items\":{\"properties\":{\"key\":{\"type\":\"string\"},\"operator\":{\"type\":\"string\"},\"values\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"required\":[\"key\",\"operator\"],\"type\":\"object\"},\"type\":\"array\"},\"matchFields\":{\"items\":{\"properties\":{\"key\":{\"type\":\"string\"},\"operator\":{\"type\":\"string\"},\"values\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"required\":[\"key\",\"operator\"],\"type\":\"object\"},\"type\":\"array\"}},\"type\":\"object\"},\"type\":\"array\"}},\"required\":[\"nodeSelectorTerms\"],\"type\":\"object\"}},\"type\":\"object\"},\"numberOfInstances\":{\"minimum\":0,\"type\":\"integer\"},\"patroni\":{\"properties\":{\"failsafe_mode\":{\"type\":\"boolean\"},\"initdb\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"loop_wait\":{\"type\":\"integer\"},\"maximum_lag_on_failover\":{\"type\":\"integer\"},\"pg_hba\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"retry_timeout\":{\"type\":\"integer\"},\"slots\":{\"additionalProperties\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"type\":\"object\"},\"synchronous_mode\":{\"type\":\"boolean\"},\"synchronous_mode_strict\":{\"type\":\"boolean\"},\"synchronous_node_count\":{\"type\":\"integer\"},\"ttl\":{\"type\":\"integer\"}},\"type\":\"object\"},\"podAnnotations\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"podPriorityClassName\":{\"type\":\"string\"},\"pod_priority_class_name\":{\"description\":\"deprecated\",\"type\":\"string\"},\"postgresql\":{\"properties\":{\"parameters\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"version\":{\"enum\":[\"10\",\"11\",\"12\",\"13\",\"14\",\"15\"],\"type\":\"string\"}},\"required\":[\"version\"],\"type\":\"object\"},\"preparedDatabases\":{\"additionalProperties\":{\"properties\":{\"defaultUsers\":{\"type\":\"boolean\"},\"extensions\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"schemas\":{\"additionalProperties\":{\"properties\":{\"defaultRoles\":{\"type\":\"boolean\"},\"defaultUsers\":{\"type\":\"boolean\"}},\"type\":\"object\"},\"type\":\"object\"},\"secretNamespace\":{\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"object\"},\"replicaLoadBalancer\":{\"description\":\"deprecated\",\"type\":\"boolean\"},\"replicaServiceAnnotations\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"resources\":{\"properties\":{\"limits\":{\"properties\":{\"cpu\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"memory\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"}},\"type\":\"object\"},\"requests\":{\"properties\":{\"cpu\":{\"pattern\":\"^(\\\\d+m|\\\\d+(\\\\.\\\\d{1,3})?)$\",\"type\":\"string\"},\"memory\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"}},\"type\":\"object\"}},\"type\":\"object\"},\"schedulerName\":{\"type\":\"string\"},\"serviceAnnotations\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"sidecars\":{\"items\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true},\"nullable\":true,\"type\":\"array\"},\"spiloFSGroup\":{\"type\":\"integer\"},\"spiloRunAsGroup\":{\"type\":\"integer\"},\"spiloRunAsUser\":{\"type\":\"integer\"},\"standby\":{\"oneOf\":[{\"required\":[\"s3_wal_path\"]},{\"required\":[\"gs_wal_path\"]},{\"required\":[\"standby_host\"]}],\"properties\":{\"gs_wal_path\":{\"type\":\"string\"},\"s3_wal_path\":{\"type\":\"string\"},\"standby_host\":{\"type\":\"string\"},\"standby_port\":{\"type\":\"string\"}},\"type\":\"object\"},\"streams\":{\"items\":{\"properties\":{\"applicationId\":{\"type\":\"string\"},\"batchSize\":{\"type\":\"integer\"},\"database\":{\"type\":\"string\"},\"filter\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"},\"tables\":{\"additionalProperties\":{\"properties\":{\"eventType\":{\"type\":\"string\"},\"idColumn\":{\"type\":\"string\"},\"payloadColumn\":{\"type\":\"string\"}},\"required\":[\"eventType\"],\"type\":\"object\"},\"type\":\"object\"}},\"required\":[\"applicationId\",\"database\",\"tables\"],\"type\":\"object\"},\"type\":\"array\"},\"teamId\":{\"type\":\"string\"},\"tls\":{\"properties\":{\"caFile\":{\"type\":\"string\"},\"caSecretName\":{\"type\":\"string\"},\"certificateFile\":{\"type\":\"string\"},\"privateKeyFile\":{\"type\":\"string\"},\"secretName\":{\"type\":\"string\"}},\"required\":[\"secretName\"],\"type\":\"object\"},\"tolerations\":{\"items\":{\"properties\":{\"effect\":{\"enum\":[\"NoExecute\",\"NoSchedule\",\"PreferNoSchedule\"],\"type\":\"string\"},\"key\":{\"type\":\"string\"},\"operator\":{\"enum\":[\"Equal\",\"Exists\"],\"type\":\"string\"},\"tolerationSeconds\":{\"type\":\"integer\"},\"value\":{\"type\":\"string\"}},\"type\":\"object\"},\"type\":\"array\"},\"useLoadBalancer\":{\"description\":\"deprecated\",\"type\":\"boolean\"},\"users\":{\"additionalProperties\":{\"items\":{\"enum\":[\"bypassrls\",\"BYPASSRLS\",\"nobypassrls\",\"NOBYPASSRLS\",\"createdb\",\"CREATEDB\",\"nocreatedb\",\"NOCREATEDB\",\"createrole\",\"CREATEROLE\",\"nocreaterole\",\"NOCREATEROLE\",\"inherit\",\"INHERIT\",\"noinherit\",\"NOINHERIT\",\"login\",\"LOGIN\",\"nologin\",\"NOLOGIN\",\"replication\",\"REPLICATION\",\"noreplication\",\"NOREPLICATION\",\"superuser\",\"SUPERUSER\",\"nosuperuser\",\"NOSUPERUSER\"],\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"type\":\"object\"},\"usersWithInPlaceSecretRotation\":{\"items\":{\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"usersWithSecretRotation\":{\"items\":{\"type\":\"string\"},\"nullable\":true,\"type\":\"array\"},\"volume\":{\"properties\":{\"iops\":{\"type\":\"integer\"},\"selector\":{\"properties\":{\"matchExpressions\":{\"items\":{\"properties\":{\"key\":{\"type\":\"string\"},\"operator\":{\"enum\":[\"DoesNotExist\",\"Exists\",\"In\",\"NotIn\"],\"type\":\"string\"},\"values\":{\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"required\":[\"key\",\"operator\"],\"type\":\"object\"},\"type\":\"array\"},\"matchLabels\":{\"type\":\"object\",\"x-kubernetes-preserve-unknown-fields\":true}},\"type\":\"object\"},\"size\":{\"pattern\":\"^(\\\\d+(e\\\\d+)?|\\\\d+(\\\\.\\\\d+)?(e\\\\d+)?[EPTGMK]i?)$\",\"type\":\"string\"},\"storageClass\":{\"type\":\"string\"},\"subPath\":{\"type\":\"string\"},\"throughput\":{\"type\":\"integer\"}},\"required\":[\"size\"],\"type\":\"object\"}},\"required\":[\"numberOfInstances\",\"teamId\",\"postgresql\",\"volume\"],\"type\":\"object\"},\"status\":{\"additionalProperties\":{\"type\":\"string\"},\"type\":\"object\"}},\"required\":[\"kind\",\"apiVersion\",\"spec\"],\"type\":\"object\"}},\"served\":true,\"storage\":true,\"subresources\":{\"status\":{}}}]}}\n]] spec:map[versions:[map[additionalPrinterColumns:[map[description:Team responsible for Postgres cluster jsonPath:.spec.teamId name:Team type:string] map[description:PostgreSQL version jsonPath:.spec.postgresql.version name:Version type:string] map[description:Number of Pods per Postgres cluster jsonPath:.spec.numberOfInstances name:Pods type:integer] map[description:Size of the bound volume jsonPath:.spec.volume.size name:Volume type:string] map[description:Requested CPU for Postgres containers jsonPath:.spec.resources.requests.cpu name:CPU-Request type:string] map[description:Requested memory for Postgres containers jsonPath:.spec.resources.requests.memory name:Memory-Request type:string] map[jsonPath:.metadata.creationTimestamp name:Age type:date] map[description:Current sync status of postgresql resource jsonPath:.status.PostgresClusterStatus name:Status type:string]] name:v1 schema:map[openAPIV3Schema:map[properties:map[apiVersion:map[enum:[acid.zalan.do/v1] type:string] kind:map[enum:[postgresql] type:string] spec:map[properties:map[additionalVolumes:map[items:map[properties:map[mountPath:map[type:string] name:map[type:string] subPath:map[type:string] targetContainers:map[items:map[type:string] nullable:true type:array] volumeSource:map[type:object x-kubernetes-preserve-unknown-fields:true]] required:[name mountPath volumeSource] type:object] type:array] allowedSourceRanges:map[items:map[pattern:^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\/(\\d|[1-2]\\d|3[0-2])$ type:string] nullable:true type:array] clone:map[properties:map[cluster:map[type:string] s3_access_key_id:map[type:string] s3_endpoint:map[type:string] s3_force_path_style:map[type:boolean] s3_secret_access_key:map[type:string] s3_wal_path:map[type:string] timestamp:map[pattern:^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$ type:string] uid:map[format:uuid type:string]] required:[cluster] type:object] connectionPooler:map[properties:map[dockerImage:map[type:string] maxDBConnections:map[type:integer] mode:map[enum:[session transaction] type:string] numberOfInstances:map[minimum:1 type:integer] resources:map[properties:map[limits:map[properties:map[cpu:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] memory:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string]] type:object] requests:map[properties:map[cpu:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] memory:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string]] type:object]] type:object] schema:map[type:string] user:map[type:string]] type:object] databases:map[additionalProperties:map[type:string] type:object] dockerImage:map[type:string] enableConnectionPooler:map[type:boolean] enableLogicalBackup:map[type:boolean] enableMasterLoadBalancer:map[type:boolean] enableMasterPoolerLoadBalancer:map[type:boolean] enableReplicaConnectionPooler:map[type:boolean] enableReplicaLoadBalancer:map[type:boolean] enableReplicaPoolerLoadBalancer:map[type:boolean] enableShmVolume:map[type:boolean] env:map[items:map[type:object x-kubernetes-preserve-unknown-fields:true] nullable:true type:array] initContainers:map[items:map[type:object x-kubernetes-preserve-unknown-fields:true] nullable:true type:array] init_containers:map[description:deprecated items:map[type:object x-kubernetes-preserve-unknown-fields:true] nullable:true type:array] logicalBackupSchedule:map[pattern:^(\\d+|\\*)(/\\d+)?(\\s+(\\d+|\\*)(/\\d+)?){4}$ type:string] maintenanceWindows:map[items:map[pattern:^\\ *((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\\d):([0-5]?\\d)|(2[0-3]|[01]?\\d):([0-5]?\\d))-((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\\d):([0-5]?\\d)|(2[0-3]|[01]?\\d):([0-5]?\\d))\\ *$ type:string] type:array] masterServiceAnnotations:map[additionalProperties:map[type:string] type:object] nodeAffinity:map[properties:map[preferredDuringSchedulingIgnoredDuringExecution:map[items:map[properties:map[preference:map[properties:map[matchExpressions:map[items:map[properties:map[key:map[type:string] operator:map[type:string] values:map[items:map[type:string] type:array]] required:[key operator] type:object] type:array] matchFields:map[items:map[properties:map[key:map[type:string] operator:map[type:string] values:map[items:map[type:string] type:array]] required:[key operator] type:object] type:array]] type:object] weight:map[format:int32 type:integer]] required:[preference weight] type:object] type:array] requiredDuringSchedulingIgnoredDuringExecution:map[properties:map[nodeSelectorTerms:map[items:map[properties:map[matchExpressions:map[items:map[properties:map[key:map[type:string] operator:map[type:string] values:map[items:map[type:string] type:array]] required:[key operator] type:object] type:array] matchFields:map[items:map[properties:map[key:map[type:string] operator:map[type:string] values:map[items:map[type:string] type:array]] required:[key operator] type:object] type:array]] type:object] type:array]] required:[nodeSelectorTerms] type:object]] type:object] numberOfInstances:map[minimum:0 type:integer] patroni:map[properties:map[failsafe_mode:map[type:boolean] initdb:map[additionalProperties:map[type:string] type:object] loop_wait:map[type:integer] maximum_lag_on_failover:map[type:integer] pg_hba:map[items:map[type:string] type:array] retry_timeout:map[type:integer] slots:map[additionalProperties:map[additionalProperties:map[type:string] type:object] type:object] synchronous_mode:map[type:boolean] synchronous_mode_strict:map[type:boolean] synchronous_node_count:map[type:integer] ttl:map[type:integer]] type:object] podAnnotations:map[additionalProperties:map[type:string] type:object] podPriorityClassName:map[type:string] pod_priority_class_name:map[description:deprecated type:string] postgresql:map[properties:map[parameters:map[additionalProperties:map[type:string] type:object] version:map[enum:[10 11 12 13 14 15] type:string]] required:[version] type:object] preparedDatabases:map[additionalProperties:map[properties:map[defaultUsers:map[type:boolean] extensions:map[additionalProperties:map[type:string] type:object] schemas:map[additionalProperties:map[properties:map[defaultRoles:map[type:boolean] defaultUsers:map[type:boolean]] type:object] type:object] secretNamespace:map[type:string]] type:object] type:object] replicaLoadBalancer:map[description:deprecated type:boolean] replicaServiceAnnotations:map[additionalProperties:map[type:string] type:object] resources:map[properties:map[limits:map[properties:map[cpu:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] memory:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string]] type:object] requests:map[properties:map[cpu:map[pattern:^(\\d+m|\\d+(\\.\\d{1,3})?)$ type:string] memory:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string]] type:object]] type:object] schedulerName:map[type:string] serviceAnnotations:map[additionalProperties:map[type:string] type:object] sidecars:map[items:map[type:object x-kubernetes-preserve-unknown-fields:true] nullable:true type:array] spiloFSGroup:map[type:integer] spiloRunAsGroup:map[type:integer] spiloRunAsUser:map[type:integer] standby:map[oneOf:[map[required:[s3_wal_path]] map[required:[gs_wal_path]] map[required:[standby_host]]] properties:map[gs_wal_path:map[type:string] s3_wal_path:map[type:string] standby_host:map[type:string] standby_port:map[type:string]] type:object] streams:map[items:map[properties:map[applicationId:map[type:string] batchSize:map[type:integer] database:map[type:string] filter:map[additionalProperties:map[type:string] type:object] tables:map[additionalProperties:map[properties:map[eventType:map[type:string] idColumn:map[type:string] payloadColumn:map[type:string]] required:[eventType] type:object] type:object]] required:[applicationId database tables] type:object] type:array] teamId:map[type:string] tls:map[properties:map[caFile:map[type:string] caSecretName:map[type:string] certificateFile:map[type:string] privateKeyFile:map[type:string] secretName:map[type:string]] required:[secretName] type:object] tolerations:map[items:map[properties:map[effect:map[enum:[NoExecute NoSchedule PreferNoSchedule] type:string] key:map[type:string] operator:map[enum:[Equal Exists] type:string] tolerationSeconds:map[type:integer] value:map[type:string]] type:object] type:array] useLoadBalancer:map[description:deprecated type:boolean] users:map[additionalProperties:map[items:map[enum:[bypassrls BYPASSRLS nobypassrls NOBYPASSRLS createdb CREATEDB nocreatedb NOCREATEDB createrole CREATEROLE nocreaterole NOCREATEROLE inherit INHERIT noinherit NOINHERIT login LOGIN nologin NOLOGIN replication REPLICATION noreplication NOREPLICATION superuser SUPERUSER nosuperuser NOSUPERUSER] type:string] nullable:true type:array] type:object] usersWithInPlaceSecretRotation:map[items:map[type:string] nullable:true type:array] usersWithSecretRotation:map[items:map[type:string] nullable:true type:array] volume:map[properties:map[iops:map[type:integer] selector:map[properties:map[matchExpressions:map[items:map[properties:map[key:map[type:string] operator:map[enum:[DoesNotExist Exists In NotIn] type:string] values:map[items:map[type:string] type:array]] required:[key operator] type:object] type:array] matchLabels:map[type:object x-kubernetes-preserve-unknown-fields:true]] type:object] size:map[pattern:^(\\d+(e\\d+)?|\\d+(\\.\\d+)?(e\\d+)?[EPTGMK]i?)$ type:string] storageClass:map[type:string] subPath:map[type:string] throughput:map[type:integer]] required:[size] type:object]] required:[numberOfInstances teamId postgresql volume] type:object] status:map[additionalProperties:map[type:string] type:object]] required:[kind apiVersion spec] type:object]] served:true storage:true subresources:map[status:map[]]]]]]": cannot convert int64 to float64
customresourcedefinition.apiextensions.k8s.io/postgresteams.acid.zalan.do unchanged

We are currently using version 1.8.2.

barzog commented 1 year ago

Experiencing same problem. But in my case operator is installed using argo-cd, so updating CRDs using helm will broke argo-cd managed installation. Tried to replace operatorconfiguration crd with skip schema validation options in argocd with no luck:

argocd 0s Normal OperationStarted application/pgsql-zalando admin initiated partial sync to 1.9.0 (1.9.0) argocd 0s Warning OperationCompleted application/pgsql-zalando Partial sync operation to 1.9.0 failed: ComparisonError: error calculating structured merge diff: error building typed value from config resource: errors:...

FxKu commented 1 year ago

@devops-matriz are you maybe still on helm 2? That has been an issue when I last saw this type of error.

devops-matriz commented 1 year ago

@FxKu no, I'm using helm 3.10.3. Anyway, I solved it using the flags --server-side and --force-conflicts on the 'kubectl apply' command (in dev environment). After that I was able to update the helm chart.

nihaldivyam commented 1 year ago

@jensjohansen I was facing the same issue while syncing the latest version on Argocd , the fix for me was to remove the old CRD and then sync.

Note on this - You need to have cascade disabled or else you might loose all the data from pv.

barzog commented 1 year ago

@jensjohansen I was facing the same issue while syncing the latest version on Argocd , the fix for me was to remove the old CRD and then sync.

That's really wonderful kind of update:( Deleting CRDs caused all databases statefulsets deletion with PVC deletion as well. So in the end I was forced to recreate all db clusters from backup.

nihaldivyam commented 1 year ago

@jensjohansen I was facing the same issue while syncing the latest version on Argocd , the fix for me was to remove the old CRD and then sync.

That's really wonderful kind of update:( Deleting CRDs caused all databases statefulsets deletion with PVC deletion as well. So in the end I was forced to recreate all db clusters from backup.

Ahh's need to always use cascade disabled so pvc don't get cleaned. My bad should have mentioned it !

Lxrdknows77 commented 1 year ago

Hm, I found, that some of the new fields were not added in 1.10.0 v1 package: https://github.com/zalando/postgres-operator/blob/7372e91956773a3b5f9ed4da1bf8f9c5b255dd31/pkg/apis/acid.zalan.do/v1/crds.go. E.g. these enable_pgversion_env_var and osc_sws_postgresql_server_controller fields were not added to OperatorConfigCRDResourceValidation. I'm wondering it was made deliberately or just missed? .

amirkusedghi commented 12 months ago

@nihaldivyam Hi brother, I have 1.6.2 installed using Argo through my repository. I want to upgrade the Postgres-Operator to 1.9 as 1.6 will not be supported in Kubernetes V1.25. Could you please guide me how to safely do that without disruption to my already running Porstgres clusters?