Merge branch 'master' into gh-pages
This commit is contained in:
		
						commit
						0cc2559b8e
					
				| 
						 | 
					@ -22,7 +22,7 @@ jobs:
 | 
				
			||||||
    - name: Run unit tests
 | 
					    - name: Run unit tests
 | 
				
			||||||
      run: go test -race -covermode atomic -coverprofile=coverage.out ./...
 | 
					      run: go test -race -covermode atomic -coverprofile=coverage.out ./...
 | 
				
			||||||
    - name: Convert coverage to lcov
 | 
					    - name: Convert coverage to lcov
 | 
				
			||||||
      uses: jandelgado/gcov2lcov-action@v1.0.5
 | 
					      uses: jandelgado/gcov2lcov-action@v1.0.8
 | 
				
			||||||
    - name: Coveralls
 | 
					    - name: Coveralls
 | 
				
			||||||
      uses: coverallsapp/github-action@master
 | 
					      uses: coverallsapp/github-action@master
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2
									
								
								LICENSE
								
								
								
								
							
							
						
						
									
										2
									
								
								LICENSE
								
								
								
								
							| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
The MIT License (MIT)
 | 
					The MIT License (MIT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Copyright (c) 2020 Zalando SE
 | 
					Copyright (c) 2021 Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,32 +65,45 @@ spec:
 | 
				
			||||||
            properties:
 | 
					            properties:
 | 
				
			||||||
              docker_image:
 | 
					              docker_image:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p2"
 | 
				
			||||||
              enable_crd_validation:
 | 
					              enable_crd_validation:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: true
 | 
				
			||||||
              enable_lazy_spilo_upgrade:
 | 
					              enable_lazy_spilo_upgrade:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              enable_pgversion_env_var:
 | 
					              enable_pgversion_env_var:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: true
 | 
				
			||||||
              enable_shm_volume:
 | 
					              enable_shm_volume:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: true
 | 
				
			||||||
              enable_spilo_wal_path_compat:
 | 
					              enable_spilo_wal_path_compat:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              etcd_host:
 | 
					              etcd_host:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: ""
 | 
				
			||||||
              kubernetes_use_configmaps:
 | 
					              kubernetes_use_configmaps:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              max_instances:
 | 
					              max_instances:
 | 
				
			||||||
                type: integer
 | 
					                type: integer
 | 
				
			||||||
                minimum: -1  # -1 = disabled
 | 
					                minimum: -1  # -1 = disabled
 | 
				
			||||||
 | 
					                default: -1
 | 
				
			||||||
              min_instances:
 | 
					              min_instances:
 | 
				
			||||||
                type: integer
 | 
					                type: integer
 | 
				
			||||||
                minimum: -1  # -1 = disabled
 | 
					                minimum: -1  # -1 = disabled
 | 
				
			||||||
 | 
					                default: -1
 | 
				
			||||||
              resync_period:
 | 
					              resync_period:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: "30m"
 | 
				
			||||||
              repair_period:
 | 
					              repair_period:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: "5m"
 | 
				
			||||||
              set_memory_request_to_limit:
 | 
					              set_memory_request_to_limit:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              sidecar_docker_images:
 | 
					              sidecar_docker_images:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                additionalProperties:
 | 
					                additionalProperties:
 | 
				
			||||||
| 
						 | 
					@ -104,24 +117,31 @@ spec:
 | 
				
			||||||
              workers:
 | 
					              workers:
 | 
				
			||||||
                type: integer
 | 
					                type: integer
 | 
				
			||||||
                minimum: 1
 | 
					                minimum: 1
 | 
				
			||||||
 | 
					                default: 8
 | 
				
			||||||
              users:
 | 
					              users:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  replication_username:
 | 
					                  replication_username:
 | 
				
			||||||
                     type: string
 | 
					                     type: string
 | 
				
			||||||
 | 
					                     default: standby
 | 
				
			||||||
                  super_username:
 | 
					                  super_username:
 | 
				
			||||||
                     type: string
 | 
					                     type: string
 | 
				
			||||||
 | 
					                     default: postgres
 | 
				
			||||||
              kubernetes:
 | 
					              kubernetes:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  cluster_domain:
 | 
					                  cluster_domain:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "cluster.local"
 | 
				
			||||||
                  cluster_labels:
 | 
					                  cluster_labels:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                      application: spilo
 | 
				
			||||||
                  cluster_name_label:
 | 
					                  cluster_name_label:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "cluster-name"
 | 
				
			||||||
                  custom_pod_annotations:
 | 
					                  custom_pod_annotations:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
| 
						 | 
					@ -136,12 +156,16 @@ spec:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  enable_init_containers:
 | 
					                  enable_init_containers:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_pod_antiaffinity:
 | 
					                  enable_pod_antiaffinity:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_pod_disruption_budget:
 | 
					                  enable_pod_disruption_budget:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_sidecars:
 | 
					                  enable_sidecars:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  infrastructure_roles_secret_name:
 | 
					                  infrastructure_roles_secret_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  infrastructure_roles_secrets:
 | 
					                  infrastructure_roles_secrets:
 | 
				
			||||||
| 
						 | 
					@ -180,16 +204,20 @@ spec:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  master_pod_move_timeout:
 | 
					                  master_pod_move_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "20m"
 | 
				
			||||||
                  node_readiness_label:
 | 
					                  node_readiness_label:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  oauth_token_secret_name:
 | 
					                  oauth_token_secret_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "postgresql-operator"
 | 
				
			||||||
                  pdb_name_format:
 | 
					                  pdb_name_format:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "postgres-{cluster}-pdb"
 | 
				
			||||||
                  pod_antiaffinity_topology_key:
 | 
					                  pod_antiaffinity_topology_key:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "kubernetes.io/hostname"
 | 
				
			||||||
                  pod_environment_configmap:
 | 
					                  pod_environment_configmap:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  pod_environment_secret:
 | 
					                  pod_environment_secret:
 | 
				
			||||||
| 
						 | 
					@ -199,20 +227,27 @@ spec:
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "ordered_ready"
 | 
					                      - "ordered_ready"
 | 
				
			||||||
                      - "parallel"
 | 
					                      - "parallel"
 | 
				
			||||||
 | 
					                    default: "ordered_ready"
 | 
				
			||||||
                  pod_priority_class_name:
 | 
					                  pod_priority_class_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  pod_role_label:
 | 
					                  pod_role_label:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "spilo-role"
 | 
				
			||||||
                  pod_service_account_definition:
 | 
					                  pod_service_account_definition:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: ""
 | 
				
			||||||
                  pod_service_account_name:
 | 
					                  pod_service_account_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "postgres-pod"
 | 
				
			||||||
                  pod_service_account_role_binding_definition:
 | 
					                  pod_service_account_role_binding_definition:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: ""
 | 
				
			||||||
                  pod_terminate_grace_period:
 | 
					                  pod_terminate_grace_period:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "5m"
 | 
				
			||||||
                  secret_name_template:
 | 
					                  secret_name_template:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}"
 | 
				
			||||||
                  spilo_runasuser:
 | 
					                  spilo_runasuser:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                  spilo_runasgroup:
 | 
					                  spilo_runasgroup:
 | 
				
			||||||
| 
						 | 
					@ -221,12 +256,14 @@ spec:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                  spilo_privileged:
 | 
					                  spilo_privileged:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  storage_resize_mode:
 | 
					                  storage_resize_mode:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "ebs"
 | 
					                      - "ebs"
 | 
				
			||||||
                      - "pvc"
 | 
					                      - "pvc"
 | 
				
			||||||
                      - "off"
 | 
					                      - "off"
 | 
				
			||||||
 | 
					                    default: "pvc"
 | 
				
			||||||
                  toleration:
 | 
					                  toleration:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
| 
						 | 
					@ -239,36 +276,48 @@ spec:
 | 
				
			||||||
                  default_cpu_limit:
 | 
					                  default_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "1"
 | 
				
			||||||
                  default_cpu_request:
 | 
					                  default_cpu_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "100m"
 | 
				
			||||||
                  default_memory_limit:
 | 
					                  default_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "500Mi"
 | 
				
			||||||
                  default_memory_request:
 | 
					                  default_memory_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "100Mi"
 | 
				
			||||||
                  min_cpu_limit:
 | 
					                  min_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "250m"
 | 
				
			||||||
                  min_memory_limit:
 | 
					                  min_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "250Mi"
 | 
				
			||||||
              timeouts:
 | 
					              timeouts:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  pod_label_wait_timeout:
 | 
					                  pod_label_wait_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "10m"
 | 
				
			||||||
                  pod_deletion_wait_timeout:
 | 
					                  pod_deletion_wait_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "10m"
 | 
				
			||||||
                  ready_wait_interval:
 | 
					                  ready_wait_interval:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "4s"
 | 
				
			||||||
                  ready_wait_timeout:
 | 
					                  ready_wait_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "30s"
 | 
				
			||||||
                  resource_check_interval:
 | 
					                  resource_check_interval:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "3s"
 | 
				
			||||||
                  resource_check_timeout:
 | 
					                  resource_check_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "10m"
 | 
				
			||||||
              load_balancer:
 | 
					              load_balancer:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
| 
						 | 
					@ -278,19 +327,25 @@ spec:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  db_hosted_zone:
 | 
					                  db_hosted_zone:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "db.example.com"
 | 
				
			||||||
                  enable_master_load_balancer:
 | 
					                  enable_master_load_balancer:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_replica_load_balancer:
 | 
					                  enable_replica_load_balancer:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  external_traffic_policy:
 | 
					                  external_traffic_policy:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "Cluster"
 | 
					                      - "Cluster"
 | 
				
			||||||
                      - "Local"
 | 
					                      - "Local"
 | 
				
			||||||
 | 
					                    default: "Cluster"
 | 
				
			||||||
                  master_dns_name_format:
 | 
					                  master_dns_name_format:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "{cluster}.{team}.{hostedzone}"
 | 
				
			||||||
                  replica_dns_name_format:
 | 
					                  replica_dns_name_format:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "{cluster}-repl.{team}.{hostedzone}"
 | 
				
			||||||
              aws_or_gcp:
 | 
					              aws_or_gcp:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
| 
						 | 
					@ -298,12 +353,16 @@ spec:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  additional_secret_mount_path:
 | 
					                  additional_secret_mount_path:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "/meta/credentials"
 | 
				
			||||||
                  aws_region:
 | 
					                  aws_region:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "eu-central-1"
 | 
				
			||||||
                  enable_ebs_gp3_migration:
 | 
					                  enable_ebs_gp3_migration:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_ebs_gp3_migration_max_size:
 | 
					                  enable_ebs_gp3_migration_max_size:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 1000
 | 
				
			||||||
                  gcp_credentials:
 | 
					                  gcp_credentials:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  kube_iam_role:
 | 
					                  kube_iam_role:
 | 
				
			||||||
| 
						 | 
					@ -319,10 +378,15 @@ spec:
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  logical_backup_docker_image:
 | 
					                  logical_backup_docker_image:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
				
			||||||
                  logical_backup_google_application_credentials:
 | 
					                  logical_backup_google_application_credentials:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                  logical_backup_job_prefix:
 | 
				
			||||||
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "logical-backup-"
 | 
				
			||||||
                  logical_backup_provider:
 | 
					                  logical_backup_provider:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "s3"
 | 
				
			||||||
                  logical_backup_s3_access_key_id:
 | 
					                  logical_backup_s3_access_key_id:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  logical_backup_s3_bucket:
 | 
					                  logical_backup_s3_bucket:
 | 
				
			||||||
| 
						 | 
					@ -338,30 +402,40 @@ spec:
 | 
				
			||||||
                  logical_backup_schedule:
 | 
					                  logical_backup_schedule:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
					                    pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
				
			||||||
 | 
					                    default: "30 00 * * *"
 | 
				
			||||||
              debug:
 | 
					              debug:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  debug_logging:
 | 
					                  debug_logging:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_database_access:
 | 
					                  enable_database_access:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
              teams_api:
 | 
					              teams_api:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  enable_admin_role_for_users:
 | 
					                  enable_admin_role_for_users:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_postgres_team_crd:
 | 
					                  enable_postgres_team_crd:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_postgres_team_crd_superusers:
 | 
					                  enable_postgres_team_crd_superusers:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_team_superuser:
 | 
					                  enable_team_superuser:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_teams_api:
 | 
					                  enable_teams_api:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  pam_configuration:
 | 
					                  pam_configuration:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees"
 | 
				
			||||||
                  pam_role_name:
 | 
					                  pam_role_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "zalandos"
 | 
				
			||||||
                  postgres_superuser_teams:
 | 
					                  postgres_superuser_teams:
 | 
				
			||||||
                    type: array
 | 
					                    type: array
 | 
				
			||||||
                    items:
 | 
					                    items:
 | 
				
			||||||
| 
						 | 
					@ -370,23 +444,32 @@ spec:
 | 
				
			||||||
                    type: array
 | 
					                    type: array
 | 
				
			||||||
                    items:
 | 
					                    items:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                    - admin
 | 
				
			||||||
                  team_admin_role:
 | 
					                  team_admin_role:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "admin"
 | 
				
			||||||
                  team_api_role_configuration:
 | 
					                  team_api_role_configuration:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                      log_statement: all
 | 
				
			||||||
                  teams_api_url:
 | 
					                  teams_api_url:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    defaults: "https://teams.example.com/api/"
 | 
				
			||||||
              logging_rest_api:
 | 
					              logging_rest_api:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  api_port:
 | 
					                  api_port:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 8080
 | 
				
			||||||
                  cluster_history_entries:
 | 
					                  cluster_history_entries:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 1000
 | 
				
			||||||
                  ring_log_lines:
 | 
					                  ring_log_lines:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 100
 | 
				
			||||||
              scalyr:  # deprecated
 | 
					              scalyr:  # deprecated
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
| 
						 | 
					@ -395,60 +478,65 @@ spec:
 | 
				
			||||||
                  scalyr_cpu_limit:
 | 
					                  scalyr_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "1"
 | 
				
			||||||
                  scalyr_cpu_request:
 | 
					                  scalyr_cpu_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "100m"
 | 
				
			||||||
                  scalyr_image:
 | 
					                  scalyr_image:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  scalyr_memory_limit:
 | 
					                  scalyr_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "500Mi"
 | 
				
			||||||
                  scalyr_memory_request:
 | 
					                  scalyr_memory_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "50Mi"
 | 
				
			||||||
                  scalyr_server_url:
 | 
					                  scalyr_server_url:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "https://upload.eu.scalyr.com"
 | 
				
			||||||
              connection_pooler:
 | 
					              connection_pooler:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  connection_pooler_schema:
 | 
					                  connection_pooler_schema:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    #default: "pooler"
 | 
					                    default: "pooler"
 | 
				
			||||||
                  connection_pooler_user:
 | 
					                  connection_pooler_user:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    #default: "pooler"
 | 
					                    default: "pooler"
 | 
				
			||||||
                  connection_pooler_image:
 | 
					                  connection_pooler_image:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    #default: "registry.opensource.zalan.do/acid/pgbouncer"
 | 
					                    default: "registry.opensource.zalan.do/acid/pgbouncer:master-12"
 | 
				
			||||||
                  connection_pooler_max_db_connections:
 | 
					                  connection_pooler_max_db_connections:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                    #default: 60
 | 
					                    default: 60
 | 
				
			||||||
                  connection_pooler_mode:
 | 
					                  connection_pooler_mode:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "session"
 | 
					                      - "session"
 | 
				
			||||||
                      - "transaction"
 | 
					                      - "transaction"
 | 
				
			||||||
                    #default: "transaction"
 | 
					                    default: "transaction"
 | 
				
			||||||
                  connection_pooler_number_of_instances:
 | 
					                  connection_pooler_number_of_instances:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                    minimum: 2
 | 
					                    minimum: 1
 | 
				
			||||||
                    #default: 2
 | 
					                    default: 2
 | 
				
			||||||
                  connection_pooler_default_cpu_limit:
 | 
					                  connection_pooler_default_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
                    #default: "1"
 | 
					                    default: "1"
 | 
				
			||||||
                  connection_pooler_default_cpu_request:
 | 
					                  connection_pooler_default_cpu_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
                    #default: "500m"
 | 
					                    default: "500m"
 | 
				
			||||||
                  connection_pooler_default_memory_limit:
 | 
					                  connection_pooler_default_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
                    #default: "100Mi"
 | 
					                    default: "100Mi"
 | 
				
			||||||
                  connection_pooler_default_memory_request:
 | 
					                  connection_pooler_default_memory_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
                    #default: "100Mi"
 | 
					                    default: "100Mi"
 | 
				
			||||||
          status:
 | 
					          status:
 | 
				
			||||||
            type: object
 | 
					            type: object
 | 
				
			||||||
            additionalProperties:
 | 
					            additionalProperties:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -249,6 +249,13 @@ configAwsOrGcp:
 | 
				
			||||||
configLogicalBackup:
 | 
					configLogicalBackup:
 | 
				
			||||||
  # image for pods of the logical backup job (example runs pg_dumpall)
 | 
					  # image for pods of the logical backup job (example runs pg_dumpall)
 | 
				
			||||||
  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
					  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
				
			||||||
 | 
					  # path of google cloud service account json file
 | 
				
			||||||
 | 
					  # logical_backup_google_application_credentials: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # prefix for the backup job name
 | 
				
			||||||
 | 
					  logical_backup_job_prefix: "logical-backup-"
 | 
				
			||||||
 | 
					  # storage provider - either "s3" or "gcs"
 | 
				
			||||||
 | 
					  logical_backup_provider: "s3"
 | 
				
			||||||
  # S3 Access Key ID
 | 
					  # S3 Access Key ID
 | 
				
			||||||
  logical_backup_s3_access_key_id: ""
 | 
					  logical_backup_s3_access_key_id: ""
 | 
				
			||||||
  # S3 bucket to store backup results
 | 
					  # S3 bucket to store backup results
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -239,15 +239,22 @@ configAwsOrGcp:
 | 
				
			||||||
# configure K8s cron job managed by the operator
 | 
					# configure K8s cron job managed by the operator
 | 
				
			||||||
configLogicalBackup:
 | 
					configLogicalBackup:
 | 
				
			||||||
  # image for pods of the logical backup job (example runs pg_dumpall)
 | 
					  # image for pods of the logical backup job (example runs pg_dumpall)
 | 
				
			||||||
  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v.1.6.0"
 | 
					  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
				
			||||||
 | 
					  # path of google cloud service account json file
 | 
				
			||||||
 | 
					  # logical_backup_google_application_credentials: ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # prefix for the backup job name
 | 
				
			||||||
 | 
					  logical_backup_job_prefix: "logical-backup-"
 | 
				
			||||||
 | 
					  # storage provider - either "s3" or "gcs"
 | 
				
			||||||
 | 
					  logical_backup_provider: "s3"
 | 
				
			||||||
  # S3 Access Key ID
 | 
					  # S3 Access Key ID
 | 
				
			||||||
  logical_backup_s3_access_key_id: ""
 | 
					  logical_backup_s3_access_key_id: ""
 | 
				
			||||||
  # S3 bucket to store backup results
 | 
					  # S3 bucket to store backup results
 | 
				
			||||||
  logical_backup_s3_bucket: "my-bucket-url"
 | 
					  logical_backup_s3_bucket: "my-bucket-url"
 | 
				
			||||||
  # S3 region of bucket
 | 
					 | 
				
			||||||
  logical_backup_s3_region: ""
 | 
					 | 
				
			||||||
  # S3 endpoint url when not using AWS
 | 
					  # S3 endpoint url when not using AWS
 | 
				
			||||||
  logical_backup_s3_endpoint: ""
 | 
					  logical_backup_s3_endpoint: ""
 | 
				
			||||||
 | 
					  # S3 region of bucket
 | 
				
			||||||
 | 
					  logical_backup_s3_region: ""
 | 
				
			||||||
  # S3 Secret Access Key
 | 
					  # S3 Secret Access Key
 | 
				
			||||||
  logical_backup_s3_secret_access_key: ""
 | 
					  logical_backup_s3_secret_access_key: ""
 | 
				
			||||||
  # S3 server side encryption
 | 
					  # S3 server side encryption
 | 
				
			||||||
| 
						 | 
					@ -255,6 +262,7 @@ configLogicalBackup:
 | 
				
			||||||
  # backup schedule in the cron format
 | 
					  # backup schedule in the cron format
 | 
				
			||||||
  logical_backup_schedule: "30 00 * * *"
 | 
					  logical_backup_schedule: "30 00 * * *"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# automate creation of human users with teams API service
 | 
					# automate creation of human users with teams API service
 | 
				
			||||||
configTeamsApi:
 | 
					configTeamsApi:
 | 
				
			||||||
  # team_admin_role will have the rights to grant roles coming from PG manifests
 | 
					  # team_admin_role will have the rights to grant roles coming from PG manifests
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
FROM alpine
 | 
					FROM alpine
 | 
				
			||||||
MAINTAINER Team ACID @ Zalando <team-acid@zalando.de>
 | 
					LABEL maintainer="Team ACID @ Zalando <team-acid@zalando.de>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# We need root certificates to deal with teams api over https
 | 
					# We need root certificates to deal with teams api over https
 | 
				
			||||||
RUN apk --no-cache add ca-certificates go git musl-dev
 | 
					RUN apk --no-cache add ca-certificates go git musl-dev
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
FROM alpine
 | 
					FROM alpine
 | 
				
			||||||
MAINTAINER Team ACID @ Zalando <team-acid@zalando.de>
 | 
					LABEL maintainer="Team ACID @ Zalando <team-acid@zalando.de>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# We need root certificates to deal with teams api over https
 | 
					# We need root certificates to deal with teams api over https
 | 
				
			||||||
RUN apk --no-cache add curl
 | 
					RUN apk --no-cache add curl
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,10 +30,10 @@ To trigger the upgrade, increase the version in the cluster manifest. After
 | 
				
			||||||
Pods are rotated `configure_spilo` will notice the version mismatch and start
 | 
					Pods are rotated `configure_spilo` will notice the version mismatch and start
 | 
				
			||||||
the old version again. You can then exec into the Postgres container of the
 | 
					the old version again. You can then exec into the Postgres container of the
 | 
				
			||||||
master instance and call `python3 /scripts/inplace_upgrade.py N` where `N`
 | 
					master instance and call `python3 /scripts/inplace_upgrade.py N` where `N`
 | 
				
			||||||
is the number of members of your cluster (see `number_of_instances`). The
 | 
					is the number of members of your cluster (see [`numberOfInstances`](https://github.com/zalando/postgres-operator/blob/50cb5898ea715a1db7e634de928b2d16dc8cd969/manifests/minimal-postgres-manifest.yaml#L10)).
 | 
				
			||||||
upgrade is usually fast, well under one minute for most DBs. Note, that changes
 | 
					The upgrade is usually fast, well under one minute for most DBs. Note, that
 | 
				
			||||||
become irrevertible once `pg_upgrade` is called. To understand the upgrade
 | 
					changes become irrevertible once `pg_upgrade` is called. To understand the
 | 
				
			||||||
procedure, refer to the [corresponding PR in Spilo](https://github.com/zalando/spilo/pull/488).
 | 
					upgrade procedure, refer to the [corresponding PR in Spilo](https://github.com/zalando/spilo/pull/488).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## CRD Validation
 | 
					## CRD Validation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,7 +126,7 @@ Those are top-level keys, containing both leaf keys and groups.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **workers**
 | 
					* **workers**
 | 
				
			||||||
  number of working routines the operator spawns to process requests to
 | 
					  number of working routines the operator spawns to process requests to
 | 
				
			||||||
  create/update/delete/sync clusters concurrently. The default is `4`.
 | 
					  create/update/delete/sync clusters concurrently. The default is `8`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **max_instances**
 | 
					* **max_instances**
 | 
				
			||||||
  operator will cap the number of instances in any managed Postgres cluster up
 | 
					  operator will cap the number of instances in any managed Postgres cluster up
 | 
				
			||||||
| 
						 | 
					@ -551,44 +551,47 @@ These parameters configure a K8s cron job managed by the operator to produce
 | 
				
			||||||
Postgres logical backups. In the CRD-based configuration those parameters are
 | 
					Postgres logical backups. In the CRD-based configuration those parameters are
 | 
				
			||||||
grouped under the `logical_backup` key.
 | 
					grouped under the `logical_backup` key.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_schedule**
 | 
					 | 
				
			||||||
  Backup schedule in the cron format. Please take the
 | 
					 | 
				
			||||||
  [reference schedule format](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#schedule)
 | 
					 | 
				
			||||||
  into account. Default: "30 00 \* \* \*"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* **logical_backup_docker_image**
 | 
					* **logical_backup_docker_image**
 | 
				
			||||||
  An image for pods of the logical backup job. The [example image](../../docker/logical-backup/Dockerfile)
 | 
					  An image for pods of the logical backup job. The [example image](../../docker/logical-backup/Dockerfile)
 | 
				
			||||||
  runs `pg_dumpall` on a replica if possible and uploads compressed results to
 | 
					  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`.
 | 
					  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
 | 
					  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:v1.6.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* **logical_backup_google_application_credentials**
 | 
				
			||||||
 | 
					  Specifies the path of the google cloud service account json file. Default is empty.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* **logical_backup_job_prefix**
 | 
				
			||||||
 | 
					  The prefix to be prepended to the name of a k8s CronJob running the backups. Beware the prefix counts towards the name length restrictions imposed by k8s. Empty string is a legitimate value. Operator does not do the actual renaming: It simply creates the job with the new prefix. You will have to delete the old cron job manually. Default: "logical-backup-".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_provider**
 | 
					* **logical_backup_provider**
 | 
				
			||||||
  Specifies the storage provider to which the backup should be uploaded (`s3` or `gcs`).
 | 
					  Specifies the storage provider to which the backup should be uploaded (`s3` or `gcs`).
 | 
				
			||||||
  Default: "s3"
 | 
					  Default: "s3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* **logical_backup_s3_access_key_id**
 | 
				
			||||||
 | 
					  When set, value will be in AWS_ACCESS_KEY_ID env variable. The Default is empty.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_s3_bucket**
 | 
					* **logical_backup_s3_bucket**
 | 
				
			||||||
  S3 bucket to store backup results. The bucket has to be present and
 | 
					  S3 bucket to store backup results. The bucket has to be present and
 | 
				
			||||||
  accessible by Postgres pods. Default: empty.
 | 
					  accessible by Postgres pods. Default: empty.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* **logical_backup_s3_endpoint**
 | 
				
			||||||
 | 
					  When using non-AWS S3 storage, endpoint can be set as a ENV variable. The default is empty.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_s3_region**
 | 
					* **logical_backup_s3_region**
 | 
				
			||||||
  Specifies the region of the bucket which is required with some non-AWS S3 storage services. The default is empty.
 | 
					  Specifies the region of the bucket which is required with some non-AWS S3 storage services. The default is empty.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_s3_endpoint**
 | 
					* **logical_backup_s3_secret_access_key**
 | 
				
			||||||
  When using non-AWS S3 storage, endpoint can be set as a ENV variable. The default is empty.
 | 
					  When set, value will be in AWS_SECRET_ACCESS_KEY env variable. The Default is empty.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_s3_sse**
 | 
					* **logical_backup_s3_sse**
 | 
				
			||||||
  Specify server side encryption that S3 storage is using. If empty string
 | 
					  Specify server side encryption that S3 storage is using. If empty string
 | 
				
			||||||
  is specified, no argument will be passed to `aws s3` command. Default: "AES256".
 | 
					  is specified, no argument will be passed to `aws s3` command. Default: "AES256".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* **logical_backup_s3_access_key_id**
 | 
					* **logical_backup_schedule**
 | 
				
			||||||
  When set, value will be in AWS_ACCESS_KEY_ID env variable. The Default is empty.
 | 
					  Backup schedule in the cron format. Please take the
 | 
				
			||||||
 | 
					  [reference schedule format](https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#schedule)
 | 
				
			||||||
* **logical_backup_s3_secret_access_key**
 | 
					  into account. Default: "30 00 \* \* \*"
 | 
				
			||||||
  When set, value will be in AWS_SECRET_ACCESS_KEY env variable. The Default is empty.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
* **logical_backup_google_application_credentials**
 | 
					 | 
				
			||||||
  Specifies the path of the google cloud service account json file. Default is empty.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Debugging the operator
 | 
					## Debugging the operator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,6 +63,9 @@ data:
 | 
				
			||||||
  # kube_iam_role: ""
 | 
					  # kube_iam_role: ""
 | 
				
			||||||
  # log_s3_bucket: ""
 | 
					  # log_s3_bucket: ""
 | 
				
			||||||
  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
					  logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
				
			||||||
 | 
					  # logical_backup_google_application_credentials: ""
 | 
				
			||||||
 | 
					  logical_backup_job_prefix: "logical-backup-"
 | 
				
			||||||
 | 
					  logical_backup_provider: "s3"
 | 
				
			||||||
  # logical_backup_s3_access_key_id: ""
 | 
					  # logical_backup_s3_access_key_id: ""
 | 
				
			||||||
  logical_backup_s3_bucket: "my-bucket-url"
 | 
					  logical_backup_s3_bucket: "my-bucket-url"
 | 
				
			||||||
  # logical_backup_s3_region: ""
 | 
					  # logical_backup_s3_region: ""
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,32 +61,45 @@ spec:
 | 
				
			||||||
            properties:
 | 
					            properties:
 | 
				
			||||||
              docker_image:
 | 
					              docker_image:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p2"
 | 
				
			||||||
              enable_crd_validation:
 | 
					              enable_crd_validation:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: true
 | 
				
			||||||
              enable_lazy_spilo_upgrade:
 | 
					              enable_lazy_spilo_upgrade:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              enable_pgversion_env_var:
 | 
					              enable_pgversion_env_var:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: true
 | 
				
			||||||
              enable_shm_volume:
 | 
					              enable_shm_volume:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: true
 | 
				
			||||||
              enable_spilo_wal_path_compat:
 | 
					              enable_spilo_wal_path_compat:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              etcd_host:
 | 
					              etcd_host:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: ""
 | 
				
			||||||
              kubernetes_use_configmaps:
 | 
					              kubernetes_use_configmaps:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              max_instances:
 | 
					              max_instances:
 | 
				
			||||||
                type: integer
 | 
					                type: integer
 | 
				
			||||||
                minimum: -1  # -1 = disabled
 | 
					                minimum: -1  # -1 = disabled
 | 
				
			||||||
 | 
					                default: -1
 | 
				
			||||||
              min_instances:
 | 
					              min_instances:
 | 
				
			||||||
                type: integer
 | 
					                type: integer
 | 
				
			||||||
                minimum: -1  # -1 = disabled
 | 
					                minimum: -1  # -1 = disabled
 | 
				
			||||||
 | 
					                default: -1
 | 
				
			||||||
              resync_period:
 | 
					              resync_period:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: "30m"
 | 
				
			||||||
              repair_period:
 | 
					              repair_period:
 | 
				
			||||||
                type: string
 | 
					                type: string
 | 
				
			||||||
 | 
					                default: "5m"
 | 
				
			||||||
              set_memory_request_to_limit:
 | 
					              set_memory_request_to_limit:
 | 
				
			||||||
                type: boolean
 | 
					                type: boolean
 | 
				
			||||||
 | 
					                default: false
 | 
				
			||||||
              sidecar_docker_images:
 | 
					              sidecar_docker_images:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                additionalProperties:
 | 
					                additionalProperties:
 | 
				
			||||||
| 
						 | 
					@ -100,24 +113,31 @@ spec:
 | 
				
			||||||
              workers:
 | 
					              workers:
 | 
				
			||||||
                type: integer
 | 
					                type: integer
 | 
				
			||||||
                minimum: 1
 | 
					                minimum: 1
 | 
				
			||||||
 | 
					                default: 8
 | 
				
			||||||
              users:
 | 
					              users:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  replication_username:
 | 
					                  replication_username:
 | 
				
			||||||
                     type: string
 | 
					                     type: string
 | 
				
			||||||
 | 
					                     default: standby
 | 
				
			||||||
                  super_username:
 | 
					                  super_username:
 | 
				
			||||||
                     type: string
 | 
					                     type: string
 | 
				
			||||||
 | 
					                     default: postgres
 | 
				
			||||||
              kubernetes:
 | 
					              kubernetes:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  cluster_domain:
 | 
					                  cluster_domain:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "cluster.local"
 | 
				
			||||||
                  cluster_labels:
 | 
					                  cluster_labels:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                      application: spilo
 | 
				
			||||||
                  cluster_name_label:
 | 
					                  cluster_name_label:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "cluster-name"
 | 
				
			||||||
                  custom_pod_annotations:
 | 
					                  custom_pod_annotations:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
| 
						 | 
					@ -132,12 +152,16 @@ spec:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  enable_init_containers:
 | 
					                  enable_init_containers:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_pod_antiaffinity:
 | 
					                  enable_pod_antiaffinity:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_pod_disruption_budget:
 | 
					                  enable_pod_disruption_budget:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_sidecars:
 | 
					                  enable_sidecars:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  infrastructure_roles_secret_name:
 | 
					                  infrastructure_roles_secret_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  infrastructure_roles_secrets:
 | 
					                  infrastructure_roles_secrets:
 | 
				
			||||||
| 
						 | 
					@ -176,16 +200,20 @@ spec:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  master_pod_move_timeout:
 | 
					                  master_pod_move_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "20m"
 | 
				
			||||||
                  node_readiness_label:
 | 
					                  node_readiness_label:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  oauth_token_secret_name:
 | 
					                  oauth_token_secret_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "postgresql-operator"
 | 
				
			||||||
                  pdb_name_format:
 | 
					                  pdb_name_format:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "postgres-{cluster}-pdb"
 | 
				
			||||||
                  pod_antiaffinity_topology_key:
 | 
					                  pod_antiaffinity_topology_key:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "kubernetes.io/hostname"
 | 
				
			||||||
                  pod_environment_configmap:
 | 
					                  pod_environment_configmap:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  pod_environment_secret:
 | 
					                  pod_environment_secret:
 | 
				
			||||||
| 
						 | 
					@ -195,20 +223,27 @@ spec:
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "ordered_ready"
 | 
					                      - "ordered_ready"
 | 
				
			||||||
                      - "parallel"
 | 
					                      - "parallel"
 | 
				
			||||||
 | 
					                    default: "ordered_ready"
 | 
				
			||||||
                  pod_priority_class_name:
 | 
					                  pod_priority_class_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  pod_role_label:
 | 
					                  pod_role_label:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "spilo-role"
 | 
				
			||||||
                  pod_service_account_definition:
 | 
					                  pod_service_account_definition:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: ""
 | 
				
			||||||
                  pod_service_account_name:
 | 
					                  pod_service_account_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "postgres-pod"
 | 
				
			||||||
                  pod_service_account_role_binding_definition:
 | 
					                  pod_service_account_role_binding_definition:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: ""
 | 
				
			||||||
                  pod_terminate_grace_period:
 | 
					                  pod_terminate_grace_period:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "5m"
 | 
				
			||||||
                  secret_name_template:
 | 
					                  secret_name_template:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}"
 | 
				
			||||||
                  spilo_runasuser:
 | 
					                  spilo_runasuser:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                  spilo_runasgroup:
 | 
					                  spilo_runasgroup:
 | 
				
			||||||
| 
						 | 
					@ -217,12 +252,14 @@ spec:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                  spilo_privileged:
 | 
					                  spilo_privileged:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  storage_resize_mode:
 | 
					                  storage_resize_mode:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "ebs"
 | 
					                      - "ebs"
 | 
				
			||||||
                      - "pvc"
 | 
					                      - "pvc"
 | 
				
			||||||
                      - "off"
 | 
					                      - "off"
 | 
				
			||||||
 | 
					                    default: "pvc"
 | 
				
			||||||
                  toleration:
 | 
					                  toleration:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
| 
						 | 
					@ -235,36 +272,48 @@ spec:
 | 
				
			||||||
                  default_cpu_limit:
 | 
					                  default_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "1"
 | 
				
			||||||
                  default_cpu_request:
 | 
					                  default_cpu_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "100m"
 | 
				
			||||||
                  default_memory_limit:
 | 
					                  default_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "500Mi"
 | 
				
			||||||
                  default_memory_request:
 | 
					                  default_memory_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "100Mi"
 | 
				
			||||||
                  min_cpu_limit:
 | 
					                  min_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "250m"
 | 
				
			||||||
                  min_memory_limit:
 | 
					                  min_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "250Mi"
 | 
				
			||||||
              timeouts:
 | 
					              timeouts:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  pod_label_wait_timeout:
 | 
					                  pod_label_wait_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "10m"
 | 
				
			||||||
                  pod_deletion_wait_timeout:
 | 
					                  pod_deletion_wait_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "10m"
 | 
				
			||||||
                  ready_wait_interval:
 | 
					                  ready_wait_interval:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "4s"
 | 
				
			||||||
                  ready_wait_timeout:
 | 
					                  ready_wait_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "30s"
 | 
				
			||||||
                  resource_check_interval:
 | 
					                  resource_check_interval:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "3s"
 | 
				
			||||||
                  resource_check_timeout:
 | 
					                  resource_check_timeout:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "10m"
 | 
				
			||||||
              load_balancer:
 | 
					              load_balancer:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
| 
						 | 
					@ -274,19 +323,25 @@ spec:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
                  db_hosted_zone:
 | 
					                  db_hosted_zone:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "db.example.com"
 | 
				
			||||||
                  enable_master_load_balancer:
 | 
					                  enable_master_load_balancer:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_replica_load_balancer:
 | 
					                  enable_replica_load_balancer:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  external_traffic_policy:
 | 
					                  external_traffic_policy:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "Cluster"
 | 
					                      - "Cluster"
 | 
				
			||||||
                      - "Local"
 | 
					                      - "Local"
 | 
				
			||||||
 | 
					                    default: "Cluster"
 | 
				
			||||||
                  master_dns_name_format:
 | 
					                  master_dns_name_format:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "{cluster}.{team}.{hostedzone}"
 | 
				
			||||||
                  replica_dns_name_format:
 | 
					                  replica_dns_name_format:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "{cluster}-repl.{team}.{hostedzone}"
 | 
				
			||||||
              aws_or_gcp:
 | 
					              aws_or_gcp:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
| 
						 | 
					@ -294,12 +349,16 @@ spec:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  additional_secret_mount_path:
 | 
					                  additional_secret_mount_path:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "/meta/credentials"
 | 
				
			||||||
                  aws_region:
 | 
					                  aws_region:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "eu-central-1"
 | 
				
			||||||
                  enable_ebs_gp3_migration:
 | 
					                  enable_ebs_gp3_migration:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_ebs_gp3_migration_max_size:
 | 
					                  enable_ebs_gp3_migration_max_size:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 1000
 | 
				
			||||||
                  gcp_credentials:
 | 
					                  gcp_credentials:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  kube_iam_role:
 | 
					                  kube_iam_role:
 | 
				
			||||||
| 
						 | 
					@ -315,10 +374,15 @@ spec:
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  logical_backup_docker_image:
 | 
					                  logical_backup_docker_image:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
				
			||||||
                  logical_backup_google_application_credentials:
 | 
					                  logical_backup_google_application_credentials:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                  logical_backup_job_prefix:
 | 
				
			||||||
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "logical-backup-"
 | 
				
			||||||
                  logical_backup_provider:
 | 
					                  logical_backup_provider:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "s3"
 | 
				
			||||||
                  logical_backup_s3_access_key_id:
 | 
					                  logical_backup_s3_access_key_id:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  logical_backup_s3_bucket:
 | 
					                  logical_backup_s3_bucket:
 | 
				
			||||||
| 
						 | 
					@ -334,30 +398,40 @@ spec:
 | 
				
			||||||
                  logical_backup_schedule:
 | 
					                  logical_backup_schedule:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
					                    pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
				
			||||||
 | 
					                    default: "30 00 * * *"
 | 
				
			||||||
              debug:
 | 
					              debug:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  debug_logging:
 | 
					                  debug_logging:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_database_access:
 | 
					                  enable_database_access:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
              teams_api:
 | 
					              teams_api:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  enable_admin_role_for_users:
 | 
					                  enable_admin_role_for_users:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_postgres_team_crd:
 | 
					                  enable_postgres_team_crd:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  enable_postgres_team_crd_superusers:
 | 
					                  enable_postgres_team_crd_superusers:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_team_superuser:
 | 
					                  enable_team_superuser:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: false
 | 
				
			||||||
                  enable_teams_api:
 | 
					                  enable_teams_api:
 | 
				
			||||||
                    type: boolean
 | 
					                    type: boolean
 | 
				
			||||||
 | 
					                    default: true
 | 
				
			||||||
                  pam_configuration:
 | 
					                  pam_configuration:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees"
 | 
				
			||||||
                  pam_role_name:
 | 
					                  pam_role_name:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "zalandos"
 | 
				
			||||||
                  postgres_superuser_teams:
 | 
					                  postgres_superuser_teams:
 | 
				
			||||||
                    type: array
 | 
					                    type: array
 | 
				
			||||||
                    items:
 | 
					                    items:
 | 
				
			||||||
| 
						 | 
					@ -366,23 +440,32 @@ spec:
 | 
				
			||||||
                    type: array
 | 
					                    type: array
 | 
				
			||||||
                    items:
 | 
					                    items:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                    - admin
 | 
				
			||||||
                  team_admin_role:
 | 
					                  team_admin_role:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "admin"
 | 
				
			||||||
                  team_api_role_configuration:
 | 
					                  team_api_role_configuration:
 | 
				
			||||||
                    type: object
 | 
					                    type: object
 | 
				
			||||||
                    additionalProperties:
 | 
					                    additionalProperties:
 | 
				
			||||||
                      type: string
 | 
					                      type: string
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                      log_statement: all
 | 
				
			||||||
                  teams_api_url:
 | 
					                  teams_api_url:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    defaults: "https://teams.example.com/api/"
 | 
				
			||||||
              logging_rest_api:
 | 
					              logging_rest_api:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  api_port:
 | 
					                  api_port:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 8080
 | 
				
			||||||
                  cluster_history_entries:
 | 
					                  cluster_history_entries:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 1000
 | 
				
			||||||
                  ring_log_lines:
 | 
					                  ring_log_lines:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
 | 
					                    default: 100
 | 
				
			||||||
              scalyr:  # deprecated
 | 
					              scalyr:  # deprecated
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
| 
						 | 
					@ -391,60 +474,65 @@ spec:
 | 
				
			||||||
                  scalyr_cpu_limit:
 | 
					                  scalyr_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "1"
 | 
				
			||||||
                  scalyr_cpu_request:
 | 
					                  scalyr_cpu_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
 | 
					                    default: "100m"
 | 
				
			||||||
                  scalyr_image:
 | 
					                  scalyr_image:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                  scalyr_memory_limit:
 | 
					                  scalyr_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "500Mi"
 | 
				
			||||||
                  scalyr_memory_request:
 | 
					                  scalyr_memory_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
 | 
					                    default: "50Mi"
 | 
				
			||||||
                  scalyr_server_url:
 | 
					                  scalyr_server_url:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
 | 
					                    default: "https://upload.eu.scalyr.com"
 | 
				
			||||||
              connection_pooler:
 | 
					              connection_pooler:
 | 
				
			||||||
                type: object
 | 
					                type: object
 | 
				
			||||||
                properties:
 | 
					                properties:
 | 
				
			||||||
                  connection_pooler_schema:
 | 
					                  connection_pooler_schema:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    #default: "pooler"
 | 
					                    default: "pooler"
 | 
				
			||||||
                  connection_pooler_user:
 | 
					                  connection_pooler_user:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    #default: "pooler"
 | 
					                    default: "pooler"
 | 
				
			||||||
                  connection_pooler_image:
 | 
					                  connection_pooler_image:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    #default: "registry.opensource.zalan.do/acid/pgbouncer"
 | 
					                    default: "registry.opensource.zalan.do/acid/pgbouncer:master-12"
 | 
				
			||||||
                  connection_pooler_max_db_connections:
 | 
					                  connection_pooler_max_db_connections:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                    #default: 60
 | 
					                    default: 60
 | 
				
			||||||
                  connection_pooler_mode:
 | 
					                  connection_pooler_mode:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    enum:
 | 
					                    enum:
 | 
				
			||||||
                      - "session"
 | 
					                      - "session"
 | 
				
			||||||
                      - "transaction"
 | 
					                      - "transaction"
 | 
				
			||||||
                    #default: "transaction"
 | 
					                    default: "transaction"
 | 
				
			||||||
                  connection_pooler_number_of_instances:
 | 
					                  connection_pooler_number_of_instances:
 | 
				
			||||||
                    type: integer
 | 
					                    type: integer
 | 
				
			||||||
                    minimum: 2
 | 
					                    minimum: 1
 | 
				
			||||||
                    #default: 2
 | 
					                    default: 2
 | 
				
			||||||
                  connection_pooler_default_cpu_limit:
 | 
					                  connection_pooler_default_cpu_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
                    #default: "1"
 | 
					                    default: "1"
 | 
				
			||||||
                  connection_pooler_default_cpu_request:
 | 
					                  connection_pooler_default_cpu_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
					                    pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
				
			||||||
                    #default: "500m"
 | 
					                    default: "500m"
 | 
				
			||||||
                  connection_pooler_default_memory_limit:
 | 
					                  connection_pooler_default_memory_limit:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
                    #default: "100Mi"
 | 
					                    default: "100Mi"
 | 
				
			||||||
                  connection_pooler_default_memory_request:
 | 
					                  connection_pooler_default_memory_request:
 | 
				
			||||||
                    type: string
 | 
					                    type: string
 | 
				
			||||||
                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
					                    pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
				
			||||||
                    #default: "100Mi"
 | 
					                    default: "100Mi"
 | 
				
			||||||
          status:
 | 
					          status:
 | 
				
			||||||
            type: object
 | 
					            type: object
 | 
				
			||||||
            additionalProperties:
 | 
					            additionalProperties:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,7 +115,10 @@ configuration:
 | 
				
			||||||
    # wal_gs_bucket: ""
 | 
					    # wal_gs_bucket: ""
 | 
				
			||||||
    # wal_s3_bucket: ""
 | 
					    # wal_s3_bucket: ""
 | 
				
			||||||
  logical_backup:
 | 
					  logical_backup:
 | 
				
			||||||
    logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v.1.6.0"
 | 
					    logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.0"
 | 
				
			||||||
 | 
					    # logical_backup_google_application_credentials: ""
 | 
				
			||||||
 | 
					    logical_backup_job_prefix: "logical-backup-"
 | 
				
			||||||
 | 
					    logical_backup_provider: "s3"
 | 
				
			||||||
    # logical_backup_s3_access_key_id: ""
 | 
					    # logical_backup_s3_access_key_id: ""
 | 
				
			||||||
    logical_backup_s3_bucket: "my-bucket-url"
 | 
					    logical_backup_s3_bucket: "my-bucket-url"
 | 
				
			||||||
    # logical_backup_s3_endpoint: ""
 | 
					    # logical_backup_s3_endpoint: ""
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,7 +106,6 @@ var OperatorConfigCRDResourceColumns = []apiextv1.CustomResourceColumnDefinition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var min0 = 0.0
 | 
					var min0 = 0.0
 | 
				
			||||||
var min1 = 1.0
 | 
					var min1 = 1.0
 | 
				
			||||||
var min2 = 2.0
 | 
					 | 
				
			||||||
var minDisable = -1.0
 | 
					var minDisable = -1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PostgresCRDResourceValidation to check applied manifest parameters
 | 
					// PostgresCRDResourceValidation to check applied manifest parameters
 | 
				
			||||||
| 
						 | 
					@ -232,7 +231,7 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
 | 
				
			||||||
							},
 | 
												},
 | 
				
			||||||
							"numberOfInstances": {
 | 
												"numberOfInstances": {
 | 
				
			||||||
								Type:    "integer",
 | 
													Type:    "integer",
 | 
				
			||||||
								Minimum: &min2,
 | 
													Minimum: &min1,
 | 
				
			||||||
							},
 | 
												},
 | 
				
			||||||
							"resources": {
 | 
												"resources": {
 | 
				
			||||||
								Type:     "object",
 | 
													Type:     "object",
 | 
				
			||||||
| 
						 | 
					@ -1294,6 +1293,9 @@ var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{
 | 
				
			||||||
							"logical_backup_google_application_credentials": {
 | 
												"logical_backup_google_application_credentials": {
 | 
				
			||||||
								Type: "string",
 | 
													Type: "string",
 | 
				
			||||||
							},
 | 
												},
 | 
				
			||||||
 | 
												"logical_backup_job_prefix": {
 | 
				
			||||||
 | 
													Type: "string",
 | 
				
			||||||
 | 
												},
 | 
				
			||||||
							"logical_backup_provider": {
 | 
												"logical_backup_provider": {
 | 
				
			||||||
								Type: "string",
 | 
													Type: "string",
 | 
				
			||||||
							},
 | 
												},
 | 
				
			||||||
| 
						 | 
					@ -1470,7 +1472,7 @@ var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{
 | 
				
			||||||
							},
 | 
												},
 | 
				
			||||||
							"connection_pooler_number_of_instances": {
 | 
												"connection_pooler_number_of_instances": {
 | 
				
			||||||
								Type:    "integer",
 | 
													Type:    "integer",
 | 
				
			||||||
								Minimum: &min2,
 | 
													Minimum: &min1,
 | 
				
			||||||
							},
 | 
												},
 | 
				
			||||||
							"connection_pooler_schema": {
 | 
												"connection_pooler_schema": {
 | 
				
			||||||
								Type: "string",
 | 
													Type: "string",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -196,6 +196,7 @@ type OperatorLogicalBackupConfiguration struct {
 | 
				
			||||||
	S3SecretAccessKey            string `json:"logical_backup_s3_secret_access_key,omitempty"`
 | 
						S3SecretAccessKey            string `json:"logical_backup_s3_secret_access_key,omitempty"`
 | 
				
			||||||
	S3SSE                        string `json:"logical_backup_s3_sse,omitempty"`
 | 
						S3SSE                        string `json:"logical_backup_s3_sse,omitempty"`
 | 
				
			||||||
	GoogleApplicationCredentials string `json:"logical_backup_google_application_credentials,omitempty"`
 | 
						GoogleApplicationCredentials string `json:"logical_backup_google_application_credentials,omitempty"`
 | 
				
			||||||
 | 
						JobPrefix                    string `json:"logical_backup_job_prefix,omitempty"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// OperatorConfigurationData defines the operation config
 | 
					// OperatorConfigurationData defines the operation config
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
// +build !ignore_autogenerated
 | 
					// +build !ignore_autogenerated
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2079,7 +2079,7 @@ func (c *Cluster) generateLogicalBackupPodEnvVars() []v1.EnvVar {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// getLogicalBackupJobName returns the name; the job itself may not exists
 | 
					// getLogicalBackupJobName returns the name; the job itself may not exists
 | 
				
			||||||
func (c *Cluster) getLogicalBackupJobName() (jobName string) {
 | 
					func (c *Cluster) getLogicalBackupJobName() (jobName string) {
 | 
				
			||||||
	return "logical-backup-" + c.clusterName().Name
 | 
						return c.OpConfig.LogicalBackupJobPrefix + c.clusterName().Name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Return an array of ownerReferences to make an arbitraty object dependent on
 | 
					// Return an array of ownerReferences to make an arbitraty object dependent on
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@ import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"math/rand"
 | 
						"math/rand"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	appsv1 "k8s.io/api/apps/v1"
 | 
						appsv1 "k8s.io/api/apps/v1"
 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
| 
						 | 
					@ -11,6 +12,7 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/zalando/postgres-operator/pkg/spec"
 | 
						"github.com/zalando/postgres-operator/pkg/spec"
 | 
				
			||||||
	"github.com/zalando/postgres-operator/pkg/util"
 | 
						"github.com/zalando/postgres-operator/pkg/util"
 | 
				
			||||||
 | 
						"github.com/zalando/postgres-operator/pkg/util/retryutil"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Cluster) listPods() ([]v1.Pod, error) {
 | 
					func (c *Cluster) listPods() ([]v1.Pod, error) {
 | 
				
			||||||
| 
						 | 
					@ -309,7 +311,23 @@ func (c *Cluster) isSafeToRecreatePods(pods *v1.PodList) bool {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, pod := range pods.Items {
 | 
						for _, pod := range pods.Items {
 | 
				
			||||||
		state, err := c.patroni.GetPatroniMemberState(&pod)
 | 
					
 | 
				
			||||||
 | 
							var state string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							err := retryutil.Retry(1*time.Second, 5*time.Second,
 | 
				
			||||||
 | 
								func() (bool, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									var err error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									state, err = c.patroni.GetPatroniMemberState(&pod)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										return false, err
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									return true, nil
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			c.logger.Errorf("failed to get Patroni state for pod: %s", err)
 | 
								c.logger.Errorf("failed to get Patroni state for pod: %s", err)
 | 
				
			||||||
			return false
 | 
								return false
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -141,11 +141,11 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
 | 
				
			||||||
	result.AdditionalSecretMount = fromCRD.AWSGCP.AdditionalSecretMount
 | 
						result.AdditionalSecretMount = fromCRD.AWSGCP.AdditionalSecretMount
 | 
				
			||||||
	result.AdditionalSecretMountPath = util.Coalesce(fromCRD.AWSGCP.AdditionalSecretMountPath, "/meta/credentials")
 | 
						result.AdditionalSecretMountPath = util.Coalesce(fromCRD.AWSGCP.AdditionalSecretMountPath, "/meta/credentials")
 | 
				
			||||||
	result.EnableEBSGp3Migration = fromCRD.AWSGCP.EnableEBSGp3Migration
 | 
						result.EnableEBSGp3Migration = fromCRD.AWSGCP.EnableEBSGp3Migration
 | 
				
			||||||
	result.EnableEBSGp3MigrationMaxSize = fromCRD.AWSGCP.EnableEBSGp3MigrationMaxSize
 | 
						result.EnableEBSGp3MigrationMaxSize = util.CoalesceInt64(fromCRD.AWSGCP.EnableEBSGp3MigrationMaxSize, 1000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// logical backup config
 | 
						// logical backup config
 | 
				
			||||||
	result.LogicalBackupSchedule = util.Coalesce(fromCRD.LogicalBackup.Schedule, "30 00 * * *")
 | 
						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:v1.6.0")
 | 
				
			||||||
	result.LogicalBackupProvider = util.Coalesce(fromCRD.LogicalBackup.BackupProvider, "s3")
 | 
						result.LogicalBackupProvider = util.Coalesce(fromCRD.LogicalBackup.BackupProvider, "s3")
 | 
				
			||||||
	result.LogicalBackupS3Bucket = fromCRD.LogicalBackup.S3Bucket
 | 
						result.LogicalBackupS3Bucket = fromCRD.LogicalBackup.S3Bucket
 | 
				
			||||||
	result.LogicalBackupS3Region = fromCRD.LogicalBackup.S3Region
 | 
						result.LogicalBackupS3Region = fromCRD.LogicalBackup.S3Region
 | 
				
			||||||
| 
						 | 
					@ -154,6 +154,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur
 | 
				
			||||||
	result.LogicalBackupS3SecretAccessKey = fromCRD.LogicalBackup.S3SecretAccessKey
 | 
						result.LogicalBackupS3SecretAccessKey = fromCRD.LogicalBackup.S3SecretAccessKey
 | 
				
			||||||
	result.LogicalBackupS3SSE = fromCRD.LogicalBackup.S3SSE
 | 
						result.LogicalBackupS3SSE = fromCRD.LogicalBackup.S3SSE
 | 
				
			||||||
	result.LogicalBackupGoogleApplicationCredentials = fromCRD.LogicalBackup.GoogleApplicationCredentials
 | 
						result.LogicalBackupGoogleApplicationCredentials = fromCRD.LogicalBackup.GoogleApplicationCredentials
 | 
				
			||||||
 | 
						result.LogicalBackupJobPrefix = util.Coalesce(fromCRD.LogicalBackup.JobPrefix, "logical-backup-")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// debug config
 | 
						// debug config
 | 
				
			||||||
	result.DebugLogging = fromCRD.OperatorDebug.DebugLogging
 | 
						result.DebugLogging = fromCRD.OperatorDebug.DebugLogging
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
Copyright 2020 Compose, Zalando SE
 | 
					Copyright 2021 Compose, Zalando SE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,7 +112,7 @@ type Scalyr struct {
 | 
				
			||||||
// LogicalBackup defines configuration for logical backup
 | 
					// LogicalBackup defines configuration for logical backup
 | 
				
			||||||
type LogicalBackup struct {
 | 
					type LogicalBackup struct {
 | 
				
			||||||
	LogicalBackupSchedule                     string `name:"logical_backup_schedule" default:"30 00 * * *"`
 | 
						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:v1.6.0"`
 | 
				
			||||||
	LogicalBackupProvider                     string `name:"logical_backup_provider" default:"s3"`
 | 
						LogicalBackupProvider                     string `name:"logical_backup_provider" default:"s3"`
 | 
				
			||||||
	LogicalBackupS3Bucket                     string `name:"logical_backup_s3_bucket" default:""`
 | 
						LogicalBackupS3Bucket                     string `name:"logical_backup_s3_bucket" default:""`
 | 
				
			||||||
	LogicalBackupS3Region                     string `name:"logical_backup_s3_region" default:""`
 | 
						LogicalBackupS3Region                     string `name:"logical_backup_s3_region" default:""`
 | 
				
			||||||
| 
						 | 
					@ -121,6 +121,7 @@ type LogicalBackup struct {
 | 
				
			||||||
	LogicalBackupS3SecretAccessKey            string `name:"logical_backup_s3_secret_access_key" default:""`
 | 
						LogicalBackupS3SecretAccessKey            string `name:"logical_backup_s3_secret_access_key" default:""`
 | 
				
			||||||
	LogicalBackupS3SSE                        string `name:"logical_backup_s3_sse" default:""`
 | 
						LogicalBackupS3SSE                        string `name:"logical_backup_s3_sse" default:""`
 | 
				
			||||||
	LogicalBackupGoogleApplicationCredentials string `name:"logical_backup_google_application_credentials" default:""`
 | 
						LogicalBackupGoogleApplicationCredentials string `name:"logical_backup_google_application_credentials" default:""`
 | 
				
			||||||
 | 
						LogicalBackupJobPrefix                    string `name:"logical_backup_job_prefix" default:"logical-backup-"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Operator options for connection pooler
 | 
					// Operator options for connection pooler
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -271,6 +271,14 @@ func CoalesceUInt32(val, defaultVal uint32) uint32 {
 | 
				
			||||||
	return val
 | 
						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
 | 
					// CoalesceBool works like coalesce but for *bool
 | 
				
			||||||
func CoalesceBool(val, defaultVal *bool) *bool {
 | 
					func CoalesceBool(val, defaultVal *bool) *bool {
 | 
				
			||||||
	if val == nil {
 | 
						if val == nil {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
FROM alpine:3.6
 | 
					FROM alpine:3.6
 | 
				
			||||||
MAINTAINER team-acid@zalando.de
 | 
					LABEL maintainer="Team ACID @ Zalando <team-acid@zalando.de>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EXPOSE 8081
 | 
					EXPOSE 8081
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ AWS_ENDPOINT = getenv('AWS_ENDPOINT')
 | 
				
			||||||
OPERATOR_CLUSTER_NAME_LABEL = getenv('OPERATOR_CLUSTER_NAME_LABEL', 'cluster-name')
 | 
					OPERATOR_CLUSTER_NAME_LABEL = getenv('OPERATOR_CLUSTER_NAME_LABEL', 'cluster-name')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COMMON_CLUSTER_LABEL = getenv('COMMON_CLUSTER_LABEL', '{"application":"spilo"}')
 | 
					COMMON_CLUSTER_LABEL = getenv('COMMON_CLUSTER_LABEL', '{"application":"spilo"}')
 | 
				
			||||||
COMMON_POOLER_LABEL = getenv('COMMONG_POOLER_LABEL', '{"application":"db-connection-pooler"}')
 | 
					COMMON_POOLER_LABEL = getenv('COMMON_POOLER_LABEL', '{"application":"db-connection-pooler"}')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logger.info("Common Cluster Label: {}".format(COMMON_CLUSTER_LABEL))
 | 
					logger.info("Common Cluster Label: {}".format(COMMON_CLUSTER_LABEL))
 | 
				
			||||||
logger.info("Common Pooler Label: {}".format(COMMON_POOLER_LABEL))
 | 
					logger.info("Common Pooler Label: {}".format(COMMON_POOLER_LABEL))
 | 
				
			||||||
| 
						 | 
					@ -107,6 +107,12 @@ def encode_labels(label_selector):
 | 
				
			||||||
    ])
 | 
					    ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def cluster_labels(spilo_cluster):
 | 
				
			||||||
 | 
					    labels = COMMON_CLUSTER_LABEL
 | 
				
			||||||
 | 
					    labels[OPERATOR_CLUSTER_NAME_LABEL] = spilo_cluster
 | 
				
			||||||
 | 
					    return labels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def kubernetes_url(
 | 
					def kubernetes_url(
 | 
				
			||||||
    resource_type,
 | 
					    resource_type,
 | 
				
			||||||
    namespace='default',
 | 
					    namespace='default',
 | 
				
			||||||
| 
						 | 
					@ -151,7 +157,7 @@ def read_pods(cluster, namespace, spilo_cluster):
 | 
				
			||||||
        cluster=cluster,
 | 
					        cluster=cluster,
 | 
				
			||||||
        resource_type='pods',
 | 
					        resource_type='pods',
 | 
				
			||||||
        namespace=namespace,
 | 
					        namespace=namespace,
 | 
				
			||||||
        label_selector={OPERATOR_CLUSTER_NAME_LABEL: spilo_cluster},
 | 
					        label_selector=cluster_labels(spilo_cluster),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue