448 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			448 lines
		
	
	
		
			15 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
 | |
|               enable_crd_validation:
 | |
|                 type: boolean
 | |
|               enable_lazy_spilo_upgrade:
 | |
|                 type: boolean
 | |
|               enable_pgversion_env_var:
 | |
|                 type: boolean
 | |
|               enable_shm_volume:
 | |
|                 type: boolean
 | |
|               enable_spilo_wal_path_compat:
 | |
|                 type: boolean
 | |
|               etcd_host:
 | |
|                 type: string
 | |
|               kubernetes_use_configmaps:
 | |
|                 type: boolean
 | |
|               max_instances:
 | |
|                 type: integer
 | |
|                 minimum: -1  # -1 = disabled
 | |
|               min_instances:
 | |
|                 type: integer
 | |
|                 minimum: -1  # -1 = disabled
 | |
|               resync_period:
 | |
|                 type: string
 | |
|               repair_period:
 | |
|                 type: string
 | |
|               set_memory_request_to_limit:
 | |
|                 type: boolean
 | |
|               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
 | |
|               users:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   replication_username:
 | |
|                      type: string
 | |
|                   super_username:
 | |
|                      type: string
 | |
|               kubernetes:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   cluster_domain:
 | |
|                     type: string
 | |
|                   cluster_labels:
 | |
|                     type: object
 | |
|                     additionalProperties:
 | |
|                       type: string
 | |
|                   cluster_name_label:
 | |
|                     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
 | |
|                   enable_pod_antiaffinity:
 | |
|                     type: boolean
 | |
|                   enable_pod_disruption_budget:
 | |
|                     type: boolean
 | |
|                   enable_sidecars:
 | |
|                     type: boolean
 | |
|                   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
 | |
|                   node_readiness_label:
 | |
|                     type: object
 | |
|                     additionalProperties:
 | |
|                       type: string
 | |
|                   oauth_token_secret_name:
 | |
|                     type: string
 | |
|                   pdb_name_format:
 | |
|                     type: string
 | |
|                   pod_antiaffinity_topology_key:
 | |
|                     type: string
 | |
|                   pod_environment_configmap:
 | |
|                     type: string
 | |
|                   pod_environment_secret:
 | |
|                     type: string
 | |
|                   pod_management_policy:
 | |
|                     type: string
 | |
|                     enum:
 | |
|                       - "ordered_ready"
 | |
|                       - "parallel"
 | |
|                   pod_priority_class_name:
 | |
|                     type: string
 | |
|                   pod_role_label:
 | |
|                     type: string
 | |
|                   pod_service_account_definition:
 | |
|                     type: string
 | |
|                   pod_service_account_name:
 | |
|                     type: string
 | |
|                   pod_service_account_role_binding_definition:
 | |
|                     type: string
 | |
|                   pod_terminate_grace_period:
 | |
|                     type: string
 | |
|                   secret_name_template:
 | |
|                     type: string
 | |
|                   spilo_runasuser:
 | |
|                     type: integer
 | |
|                   spilo_runasgroup:
 | |
|                     type: integer
 | |
|                   spilo_fsgroup:
 | |
|                     type: integer
 | |
|                   spilo_privileged:
 | |
|                     type: boolean
 | |
|                   storage_resize_mode:
 | |
|                     type: string
 | |
|                     enum:
 | |
|                       - "ebs"
 | |
|                       - "pvc"
 | |
|                       - "off"
 | |
|                   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_cpu_request:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                   default_memory_limit:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                   default_memory_request:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                   min_cpu_limit:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                   min_memory_limit:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|               timeouts:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   pod_label_wait_timeout:
 | |
|                     type: string
 | |
|                   pod_deletion_wait_timeout:
 | |
|                     type: string
 | |
|                   ready_wait_interval:
 | |
|                     type: string
 | |
|                   ready_wait_timeout:
 | |
|                     type: string
 | |
|                   resource_check_interval:
 | |
|                     type: string
 | |
|                   resource_check_timeout:
 | |
|                     type: string
 | |
|               load_balancer:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   custom_service_annotations:
 | |
|                     type: object
 | |
|                     additionalProperties:
 | |
|                       type: string
 | |
|                   db_hosted_zone:
 | |
|                     type: string
 | |
|                   enable_master_load_balancer:
 | |
|                     type: boolean
 | |
|                   enable_replica_load_balancer:
 | |
|                     type: boolean
 | |
|                   external_traffic_policy:
 | |
|                     type: string
 | |
|                     enum:
 | |
|                       - "Cluster"
 | |
|                       - "Local"
 | |
|                   master_dns_name_format:
 | |
|                     type: string
 | |
|                   replica_dns_name_format:
 | |
|                     type: string
 | |
|               aws_or_gcp:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   additional_secret_mount:
 | |
|                     type: string
 | |
|                   additional_secret_mount_path:
 | |
|                     type: string
 | |
|                   aws_region:
 | |
|                     type: string
 | |
|                   enable_ebs_gp3_migration:
 | |
|                     type: boolean
 | |
|                   enable_ebs_gp3_migration_max_size:
 | |
|                     type: integer
 | |
|                   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
 | |
|                   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}$'
 | |
|               debug:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   debug_logging:
 | |
|                     type: boolean
 | |
|                   enable_database_access:
 | |
|                     type: boolean
 | |
|               teams_api:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   enable_admin_role_for_users:
 | |
|                     type: boolean
 | |
|                   enable_postgres_team_crd:
 | |
|                     type: boolean
 | |
|                   enable_postgres_team_crd_superusers:
 | |
|                     type: boolean
 | |
|                   enable_team_superuser:
 | |
|                     type: boolean
 | |
|                   enable_teams_api:
 | |
|                     type: boolean
 | |
|                   pam_configuration:
 | |
|                     type: string
 | |
|                   pam_role_name:
 | |
|                     type: string
 | |
|                   postgres_superuser_teams:
 | |
|                     type: array
 | |
|                     items:
 | |
|                       type: string
 | |
|                   protected_role_names:
 | |
|                     type: array
 | |
|                     items:
 | |
|                       type: string
 | |
|                   team_admin_role:
 | |
|                     type: string
 | |
|                   team_api_role_configuration:
 | |
|                     type: object
 | |
|                     additionalProperties:
 | |
|                       type: string
 | |
|                   teams_api_url:
 | |
|                     type: string
 | |
|               logging_rest_api:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   api_port:
 | |
|                     type: integer
 | |
|                   cluster_history_entries:
 | |
|                     type: integer
 | |
|                   ring_log_lines:
 | |
|                     type: integer
 | |
|               scalyr:  # deprecated
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   scalyr_api_key:
 | |
|                     type: string
 | |
|                   scalyr_cpu_limit:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                   scalyr_cpu_request:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | |
|                   scalyr_image:
 | |
|                     type: string
 | |
|                   scalyr_memory_limit:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                   scalyr_memory_request:
 | |
|                     type: string
 | |
|                     pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | |
|                   scalyr_server_url:
 | |
|                     type: string
 | |
|               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"
 | |
|                   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: 2
 | |
|                     #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
 |