add default values to operatorconfiguration crd
This commit is contained in:
		
							parent
							
								
									a21504555b
								
							
						
					
					
						commit
						3168da624c
					
				| 
						 | 
				
			
			@ -65,32 +65,45 @@ spec:
 | 
			
		|||
            properties:
 | 
			
		||||
              docker_image:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p2"
 | 
			
		||||
              enable_crd_validation:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: true
 | 
			
		||||
              enable_lazy_spilo_upgrade:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              enable_pgversion_env_var:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: true
 | 
			
		||||
              enable_shm_volume:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: true
 | 
			
		||||
              enable_spilo_wal_path_compat:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              etcd_host:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: ""
 | 
			
		||||
              kubernetes_use_configmaps:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              max_instances:
 | 
			
		||||
                type: integer
 | 
			
		||||
                minimum: -1  # -1 = disabled
 | 
			
		||||
                default: -1
 | 
			
		||||
              min_instances:
 | 
			
		||||
                type: integer
 | 
			
		||||
                minimum: -1  # -1 = disabled
 | 
			
		||||
                default: -1
 | 
			
		||||
              resync_period:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: "30m"
 | 
			
		||||
              repair_period:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: "5m"
 | 
			
		||||
              set_memory_request_to_limit:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              sidecar_docker_images:
 | 
			
		||||
                type: object
 | 
			
		||||
                additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			@ -104,24 +117,31 @@ spec:
 | 
			
		|||
              workers:
 | 
			
		||||
                type: integer
 | 
			
		||||
                minimum: 1
 | 
			
		||||
                default: 8
 | 
			
		||||
              users:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  replication_username:
 | 
			
		||||
                     type: string
 | 
			
		||||
                     default: standby
 | 
			
		||||
                  super_username:
 | 
			
		||||
                     type: string
 | 
			
		||||
                     default: postgres
 | 
			
		||||
              kubernetes:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  cluster_domain:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "cluster.local"
 | 
			
		||||
                  cluster_labels:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    default:
 | 
			
		||||
                      application: spilo
 | 
			
		||||
                  cluster_name_label:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "cluster-name"
 | 
			
		||||
                  custom_pod_annotations:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			@ -136,12 +156,16 @@ spec:
 | 
			
		|||
                      type: string
 | 
			
		||||
                  enable_init_containers:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_pod_antiaffinity:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_pod_disruption_budget:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_sidecars:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  infrastructure_roles_secret_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  infrastructure_roles_secrets:
 | 
			
		||||
| 
						 | 
				
			
			@ -180,16 +204,20 @@ spec:
 | 
			
		|||
                      type: string
 | 
			
		||||
                  master_pod_move_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "20m"
 | 
			
		||||
                  node_readiness_label:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
                      type: string
 | 
			
		||||
                  oauth_token_secret_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "postgresql-operator"
 | 
			
		||||
                  pdb_name_format:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "postgres-{cluster}-pdb"
 | 
			
		||||
                  pod_antiaffinity_topology_key:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "kubernetes.io/hostname"
 | 
			
		||||
                  pod_environment_configmap:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  pod_environment_secret:
 | 
			
		||||
| 
						 | 
				
			
			@ -199,20 +227,27 @@ spec:
 | 
			
		|||
                    enum:
 | 
			
		||||
                      - "ordered_ready"
 | 
			
		||||
                      - "parallel"
 | 
			
		||||
                    default: "ordered_ready"
 | 
			
		||||
                  pod_priority_class_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  pod_role_label:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "spilo-role"
 | 
			
		||||
                  pod_service_account_definition:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: ""
 | 
			
		||||
                  pod_service_account_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "postgres-pod"
 | 
			
		||||
                  pod_service_account_role_binding_definition:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: ""
 | 
			
		||||
                  pod_terminate_grace_period:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "5m"
 | 
			
		||||
                  secret_name_template:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}"
 | 
			
		||||
                  spilo_runasuser:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                  spilo_runasgroup:
 | 
			
		||||
| 
						 | 
				
			
			@ -221,12 +256,14 @@ spec:
 | 
			
		|||
                    type: integer
 | 
			
		||||
                  spilo_privileged:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  storage_resize_mode:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    enum:
 | 
			
		||||
                      - "ebs"
 | 
			
		||||
                      - "pvc"
 | 
			
		||||
                      - "off"
 | 
			
		||||
                    default: "pvc"
 | 
			
		||||
                  toleration:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			@ -239,36 +276,48 @@ spec:
 | 
			
		|||
                  default_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "1"
 | 
			
		||||
                  default_cpu_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "100m"
 | 
			
		||||
                  default_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "500Mi"
 | 
			
		||||
                  default_memory_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "100Mi"
 | 
			
		||||
                  min_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "250m"
 | 
			
		||||
                  min_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "250Mi"
 | 
			
		||||
              timeouts:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  pod_label_wait_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "10m"
 | 
			
		||||
                  pod_deletion_wait_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "10m"
 | 
			
		||||
                  ready_wait_interval:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "4s"
 | 
			
		||||
                  ready_wait_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "30s"
 | 
			
		||||
                  resource_check_interval:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "3s"
 | 
			
		||||
                  resource_check_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "10m"
 | 
			
		||||
              load_balancer:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
| 
						 | 
				
			
			@ -278,19 +327,25 @@ spec:
 | 
			
		|||
                      type: string
 | 
			
		||||
                  db_hosted_zone:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "db.example.com"
 | 
			
		||||
                  enable_master_load_balancer:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_replica_load_balancer:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  external_traffic_policy:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    enum:
 | 
			
		||||
                      - "Cluster"
 | 
			
		||||
                      - "Local"
 | 
			
		||||
                    default: "Cluster"
 | 
			
		||||
                  master_dns_name_format:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "{cluster}.{team}.{hostedzone}"
 | 
			
		||||
                  replica_dns_name_format:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "{cluster}-repl.{team}.{hostedzone}"
 | 
			
		||||
              aws_or_gcp:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
| 
						 | 
				
			
			@ -298,12 +353,16 @@ spec:
 | 
			
		|||
                    type: string
 | 
			
		||||
                  additional_secret_mount_path:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "/meta/credentials"
 | 
			
		||||
                  aws_region:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "eu-central-1"
 | 
			
		||||
                  enable_ebs_gp3_migration:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_ebs_gp3_migration_max_size:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 1000
 | 
			
		||||
                  gcp_credentials:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  kube_iam_role:
 | 
			
		||||
| 
						 | 
				
			
			@ -319,10 +378,12 @@ spec:
 | 
			
		|||
                properties:
 | 
			
		||||
                  logical_backup_docker_image:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
			
		||||
                  logical_backup_google_application_credentials:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  logical_backup_provider:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "s3"
 | 
			
		||||
                  logical_backup_s3_access_key_id:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  logical_backup_s3_bucket:
 | 
			
		||||
| 
						 | 
				
			
			@ -338,30 +399,40 @@ spec:
 | 
			
		|||
                  logical_backup_schedule:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
			
		||||
                    default: "30 00 * * *"
 | 
			
		||||
              debug:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  debug_logging:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_database_access:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
              teams_api:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  enable_admin_role_for_users:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_postgres_team_crd:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_postgres_team_crd_superusers:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_team_superuser:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_teams_api:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  pam_configuration:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees"
 | 
			
		||||
                  pam_role_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "zalandos"
 | 
			
		||||
                  postgres_superuser_teams:
 | 
			
		||||
                    type: array
 | 
			
		||||
                    items:
 | 
			
		||||
| 
						 | 
				
			
			@ -370,23 +441,32 @@ spec:
 | 
			
		|||
                    type: array
 | 
			
		||||
                    items:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    default:
 | 
			
		||||
                    - admin
 | 
			
		||||
                  team_admin_role:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "admin"
 | 
			
		||||
                  team_api_role_configuration:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    default:
 | 
			
		||||
                      log_statement: all
 | 
			
		||||
                  teams_api_url:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    defaults: "https://teams.example.com/api/"
 | 
			
		||||
              logging_rest_api:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  api_port:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 8080
 | 
			
		||||
                  cluster_history_entries:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 1000
 | 
			
		||||
                  ring_log_lines:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 100
 | 
			
		||||
              scalyr:  # deprecated
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
| 
						 | 
				
			
			@ -395,60 +475,65 @@ spec:
 | 
			
		|||
                  scalyr_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "1"
 | 
			
		||||
                  scalyr_cpu_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "100m"
 | 
			
		||||
                  scalyr_image:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  scalyr_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "500Mi"
 | 
			
		||||
                  scalyr_memory_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "50Mi"
 | 
			
		||||
                  scalyr_server_url:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "https://upload.eu.scalyr.com"
 | 
			
		||||
              connection_pooler:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  connection_pooler_schema:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    #default: "pooler"
 | 
			
		||||
                    default: "pooler"
 | 
			
		||||
                  connection_pooler_user:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    #default: "pooler"
 | 
			
		||||
                    default: "pooler"
 | 
			
		||||
                  connection_pooler_image:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    #default: "registry.opensource.zalan.do/acid/pgbouncer"
 | 
			
		||||
                    default: "registry.opensource.zalan.do/acid/pgbouncer:master-12"
 | 
			
		||||
                  connection_pooler_max_db_connections:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    #default: 60
 | 
			
		||||
                    default: 60
 | 
			
		||||
                  connection_pooler_mode:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    enum:
 | 
			
		||||
                      - "session"
 | 
			
		||||
                      - "transaction"
 | 
			
		||||
                    #default: "transaction"
 | 
			
		||||
                    default: "transaction"
 | 
			
		||||
                  connection_pooler_number_of_instances:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    minimum: 2
 | 
			
		||||
                    #default: 2
 | 
			
		||||
                    minimum: 1
 | 
			
		||||
                    default: 2
 | 
			
		||||
                  connection_pooler_default_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    #default: "1"
 | 
			
		||||
                    default: "1"
 | 
			
		||||
                  connection_pooler_default_cpu_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    #default: "500m"
 | 
			
		||||
                    default: "500m"
 | 
			
		||||
                  connection_pooler_default_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    #default: "100Mi"
 | 
			
		||||
                    default: "100Mi"
 | 
			
		||||
                  connection_pooler_default_memory_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    #default: "100Mi"
 | 
			
		||||
                    default: "100Mi"
 | 
			
		||||
          status:
 | 
			
		||||
            type: object
 | 
			
		||||
            additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -561,7 +561,7 @@ grouped under the `logical_backup` key.
 | 
			
		|||
  runs `pg_dumpall` on a replica if possible and uploads compressed results to
 | 
			
		||||
  an S3 bucket under the key `/spilo/pg_cluster_name/cluster_k8s_uuid/logical_backups`.
 | 
			
		||||
  The default image is the same image built with the Zalando-internal CI
 | 
			
		||||
  pipeline. Default: "registry.opensource.zalan.do/acid/logical-backup"
 | 
			
		||||
  pipeline. Default: "registry.opensource.zalan.do/acid/logical-backup:v.1.6.0"
 | 
			
		||||
 | 
			
		||||
* **logical_backup_provider**
 | 
			
		||||
  Specifies the storage provider to which the backup should be uploaded (`s3` or `gcs`).
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -61,32 +61,45 @@ spec:
 | 
			
		|||
            properties:
 | 
			
		||||
              docker_image:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p2"
 | 
			
		||||
              enable_crd_validation:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: true
 | 
			
		||||
              enable_lazy_spilo_upgrade:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              enable_pgversion_env_var:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: true
 | 
			
		||||
              enable_shm_volume:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: true
 | 
			
		||||
              enable_spilo_wal_path_compat:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              etcd_host:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: ""
 | 
			
		||||
              kubernetes_use_configmaps:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              max_instances:
 | 
			
		||||
                type: integer
 | 
			
		||||
                minimum: -1  # -1 = disabled
 | 
			
		||||
                default: -1
 | 
			
		||||
              min_instances:
 | 
			
		||||
                type: integer
 | 
			
		||||
                minimum: -1  # -1 = disabled
 | 
			
		||||
                default: -1
 | 
			
		||||
              resync_period:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: "30m"
 | 
			
		||||
              repair_period:
 | 
			
		||||
                type: string
 | 
			
		||||
                default: "5m"
 | 
			
		||||
              set_memory_request_to_limit:
 | 
			
		||||
                type: boolean
 | 
			
		||||
                default: false
 | 
			
		||||
              sidecar_docker_images:
 | 
			
		||||
                type: object
 | 
			
		||||
                additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			@ -100,24 +113,31 @@ spec:
 | 
			
		|||
              workers:
 | 
			
		||||
                type: integer
 | 
			
		||||
                minimum: 1
 | 
			
		||||
                default: 8
 | 
			
		||||
              users:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  replication_username:
 | 
			
		||||
                     type: string
 | 
			
		||||
                     default: standby
 | 
			
		||||
                  super_username:
 | 
			
		||||
                     type: string
 | 
			
		||||
                     default: postgres
 | 
			
		||||
              kubernetes:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  cluster_domain:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "cluster.local"
 | 
			
		||||
                  cluster_labels:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    default:
 | 
			
		||||
                      application: spilo
 | 
			
		||||
                  cluster_name_label:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "cluster-name"
 | 
			
		||||
                  custom_pod_annotations:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			@ -132,12 +152,16 @@ spec:
 | 
			
		|||
                      type: string
 | 
			
		||||
                  enable_init_containers:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_pod_antiaffinity:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_pod_disruption_budget:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_sidecars:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  infrastructure_roles_secret_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  infrastructure_roles_secrets:
 | 
			
		||||
| 
						 | 
				
			
			@ -176,16 +200,20 @@ spec:
 | 
			
		|||
                      type: string
 | 
			
		||||
                  master_pod_move_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "20m"
 | 
			
		||||
                  node_readiness_label:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
                      type: string
 | 
			
		||||
                  oauth_token_secret_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "postgresql-operator"
 | 
			
		||||
                  pdb_name_format:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "postgres-{cluster}-pdb"
 | 
			
		||||
                  pod_antiaffinity_topology_key:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "kubernetes.io/hostname"
 | 
			
		||||
                  pod_environment_configmap:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  pod_environment_secret:
 | 
			
		||||
| 
						 | 
				
			
			@ -195,20 +223,27 @@ spec:
 | 
			
		|||
                    enum:
 | 
			
		||||
                      - "ordered_ready"
 | 
			
		||||
                      - "parallel"
 | 
			
		||||
                    default: "ordered_ready"
 | 
			
		||||
                  pod_priority_class_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  pod_role_label:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "spilo-role"
 | 
			
		||||
                  pod_service_account_definition:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: ""
 | 
			
		||||
                  pod_service_account_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "postgres-pod"
 | 
			
		||||
                  pod_service_account_role_binding_definition:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: ""
 | 
			
		||||
                  pod_terminate_grace_period:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "5m"
 | 
			
		||||
                  secret_name_template:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}"
 | 
			
		||||
                  spilo_runasuser:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                  spilo_runasgroup:
 | 
			
		||||
| 
						 | 
				
			
			@ -217,12 +252,14 @@ spec:
 | 
			
		|||
                    type: integer
 | 
			
		||||
                  spilo_privileged:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  storage_resize_mode:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    enum:
 | 
			
		||||
                      - "ebs"
 | 
			
		||||
                      - "pvc"
 | 
			
		||||
                      - "off"
 | 
			
		||||
                    default: "pvc"
 | 
			
		||||
                  toleration:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			@ -235,36 +272,48 @@ spec:
 | 
			
		|||
                  default_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "1"
 | 
			
		||||
                  default_cpu_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "100m"
 | 
			
		||||
                  default_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "500Mi"
 | 
			
		||||
                  default_memory_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "100Mi"
 | 
			
		||||
                  min_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "250m"
 | 
			
		||||
                  min_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "250Mi"
 | 
			
		||||
              timeouts:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  pod_label_wait_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "10m"
 | 
			
		||||
                  pod_deletion_wait_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "10m"
 | 
			
		||||
                  ready_wait_interval:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "4s"
 | 
			
		||||
                  ready_wait_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "30s"
 | 
			
		||||
                  resource_check_interval:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "3s"
 | 
			
		||||
                  resource_check_timeout:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "10m"
 | 
			
		||||
              load_balancer:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
| 
						 | 
				
			
			@ -274,19 +323,25 @@ spec:
 | 
			
		|||
                      type: string
 | 
			
		||||
                  db_hosted_zone:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "db.example.com"
 | 
			
		||||
                  enable_master_load_balancer:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_replica_load_balancer:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  external_traffic_policy:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    enum:
 | 
			
		||||
                      - "Cluster"
 | 
			
		||||
                      - "Local"
 | 
			
		||||
                    default: "Cluster"
 | 
			
		||||
                  master_dns_name_format:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "{cluster}.{team}.{hostedzone}"
 | 
			
		||||
                  replica_dns_name_format:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "{cluster}-repl.{team}.{hostedzone}"
 | 
			
		||||
              aws_or_gcp:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
| 
						 | 
				
			
			@ -294,12 +349,16 @@ spec:
 | 
			
		|||
                    type: string
 | 
			
		||||
                  additional_secret_mount_path:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "/meta/credentials"
 | 
			
		||||
                  aws_region:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "eu-central-1"
 | 
			
		||||
                  enable_ebs_gp3_migration:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_ebs_gp3_migration_max_size:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 1000
 | 
			
		||||
                  gcp_credentials:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  kube_iam_role:
 | 
			
		||||
| 
						 | 
				
			
			@ -315,10 +374,12 @@ spec:
 | 
			
		|||
                properties:
 | 
			
		||||
                  logical_backup_docker_image:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
			
		||||
                  logical_backup_google_application_credentials:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  logical_backup_provider:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "s3"
 | 
			
		||||
                  logical_backup_s3_access_key_id:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  logical_backup_s3_bucket:
 | 
			
		||||
| 
						 | 
				
			
			@ -334,30 +395,40 @@ spec:
 | 
			
		|||
                  logical_backup_schedule:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
			
		||||
                    default: "30 00 * * *"
 | 
			
		||||
              debug:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  debug_logging:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_database_access:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
              teams_api:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  enable_admin_role_for_users:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_postgres_team_crd:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  enable_postgres_team_crd_superusers:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_team_superuser:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: false
 | 
			
		||||
                  enable_teams_api:
 | 
			
		||||
                    type: boolean
 | 
			
		||||
                    default: true
 | 
			
		||||
                  pam_configuration:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees"
 | 
			
		||||
                  pam_role_name:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "zalandos"
 | 
			
		||||
                  postgres_superuser_teams:
 | 
			
		||||
                    type: array
 | 
			
		||||
                    items:
 | 
			
		||||
| 
						 | 
				
			
			@ -366,23 +437,32 @@ spec:
 | 
			
		|||
                    type: array
 | 
			
		||||
                    items:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    default:
 | 
			
		||||
                    - admin
 | 
			
		||||
                  team_admin_role:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "admin"
 | 
			
		||||
                  team_api_role_configuration:
 | 
			
		||||
                    type: object
 | 
			
		||||
                    additionalProperties:
 | 
			
		||||
                      type: string
 | 
			
		||||
                    default:
 | 
			
		||||
                      log_statement: all
 | 
			
		||||
                  teams_api_url:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    defaults: "https://teams.example.com/api/"
 | 
			
		||||
              logging_rest_api:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  api_port:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 8080
 | 
			
		||||
                  cluster_history_entries:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 1000
 | 
			
		||||
                  ring_log_lines:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    default: 100
 | 
			
		||||
              scalyr:  # deprecated
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
| 
						 | 
				
			
			@ -391,60 +471,65 @@ spec:
 | 
			
		|||
                  scalyr_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "1"
 | 
			
		||||
                  scalyr_cpu_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    default: "100m"
 | 
			
		||||
                  scalyr_image:
 | 
			
		||||
                    type: string
 | 
			
		||||
                  scalyr_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "500Mi"
 | 
			
		||||
                  scalyr_memory_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    default: "50Mi"
 | 
			
		||||
                  scalyr_server_url:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    default: "https://upload.eu.scalyr.com"
 | 
			
		||||
              connection_pooler:
 | 
			
		||||
                type: object
 | 
			
		||||
                properties:
 | 
			
		||||
                  connection_pooler_schema:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    #default: "pooler"
 | 
			
		||||
                    default: "pooler"
 | 
			
		||||
                  connection_pooler_user:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    #default: "pooler"
 | 
			
		||||
                    default: "pooler"
 | 
			
		||||
                  connection_pooler_image:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    #default: "registry.opensource.zalan.do/acid/pgbouncer"
 | 
			
		||||
                    default: "registry.opensource.zalan.do/acid/pgbouncer:master-12"
 | 
			
		||||
                  connection_pooler_max_db_connections:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    #default: 60
 | 
			
		||||
                    default: 60
 | 
			
		||||
                  connection_pooler_mode:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    enum:
 | 
			
		||||
                      - "session"
 | 
			
		||||
                      - "transaction"
 | 
			
		||||
                    #default: "transaction"
 | 
			
		||||
                    default: "transaction"
 | 
			
		||||
                  connection_pooler_number_of_instances:
 | 
			
		||||
                    type: integer
 | 
			
		||||
                    minimum: 2
 | 
			
		||||
                    #default: 2
 | 
			
		||||
                    minimum: 1
 | 
			
		||||
                    default: 2
 | 
			
		||||
                  connection_pooler_default_cpu_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    #default: "1"
 | 
			
		||||
                    default: "1"
 | 
			
		||||
                  connection_pooler_default_cpu_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
			
		||||
                    #default: "500m"
 | 
			
		||||
                    default: "500m"
 | 
			
		||||
                  connection_pooler_default_memory_limit:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    #default: "100Mi"
 | 
			
		||||
                    default: "100Mi"
 | 
			
		||||
                  connection_pooler_default_memory_request:
 | 
			
		||||
                    type: string
 | 
			
		||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
			
		||||
                    #default: "100Mi"
 | 
			
		||||
                    default: "100Mi"
 | 
			
		||||
          status:
 | 
			
		||||
            type: object
 | 
			
		||||
            additionalProperties:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,11 +141,11 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
 | 
			
		|||
	result.AdditionalSecretMount = fromCRD.AWSGCP.AdditionalSecretMount
 | 
			
		||||
	result.AdditionalSecretMountPath = util.Coalesce(fromCRD.AWSGCP.AdditionalSecretMountPath, "/meta/credentials")
 | 
			
		||||
	result.EnableEBSGp3Migration = fromCRD.AWSGCP.EnableEBSGp3Migration
 | 
			
		||||
	result.EnableEBSGp3MigrationMaxSize = fromCRD.AWSGCP.EnableEBSGp3MigrationMaxSize
 | 
			
		||||
	result.EnableEBSGp3MigrationMaxSize = util.CoalesceInt64(fromCRD.AWSGCP.EnableEBSGp3MigrationMaxSize, 1000)
 | 
			
		||||
 | 
			
		||||
	// logical backup config
 | 
			
		||||
	result.LogicalBackupSchedule = util.Coalesce(fromCRD.LogicalBackup.Schedule, "30 00 * * *")
 | 
			
		||||
	result.LogicalBackupDockerImage = util.Coalesce(fromCRD.LogicalBackup.DockerImage, "registry.opensource.zalan.do/acid/logical-backup")
 | 
			
		||||
	result.LogicalBackupDockerImage = util.Coalesce(fromCRD.LogicalBackup.DockerImage, "registry.opensource.zalan.do/acid/logical-backup:v.1.6.0")
 | 
			
		||||
	result.LogicalBackupProvider = util.Coalesce(fromCRD.LogicalBackup.BackupProvider, "s3")
 | 
			
		||||
	result.LogicalBackupS3Bucket = fromCRD.LogicalBackup.S3Bucket
 | 
			
		||||
	result.LogicalBackupS3Region = fromCRD.LogicalBackup.S3Region
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ type Scalyr struct {
 | 
			
		|||
// LogicalBackup defines configuration for logical backup
 | 
			
		||||
type LogicalBackup struct {
 | 
			
		||||
	LogicalBackupSchedule                     string `name:"logical_backup_schedule" default:"30 00 * * *"`
 | 
			
		||||
	LogicalBackupDockerImage                  string `name:"logical_backup_docker_image" default:"registry.opensource.zalan.do/acid/logical-backup"`
 | 
			
		||||
	LogicalBackupDockerImage                  string `name:"logical_backup_docker_image" default:"registry.opensource.zalan.do/acid/logical-backup:v.1.6.0"`
 | 
			
		||||
	LogicalBackupProvider                     string `name:"logical_backup_provider" default:"s3"`
 | 
			
		||||
	LogicalBackupS3Bucket                     string `name:"logical_backup_s3_bucket" default:""`
 | 
			
		||||
	LogicalBackupS3Region                     string `name:"logical_backup_s3_region" default:""`
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@ type Config struct {
 | 
			
		|||
	EnableAdminRoleForUsers                bool              `name:"enable_admin_role_for_users" default:"true"`
 | 
			
		||||
	EnablePostgresTeamCRD                  bool              `name:"enable_postgres_team_crd" default:"false"`
 | 
			
		||||
	EnablePostgresTeamCRDSuperusers        bool              `name:"enable_postgres_team_crd_superusers" default:"false"`
 | 
			
		||||
	EnableMasterLoadBalancer               bool              `name:"enable_master_load_balancer" default:"true"`
 | 
			
		||||
	EnableMasterLoadBalancer               bool              `name:"enable_master_load_balancer" default:"false"`
 | 
			
		||||
	EnableReplicaLoadBalancer              bool              `name:"enable_replica_load_balancer" default:"false"`
 | 
			
		||||
	CustomServiceAnnotations               map[string]string `name:"custom_service_annotations"`
 | 
			
		||||
	CustomPodAnnotations                   map[string]string `name:"custom_pod_annotations"`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -271,6 +271,14 @@ func CoalesceUInt32(val, defaultVal uint32) uint32 {
 | 
			
		|||
	return val
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CoalesceInt64 works like coalesce but for int64
 | 
			
		||||
func CoalesceInt64(val, defaultVal int64) int64 {
 | 
			
		||||
	if val == 0 {
 | 
			
		||||
		return defaultVal
 | 
			
		||||
	}
 | 
			
		||||
	return val
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CoalesceBool works like coalesce but for *bool
 | 
			
		||||
func CoalesceBool(val, defaultVal *bool) *bool {
 | 
			
		||||
	if val == nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue