563 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			563 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			YAML
		
	
	
	
| apiVersion: apiextensions.k8s.io/v1
 | |
| kind: CustomResourceDefinition
 | |
| metadata:
 | |
|   name: operatorconfigurations.acid.zalan.do
 | |
| spec:
 | |
|   group: acid.zalan.do
 | |
|   names:
 | |
|     kind: OperatorConfiguration
 | |
|     listKind: OperatorConfigurationList
 | |
|     plural: operatorconfigurations
 | |
|     singular: operatorconfiguration
 | |
|     shortNames:
 | |
|       - opconfig
 | |
|     categories:
 | |
|       - all
 | |
|   scope: Namespaced
 | |
|   versions:
 | |
|     - name: v1
 | |
|       served: true
 | |
|       storage: true
 | |
|       subresources:
 | |
|         status: {}
 | |
|       additionalPrinterColumns:
 | |
|         - name: Image
 | |
|           type: string
 | |
|           description: Spilo image to be used for Pods
 | |
|           jsonPath: .configuration.docker_image
 | |
|         - name: Cluster-Label
 | |
|           type: string
 | |
|           description: Label for K8s resources created by operator
 | |
|           jsonPath: .configuration.kubernetes.cluster_name_label
 | |
|         - name: Service-Account
 | |
|           type: string
 | |
|           description: Name of service account to be used
 | |
|           jsonPath: .configuration.kubernetes.pod_service_account_name
 | |
|         - name: Min-Instances
 | |
|           type: integer
 | |
|           description: Minimum number of instances per Postgres cluster
 | |
|           jsonPath: .configuration.min_instances
 | |
|         - name: Age
 | |
|           type: date
 | |
|           jsonPath: .metadata.creationTimestamp
 | |
|       schema:
 | |
|         openAPIV3Schema:
 | |
|           type: object
 | |
|           required:
 | |
|             - kind
 | |
|             - apiVersion
 | |
|             - configuration
 | |
|           properties:
 | |
|             kind:
 | |
|               type: string
 | |
|               enum:
 | |
|                 - OperatorConfiguration
 | |
|             apiVersion:
 | |
|               type: string
 | |
|               enum:
 | |
|                 - acid.zalan.do/v1
 | |
|             configuration:
 | |
|               type: object
 | |
|               properties:
 | |
|                 docker_image:
 | |
|                   type: string
 | |
|                   default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p6"
 | |
|                 enable_crd_validation:
 | |
|                   type: boolean
 | |
|                   default: true
 | |
|                 enable_lazy_spilo_upgrade:
 | |
|                   type: boolean
 | |
|                   default: false
 | |
|                 enable_pgversion_env_var:
 | |
|                   type: boolean
 | |
|                   default: true
 | |
|                 enable_shm_volume:
 | |
|                   type: boolean
 | |
|                   default: true
 | |
|                 enable_spilo_wal_path_compat:
 | |
|                   type: boolean
 | |
|                   default: false
 | |
|                 etcd_host:
 | |
|                   type: string
 | |
|                   default: ""
 | |
|                 kubernetes_use_configmaps:
 | |
|                   type: boolean
 | |
|                   default: false
 | |
|                 max_instances:
 | |
|                   type: integer
 | |
|                   minimum: -1 # -1 = disabled
 | |
|                   default: -1
 | |
|                 min_instances:
 | |
|                   type: integer
 | |
|                   minimum: -1 # -1 = disabled
 | |
|                   default: -1
 | |
|                 resync_period:
 | |
|                   type: string
 | |
|                   default: "30m"
 | |
|                 repair_period:
 | |
|                   type: string
 | |
|                   default: "5m"
 | |
|                 set_memory_request_to_limit:
 | |
|                   type: boolean
 | |
|                   default: false
 | |
|                 sidecar_docker_images:
 | |
|                   type: object
 | |
|                   additionalProperties:
 | |
|                     type: string
 | |
|                 sidecars:
 | |
|                   type: array
 | |
|                   nullable: true
 | |
|                   items:
 | |
|                     type: object
 | |
|                     x-kubernetes-preserve-unknown-fields: true
 | |
|                 workers:
 | |
|                   type: integer
 | |
|                   minimum: 1
 | |
|                   default: 8
 | |
|                 users:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     replication_username:
 | |
|                       type: string
 | |
|                       default: standby
 | |
|                     super_username:
 | |
|                       type: string
 | |
|                       default: postgres
 | |
|                 major_version_upgrade:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     major_version_upgrade_mode:
 | |
|                       type: string
 | |
|                       default: "off"
 | |
|                     minimal_major_version:
 | |
|                       type: string
 | |
|                       default: "9.5"
 | |
|                     target_major_version:
 | |
|                       type: string
 | |
|                       default: "13"
 | |
|                 kubernetes:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     additional_pod_capabilities:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                     cluster_domain:
 | |
|                       type: string
 | |
|                       default: "cluster.local"
 | |
|                     cluster_labels:
 | |
|                       type: object
 | |
|                       additionalProperties:
 | |
|                         type: string
 | |
|                       default:
 | |
|                         application: spilo
 | |
|                     cluster_name_label:
 | |
|                       type: string
 | |
|                       default: "cluster-name"
 | |
|                     ignored_annotations:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                     custom_pod_annotations:
 | |
|                       type: object
 | |
|                       additionalProperties:
 | |
|                         type: string
 | |
|                     delete_annotation_date_key:
 | |
|                       type: string
 | |
|                     delete_annotation_name_key:
 | |
|                       type: string
 | |
|                     downscaler_annotations:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                     enable_init_containers:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     enable_pod_antiaffinity:
 | |
|                       type: boolean
 | |
|                       default: false
 | |
|                     enable_pod_disruption_budget:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     enable_sidecars:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     infrastructure_roles_secret_name:
 | |
|                       type: string
 | |
|                     infrastructure_roles_secrets:
 | |
|                       type: array
 | |
|                       nullable: true
 | |
|                       items:
 | |
|                         type: object
 | |
|                         required:
 | |
|                           - secretname
 | |
|                           - userkey
 | |
|                           - passwordkey
 | |
|                         properties:
 | |
|                           secretname:
 | |
|                             type: string
 | |
|                           userkey:
 | |
|                             type: string
 | |
|                           passwordkey:
 | |
|                             type: string
 | |
|                           rolekey:
 | |
|                             type: string
 | |
|                           defaultuservalue:
 | |
|                             type: string
 | |
|                           defaultrolevalue:
 | |
|                             type: string
 | |
|                           details:
 | |
|                             type: string
 | |
|                           template:
 | |
|                             type: boolean
 | |
|                     inherited_annotations:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                     inherited_labels:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                     master_pod_move_timeout:
 | |
|                       type: string
 | |
|                       default: "20m"
 | |
|                     node_readiness_label:
 | |
|                       type: object
 | |
|                       additionalProperties:
 | |
|                         type: string
 | |
|                     oauth_token_secret_name:
 | |
|                       type: string
 | |
|                       default: "postgresql-operator"
 | |
|                     pdb_name_format:
 | |
|                       type: string
 | |
|                       default: "postgres-{cluster}-pdb"
 | |
|                     pod_antiaffinity_topology_key:
 | |
|                       type: string
 | |
|                       default: "kubernetes.io/hostname"
 | |
|                     pod_environment_configmap:
 | |
|                       type: string
 | |
|                     pod_environment_secret:
 | |
|                       type: string
 | |
|                     pod_management_policy:
 | |
|                       type: string
 | |
|                       enum:
 | |
|                         - "ordered_ready"
 | |
|                         - "parallel"
 | |
|                       default: "ordered_ready"
 | |
|                     pod_priority_class_name:
 | |
|                       type: string
 | |
|                     pod_role_label:
 | |
|                       type: string
 | |
|                       default: "spilo-role"
 | |
|                     pod_service_account_definition:
 | |
|                       type: string
 | |
|                       default: ""
 | |
|                     pod_service_account_name:
 | |
|                       type: string
 | |
|                       default: "postgres-pod"
 | |
|                     pod_service_account_role_binding_definition:
 | |
|                       type: string
 | |
|                       default: ""
 | |
|                     pod_terminate_grace_period:
 | |
|                       type: string
 | |
|                       default: "5m"
 | |
|                     secret_name_template:
 | |
|                       type: string
 | |
|                       default: "{username}.{cluster}.credentials.{tprkind}.{tprgroup}"
 | |
|                     spilo_allow_privilege_escalation:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     spilo_runasuser:
 | |
|                       type: integer
 | |
|                     spilo_runasgroup:
 | |
|                       type: integer
 | |
|                     spilo_fsgroup:
 | |
|                       type: integer
 | |
|                     spilo_privileged:
 | |
|                       type: boolean
 | |
|                       default: false
 | |
|                     storage_resize_mode:
 | |
|                       type: string
 | |
|                       enum:
 | |
|                         - "ebs"
 | |
|                         - "pvc"
 | |
|                         - "off"
 | |
|                       default: "pvc"
 | |
|                     toleration:
 | |
|                       type: object
 | |
|                       additionalProperties:
 | |
|                         type: string
 | |
|                     watched_namespace:
 | |
|                       type: string
 | |
|                 postgres_pod_resources:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     default_cpu_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "1"
 | |
|                     default_cpu_request:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "100m"
 | |
|                     default_memory_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "500Mi"
 | |
|                     default_memory_request:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "100Mi"
 | |
|                     min_cpu_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "250m"
 | |
|                     min_memory_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "250Mi"
 | |
|                 timeouts:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     pod_label_wait_timeout:
 | |
|                       type: string
 | |
|                       default: "10m"
 | |
|                     pod_deletion_wait_timeout:
 | |
|                       type: string
 | |
|                       default: "10m"
 | |
|                     ready_wait_interval:
 | |
|                       type: string
 | |
|                       default: "4s"
 | |
|                     ready_wait_timeout:
 | |
|                       type: string
 | |
|                       default: "30s"
 | |
|                     resource_check_interval:
 | |
|                       type: string
 | |
|                       default: "3s"
 | |
|                     resource_check_timeout:
 | |
|                       type: string
 | |
|                       default: "10m"
 | |
|                 load_balancer:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     custom_service_annotations:
 | |
|                       type: object
 | |
|                       additionalProperties:
 | |
|                         type: string
 | |
|                     db_hosted_zone:
 | |
|                       type: string
 | |
|                       default: "db.example.com"
 | |
|                     enable_master_load_balancer:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     enable_replica_load_balancer:
 | |
|                       type: boolean
 | |
|                       default: false
 | |
|                     external_traffic_policy:
 | |
|                       type: string
 | |
|                       enum:
 | |
|                         - "Cluster"
 | |
|                         - "Local"
 | |
|                       default: "Cluster"
 | |
|                     master_dns_name_format:
 | |
|                       type: string
 | |
|                       default: "{cluster}.{team}.{hostedzone}"
 | |
|                     replica_dns_name_format:
 | |
|                       type: string
 | |
|                       default: "{cluster}-repl.{team}.{hostedzone}"
 | |
|                 aws_or_gcp:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     additional_secret_mount:
 | |
|                       type: string
 | |
|                     additional_secret_mount_path:
 | |
|                       type: string
 | |
|                       default: "/meta/credentials"
 | |
|                     aws_region:
 | |
|                       type: string
 | |
|                       default: "eu-central-1"
 | |
|                     enable_ebs_gp3_migration:
 | |
|                       type: boolean
 | |
|                       default: false
 | |
|                     enable_ebs_gp3_migration_max_size:
 | |
|                       type: integer
 | |
|                       default: 1000
 | |
|                     gcp_credentials:
 | |
|                       type: string
 | |
|                     kube_iam_role:
 | |
|                       type: string
 | |
|                     log_s3_bucket:
 | |
|                       type: string
 | |
|                     wal_gs_bucket:
 | |
|                       type: string
 | |
|                     wal_s3_bucket:
 | |
|                       type: string
 | |
|                 logical_backup:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     logical_backup_docker_image:
 | |
|                       type: string
 | |
|                       default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2"
 | |
|                     logical_backup_google_application_credentials:
 | |
|                       type: string
 | |
|                     logical_backup_job_prefix:
 | |
|                       type: string
 | |
|                       default: "logical-backup-"
 | |
|                     logical_backup_provider:
 | |
|                       type: string
 | |
|                       default: "s3"
 | |
|                     logical_backup_s3_access_key_id:
 | |
|                       type: string
 | |
|                     logical_backup_s3_bucket:
 | |
|                       type: string
 | |
|                     logical_backup_s3_endpoint:
 | |
|                       type: string
 | |
|                     logical_backup_s3_region:
 | |
|                       type: string
 | |
|                     logical_backup_s3_secret_access_key:
 | |
|                       type: string
 | |
|                     logical_backup_s3_sse:
 | |
|                       type: string
 | |
|                     logical_backup_schedule:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | |
|                       default: "30 00 * * *"
 | |
|                 debug:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     debug_logging:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     enable_database_access:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                 teams_api:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     enable_admin_role_for_users:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     enable_postgres_team_crd:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     enable_postgres_team_crd_superusers:
 | |
|                       type: boolean
 | |
|                       default: false
 | |
|                     enable_team_superuser:
 | |
|                       type: boolean
 | |
|                       default: false
 | |
|                     enable_teams_api:
 | |
|                       type: boolean
 | |
|                       default: true
 | |
|                     pam_configuration:
 | |
|                       type: string
 | |
|                       default: "https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees"
 | |
|                     pam_role_name:
 | |
|                       type: string
 | |
|                       default: "zalandos"
 | |
|                     postgres_superuser_teams:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                     protected_role_names:
 | |
|                       type: array
 | |
|                       items:
 | |
|                         type: string
 | |
|                       default:
 | |
|                         - admin
 | |
|                     team_admin_role:
 | |
|                       type: string
 | |
|                       default: "admin"
 | |
|                     team_api_role_configuration:
 | |
|                       type: object
 | |
|                       additionalProperties:
 | |
|                         type: string
 | |
|                       default:
 | |
|                         log_statement: all
 | |
|                     teams_api_url:
 | |
|                       type: string
 | |
|                       default: "https://teams.example.com/api/"
 | |
|                 logging_rest_api:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     api_port:
 | |
|                       type: integer
 | |
|                       default: 8080
 | |
|                     cluster_history_entries:
 | |
|                       type: integer
 | |
|                       default: 1000
 | |
|                     ring_log_lines:
 | |
|                       type: integer
 | |
|                       default: 100
 | |
|                 scalyr: # deprecated
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     scalyr_api_key:
 | |
|                       type: string
 | |
|                     scalyr_cpu_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "1"
 | |
|                     scalyr_cpu_request:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "100m"
 | |
|                     scalyr_image:
 | |
|                       type: string
 | |
|                     scalyr_memory_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "500Mi"
 | |
|                     scalyr_memory_request:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "50Mi"
 | |
|                     scalyr_server_url:
 | |
|                       type: string
 | |
|                       default: "https://upload.eu.scalyr.com"
 | |
|                 connection_pooler:
 | |
|                   type: object
 | |
|                   properties:
 | |
|                     connection_pooler_schema:
 | |
|                       type: string
 | |
|                       default: "pooler"
 | |
|                     connection_pooler_user:
 | |
|                       type: string
 | |
|                       default: "pooler"
 | |
|                     connection_pooler_image:
 | |
|                       type: string
 | |
|                       default: "registry.opensource.zalan.do/acid/pgbouncer:master-16"
 | |
|                     connection_pooler_max_db_connections:
 | |
|                       type: integer
 | |
|                       default: 60
 | |
|                     connection_pooler_mode:
 | |
|                       type: string
 | |
|                       enum:
 | |
|                         - "session"
 | |
|                         - "transaction"
 | |
|                       default: "transaction"
 | |
|                     connection_pooler_number_of_instances:
 | |
|                       type: integer
 | |
|                       minimum: 1
 | |
|                       default: 2
 | |
|                     connection_pooler_default_cpu_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "1"
 | |
|                     connection_pooler_default_cpu_request:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                       default: "500m"
 | |
|                     connection_pooler_default_memory_limit:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "100Mi"
 | |
|                     connection_pooler_default_memory_request:
 | |
|                       type: string
 | |
|                       pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                       default: "100Mi"
 | |
|             status:
 | |
|               type: object
 | |
|               additionalProperties:
 | |
|                 type: string
 |