452 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			452 lines
		
	
	
		
			16 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_google_application_credentials:
 | 
						|
                    type: string
 | 
						|
                  logical_backup_provider:
 | 
						|
                    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
 |