preserving fields only when using k8s specs (#1228)
* preserving fields when k8s specs are used with x-kubernetes-preserve-unknown-fields flag * cleaning up merge errors in postgresql and operatorconfiguration CRD * add operatorconfiguration CRD and sample manifests in setUpClass of e2e tests * update generated code and go modules
This commit is contained in:
parent
c4ae11629b
commit
cfd83e33c8
|
|
@ -47,7 +47,6 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
type: object
|
type: object
|
||||||
x-preserve-unknown-fields: true
|
|
||||||
required:
|
required:
|
||||||
- kind
|
- kind
|
||||||
- apiVersion
|
- apiVersion
|
||||||
|
|
@ -97,7 +96,7 @@ spec:
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
workers:
|
workers:
|
||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
|
|
@ -275,6 +274,11 @@ spec:
|
||||||
type: boolean
|
type: boolean
|
||||||
enable_replica_load_balancer:
|
enable_replica_load_balancer:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
external_traffic_policy:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "Cluster"
|
||||||
|
- "Local"
|
||||||
master_dns_name_format:
|
master_dns_name_format:
|
||||||
type: string
|
type: string
|
||||||
replica_dns_name_format:
|
replica_dns_name_format:
|
||||||
|
|
@ -325,131 +329,6 @@ spec:
|
||||||
type: boolean
|
type: boolean
|
||||||
enable_database_access:
|
enable_database_access:
|
||||||
type: boolean
|
type: boolean
|
||||||
teams_api:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
enable_admin_role_for_users:
|
|
||||||
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
|
|
||||||
pod_service_account_name:
|
|
||||||
type: string
|
|
||||||
pod_terminate_grace_period:
|
|
||||||
type: string
|
|
||||||
secret_name_template:
|
|
||||||
type: string
|
|
||||||
spilo_fsgroup:
|
|
||||||
type: integer
|
|
||||||
spilo_privileged:
|
|
||||||
type: boolean
|
|
||||||
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?)$'
|
|
||||||
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
|
|
||||||
kube_iam_role:
|
|
||||||
type: string
|
|
||||||
log_s3_bucket:
|
|
||||||
type: string
|
|
||||||
wal_s3_bucket:
|
|
||||||
type: string
|
|
||||||
logical_backup:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
logical_backup_schedule:
|
|
||||||
type: string
|
|
||||||
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
|
|
||||||
logical_backup_docker_image:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_bucket:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_endpoint:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_sse:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_access_key_id:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_secret_access_key:
|
|
||||||
type: string
|
|
||||||
debug:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
debug_logging:
|
|
||||||
type: boolean
|
|
||||||
enable_database_access:
|
|
||||||
type: boolean
|
|
||||||
teams_api:
|
teams_api:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -492,38 +371,6 @@ spec:
|
||||||
type: integer
|
type: integer
|
||||||
ring_log_lines:
|
ring_log_lines:
|
||||||
type: integer
|
type: integer
|
||||||
scalyr:
|
|
||||||
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
|
|
||||||
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
|
scalyr: # deprecated
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,6 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
type: object
|
type: object
|
||||||
x-preserve-unknown-fields: true
|
|
||||||
required:
|
required:
|
||||||
- kind
|
- kind
|
||||||
- apiVersion
|
- apiVersion
|
||||||
|
|
@ -101,6 +100,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
volumeSource:
|
volumeSource:
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
subPath:
|
subPath:
|
||||||
type: string
|
type: string
|
||||||
allowedSourceRanges:
|
allowedSourceRanges:
|
||||||
|
|
@ -208,57 +208,13 @@ spec:
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
required:
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
- cluster
|
|
||||||
properties:
|
|
||||||
cluster:
|
|
||||||
type: string
|
|
||||||
s3_endpoint:
|
|
||||||
type: string
|
|
||||||
s3_access_key_id:
|
|
||||||
type: string
|
|
||||||
s3_secret_access_key:
|
|
||||||
type: string
|
|
||||||
s3_force_path_style:
|
|
||||||
type: string
|
|
||||||
s3_wal_path:
|
|
||||||
type: string
|
|
||||||
timestamp:
|
|
||||||
type: string
|
|
||||||
pattern: '^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$'
|
|
||||||
# The regexp matches the date-time format (RFC 3339 Section 5.6) that specifies a timezone as an offset relative to UTC
|
|
||||||
# Example: 1996-12-19T16:39:57-08:00
|
|
||||||
# Note: this field requires a timezone
|
|
||||||
uid:
|
|
||||||
format: uuid
|
|
||||||
type: string
|
|
||||||
databases:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
# Note: usernames specified here as database owners must be declared in the users key of the spec key.
|
|
||||||
dockerImage:
|
|
||||||
type: string
|
|
||||||
enableLogicalBackup:
|
|
||||||
type: boolean
|
|
||||||
enableMasterLoadBalancer:
|
|
||||||
type: boolean
|
|
||||||
enableReplicaLoadBalancer:
|
|
||||||
type: boolean
|
|
||||||
enableShmVolume:
|
|
||||||
type: boolean
|
|
||||||
init_containers: # deprecated
|
|
||||||
type: array
|
|
||||||
nullable: true
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
additionalProperties: true
|
|
||||||
initContainers:
|
initContainers:
|
||||||
type: array
|
type: array
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
logicalBackupSchedule:
|
logicalBackupSchedule:
|
||||||
type: string
|
type: string
|
||||||
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
|
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
|
||||||
|
|
@ -277,18 +233,28 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
ttl:
|
|
||||||
type: integer
|
|
||||||
loop_wait:
|
loop_wait:
|
||||||
type: integer
|
type: integer
|
||||||
retry_timeout:
|
|
||||||
type: integer
|
|
||||||
maximum_lag_on_failover:
|
maximum_lag_on_failover:
|
||||||
type: integer
|
type: integer
|
||||||
|
pg_hba:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
retry_timeout:
|
||||||
|
type: integer
|
||||||
|
slots:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
synchronous_mode:
|
synchronous_mode:
|
||||||
type: boolean
|
type: boolean
|
||||||
synchronous_mode_strict:
|
synchronous_mode_strict:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
ttl:
|
||||||
|
type: integer
|
||||||
podAnnotations:
|
podAnnotations:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -297,17 +263,6 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
podPriorityClassName:
|
podPriorityClassName:
|
||||||
type: string
|
type: string
|
||||||
postgresql:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- version
|
|
||||||
properties:
|
|
||||||
version:
|
|
||||||
type: string
|
|
||||||
pod_priority_class_name: # deprecated
|
|
||||||
type: string
|
|
||||||
podPriorityClassName:
|
|
||||||
type: string
|
|
||||||
postgresql:
|
postgresql:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
|
|
@ -328,91 +283,6 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
replicaLoadBalancer: # deprecated
|
|
||||||
type: boolean
|
|
||||||
resources:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- requests
|
|
||||||
- limits
|
|
||||||
properties:
|
|
||||||
limits:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- cpu
|
|
||||||
- memory
|
|
||||||
properties:
|
|
||||||
cpu:
|
|
||||||
type: string
|
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
|
||||||
# dot followed by up to three decimal digits.
|
|
||||||
#
|
|
||||||
# This is because the Kubernetes CPU resource has millis as the
|
|
||||||
# maximum precision. The actual values are checked in code
|
|
||||||
# because the regular expression would be huge and horrible and
|
|
||||||
# not very helpful in validation error messages; this one checks
|
|
||||||
# only the format of the given number.
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
|
|
||||||
pattern: '^(\d+m|\d+\.\d{1,3})$'
|
|
||||||
# Note: the value specified here must not be zero or be lower
|
|
||||||
# than the corresponding request.
|
|
||||||
memory:
|
|
||||||
type: string
|
|
||||||
# You can express memory as a plain integer or as a fixed-point
|
|
||||||
# integer using one of these suffixes: E, P, T, G, M, k. You can
|
|
||||||
# also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
|
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
||||||
# Note: the value specified here must not be zero or be lower
|
|
||||||
# than the corresponding request.
|
|
||||||
requests:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- cpu
|
|
||||||
- memory
|
|
||||||
properties:
|
|
||||||
cpu:
|
|
||||||
type: string
|
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
|
||||||
# dot followed by up to three decimal digits.
|
|
||||||
#
|
|
||||||
# This is because the Kubernetes CPU resource has millis as the
|
|
||||||
# maximum precision. The actual values are checked in code
|
|
||||||
# because the regular expression would be huge and horrible and
|
|
||||||
# not very helpful in validation error messages; this one checks
|
|
||||||
# only the format of the given number.
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
|
|
||||||
pattern: '^(\d+m|\d+\.\d{1,3})$'
|
|
||||||
# Note: the value specified here must not be zero or be higher
|
|
||||||
# than the corresponding limit.
|
|
||||||
memory:
|
|
||||||
type: string
|
|
||||||
# You can express memory as a plain integer or as a fixed-point
|
|
||||||
# integer using one of these suffixes: E, P, T, G, M, k. You can
|
|
||||||
# also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
|
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
||||||
# Note: the value specified here must not be zero or be higher
|
|
||||||
# than the corresponding limit.
|
|
||||||
sidecars:
|
|
||||||
type: array
|
|
||||||
nullable: true
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
additionalProperties: true
|
|
||||||
spiloFSGroup:
|
|
||||||
type: integer
|
|
||||||
standby:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- s3_wal_path
|
|
||||||
properties:
|
|
||||||
s3_wal_path:
|
|
||||||
type: string
|
|
||||||
preparedDatabases:
|
preparedDatabases:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -444,11 +314,10 @@ spec:
|
||||||
limits:
|
limits:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- key
|
- cpu
|
||||||
- operator
|
- memory
|
||||||
- effect
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
cpu:
|
||||||
type: string
|
type: string
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
# Decimal natural followed by m, or decimal natural followed by
|
||||||
# dot followed by up to three decimal digits.
|
# dot followed by up to three decimal digits.
|
||||||
|
|
@ -463,26 +332,6 @@ spec:
|
||||||
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
||||||
# Note: the value specified here must not be zero or be lower
|
# Note: the value specified here must not be zero or be lower
|
||||||
# than the corresponding request.
|
# than the corresponding request.
|
||||||
memory:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- Equal
|
|
||||||
- Exists
|
|
||||||
value:
|
|
||||||
type: string
|
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
|
||||||
# dot followed by up to three decimal digits.
|
|
||||||
#
|
|
||||||
# This is because the Kubernetes CPU resource has millis as the
|
|
||||||
# maximum precision. The actual values are checked in code
|
|
||||||
# because the regular expression would be huge and horrible and
|
|
||||||
# not very helpful in validation error messages; this one checks
|
|
||||||
# only the format of the given number.
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
|
|
||||||
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
|
||||||
# Note: the value specified here must not be zero or be higher
|
|
||||||
# than the corresponding limit.
|
|
||||||
memory:
|
memory:
|
||||||
type: string
|
type: string
|
||||||
# You can express memory as a plain integer or as a fixed-point
|
# You can express memory as a plain integer or as a fixed-point
|
||||||
|
|
@ -493,6 +342,18 @@ spec:
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
||||||
# Note: the value specified here must not be zero or be higher
|
# Note: the value specified here must not be zero or be higher
|
||||||
# than the corresponding limit.
|
# than the corresponding limit.
|
||||||
|
requests:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- cpu
|
||||||
|
- memory
|
||||||
|
properties:
|
||||||
|
cpu:
|
||||||
|
type: string
|
||||||
|
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
||||||
|
memory:
|
||||||
|
type: string
|
||||||
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
||||||
serviceAnnotations:
|
serviceAnnotations:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -502,7 +363,7 @@ spec:
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
spiloRunAsUser:
|
spiloRunAsUser:
|
||||||
type: integer
|
type: integer
|
||||||
spiloRunAsGroup:
|
spiloRunAsGroup:
|
||||||
|
|
@ -538,15 +399,20 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- size
|
- key
|
||||||
|
- operator
|
||||||
|
- effect
|
||||||
properties:
|
properties:
|
||||||
size:
|
key:
|
||||||
type: string
|
type: string
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
operator:
|
||||||
# Note: the value specified here must not be zero.
|
|
||||||
storageClass:
|
|
||||||
type: string
|
type: string
|
||||||
subPath:
|
enum:
|
||||||
|
- Equal
|
||||||
|
- Exists
|
||||||
|
value:
|
||||||
|
type: string
|
||||||
|
effect:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- NoExecute
|
- NoExecute
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
type: object
|
type: object
|
||||||
x-preserve-unknown-fields: true
|
|
||||||
required:
|
required:
|
||||||
- kind
|
- kind
|
||||||
- apiVersion
|
- apiVersion
|
||||||
|
|
|
||||||
|
|
@ -117,8 +117,11 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
yaml.dump(configmap, f, Dumper=yaml.Dumper)
|
yaml.dump(configmap, f, Dumper=yaml.Dumper)
|
||||||
|
|
||||||
for filename in ["operator-service-account-rbac.yaml",
|
for filename in ["operator-service-account-rbac.yaml",
|
||||||
|
"postgresql.crd.yaml",
|
||||||
|
"operatorconfiguration.crd.yaml",
|
||||||
"postgresteam.crd.yaml",
|
"postgresteam.crd.yaml",
|
||||||
"configmap.yaml",
|
"configmap.yaml",
|
||||||
|
"postgresql-operator-default-configuration.yaml",
|
||||||
"postgres-operator.yaml",
|
"postgres-operator.yaml",
|
||||||
"api-service.yaml",
|
"api-service.yaml",
|
||||||
"infrastructure-roles.yaml",
|
"infrastructure-roles.yaml",
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -10,7 +10,7 @@ require (
|
||||||
github.com/sirupsen/logrus v1.7.0
|
github.com/sirupsen/logrus v1.7.0
|
||||||
github.com/stretchr/testify v1.5.1
|
github.com/stretchr/testify v1.5.1
|
||||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
|
||||||
golang.org/x/tools v0.0.0-20201026223136-e84cfc6dd5ca // indirect
|
golang.org/x/tools v0.0.0-20201121010211-780cb80bd7fb // indirect
|
||||||
gopkg.in/yaml.v2 v2.2.8
|
gopkg.in/yaml.v2 v2.2.8
|
||||||
k8s.io/api v0.19.3
|
k8s.io/api v0.19.3
|
||||||
k8s.io/apiextensions-apiserver v0.19.3
|
k8s.io/apiextensions-apiserver v0.19.3
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -505,8 +505,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
golang.org/x/tools v0.0.0-20201026223136-e84cfc6dd5ca h1:vL6Mv8VrSxz8azdgLrH/zO/Rd1Bzdk89ZfMVW39gD0Q=
|
golang.org/x/tools v0.0.0-20201121010211-780cb80bd7fb h1:z5+u0pkAUPUWd3taoTialQ2JAMo4Wo1Z3L25U4ZV9r0=
|
||||||
golang.org/x/tools v0.0.0-20201026223136-e84cfc6dd5ca/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
golang.org/x/tools v0.0.0-20201121010211-780cb80bd7fb/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
type: object
|
type: object
|
||||||
x-preserve-unknown-fields: true
|
|
||||||
required:
|
required:
|
||||||
- kind
|
- kind
|
||||||
- apiVersion
|
- apiVersion
|
||||||
|
|
@ -93,7 +92,7 @@ spec:
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
workers:
|
workers:
|
||||||
type: integer
|
type: integer
|
||||||
minimum: 1
|
minimum: 1
|
||||||
|
|
@ -271,6 +270,11 @@ spec:
|
||||||
type: boolean
|
type: boolean
|
||||||
enable_replica_load_balancer:
|
enable_replica_load_balancer:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
external_traffic_policy:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "Cluster"
|
||||||
|
- "Local"
|
||||||
master_dns_name_format:
|
master_dns_name_format:
|
||||||
type: string
|
type: string
|
||||||
replica_dns_name_format:
|
replica_dns_name_format:
|
||||||
|
|
@ -321,131 +325,6 @@ spec:
|
||||||
type: boolean
|
type: boolean
|
||||||
enable_database_access:
|
enable_database_access:
|
||||||
type: boolean
|
type: boolean
|
||||||
teams_api:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
enable_admin_role_for_users:
|
|
||||||
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
|
|
||||||
pod_service_account_name:
|
|
||||||
type: string
|
|
||||||
pod_terminate_grace_period:
|
|
||||||
type: string
|
|
||||||
secret_name_template:
|
|
||||||
type: string
|
|
||||||
spilo_fsgroup:
|
|
||||||
type: integer
|
|
||||||
spilo_privileged:
|
|
||||||
type: boolean
|
|
||||||
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?)$'
|
|
||||||
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
|
|
||||||
kube_iam_role:
|
|
||||||
type: string
|
|
||||||
log_s3_bucket:
|
|
||||||
type: string
|
|
||||||
wal_s3_bucket:
|
|
||||||
type: string
|
|
||||||
logical_backup:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
logical_backup_schedule:
|
|
||||||
type: string
|
|
||||||
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
|
|
||||||
logical_backup_docker_image:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_bucket:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_endpoint:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_sse:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_access_key_id:
|
|
||||||
type: string
|
|
||||||
logical_backup_s3_secret_access_key:
|
|
||||||
type: string
|
|
||||||
debug:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
debug_logging:
|
|
||||||
type: boolean
|
|
||||||
enable_database_access:
|
|
||||||
type: boolean
|
|
||||||
teams_api:
|
teams_api:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -488,38 +367,6 @@ spec:
|
||||||
type: integer
|
type: integer
|
||||||
ring_log_lines:
|
ring_log_lines:
|
||||||
type: integer
|
type: integer
|
||||||
scalyr:
|
|
||||||
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
|
|
||||||
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
|
scalyr: # deprecated
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,6 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
type: object
|
type: object
|
||||||
x-preserve-unknown-fields: true
|
|
||||||
required:
|
required:
|
||||||
- kind
|
- kind
|
||||||
- apiVersion
|
- apiVersion
|
||||||
|
|
@ -97,6 +96,7 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
volumeSource:
|
volumeSource:
|
||||||
type: object
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
subPath:
|
subPath:
|
||||||
type: string
|
type: string
|
||||||
allowedSourceRanges:
|
allowedSourceRanges:
|
||||||
|
|
@ -204,57 +204,13 @@ spec:
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
required:
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
- cluster
|
|
||||||
properties:
|
|
||||||
cluster:
|
|
||||||
type: string
|
|
||||||
s3_endpoint:
|
|
||||||
type: string
|
|
||||||
s3_access_key_id:
|
|
||||||
type: string
|
|
||||||
s3_secret_access_key:
|
|
||||||
type: string
|
|
||||||
s3_force_path_style:
|
|
||||||
type: string
|
|
||||||
s3_wal_path:
|
|
||||||
type: string
|
|
||||||
timestamp:
|
|
||||||
type: string
|
|
||||||
pattern: '^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$'
|
|
||||||
# The regexp matches the date-time format (RFC 3339 Section 5.6) that specifies a timezone as an offset relative to UTC
|
|
||||||
# Example: 1996-12-19T16:39:57-08:00
|
|
||||||
# Note: this field requires a timezone
|
|
||||||
uid:
|
|
||||||
format: uuid
|
|
||||||
type: string
|
|
||||||
databases:
|
|
||||||
type: object
|
|
||||||
additionalProperties:
|
|
||||||
type: string
|
|
||||||
# Note: usernames specified here as database owners must be declared in the users key of the spec key.
|
|
||||||
dockerImage:
|
|
||||||
type: string
|
|
||||||
enableLogicalBackup:
|
|
||||||
type: boolean
|
|
||||||
enableMasterLoadBalancer:
|
|
||||||
type: boolean
|
|
||||||
enableReplicaLoadBalancer:
|
|
||||||
type: boolean
|
|
||||||
enableShmVolume:
|
|
||||||
type: boolean
|
|
||||||
init_containers: # deprecated
|
|
||||||
type: array
|
|
||||||
nullable: true
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
additionalProperties: true
|
|
||||||
initContainers:
|
initContainers:
|
||||||
type: array
|
type: array
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
logicalBackupSchedule:
|
logicalBackupSchedule:
|
||||||
type: string
|
type: string
|
||||||
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
|
pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
|
||||||
|
|
@ -273,18 +229,28 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
ttl:
|
|
||||||
type: integer
|
|
||||||
loop_wait:
|
loop_wait:
|
||||||
type: integer
|
type: integer
|
||||||
retry_timeout:
|
|
||||||
type: integer
|
|
||||||
maximum_lag_on_failover:
|
maximum_lag_on_failover:
|
||||||
type: integer
|
type: integer
|
||||||
|
pg_hba:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
retry_timeout:
|
||||||
|
type: integer
|
||||||
|
slots:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
synchronous_mode:
|
synchronous_mode:
|
||||||
type: boolean
|
type: boolean
|
||||||
synchronous_mode_strict:
|
synchronous_mode_strict:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
ttl:
|
||||||
|
type: integer
|
||||||
podAnnotations:
|
podAnnotations:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -293,17 +259,6 @@ spec:
|
||||||
type: string
|
type: string
|
||||||
podPriorityClassName:
|
podPriorityClassName:
|
||||||
type: string
|
type: string
|
||||||
postgresql:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- version
|
|
||||||
properties:
|
|
||||||
version:
|
|
||||||
type: string
|
|
||||||
pod_priority_class_name: # deprecated
|
|
||||||
type: string
|
|
||||||
podPriorityClassName:
|
|
||||||
type: string
|
|
||||||
postgresql:
|
postgresql:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
|
|
@ -324,91 +279,6 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: string
|
||||||
replicaLoadBalancer: # deprecated
|
|
||||||
type: boolean
|
|
||||||
resources:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- requests
|
|
||||||
- limits
|
|
||||||
properties:
|
|
||||||
limits:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- cpu
|
|
||||||
- memory
|
|
||||||
properties:
|
|
||||||
cpu:
|
|
||||||
type: string
|
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
|
||||||
# dot followed by up to three decimal digits.
|
|
||||||
#
|
|
||||||
# This is because the Kubernetes CPU resource has millis as the
|
|
||||||
# maximum precision. The actual values are checked in code
|
|
||||||
# because the regular expression would be huge and horrible and
|
|
||||||
# not very helpful in validation error messages; this one checks
|
|
||||||
# only the format of the given number.
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
|
|
||||||
pattern: '^(\d+m|\d+\.\d{1,3})$'
|
|
||||||
# Note: the value specified here must not be zero or be lower
|
|
||||||
# than the corresponding request.
|
|
||||||
memory:
|
|
||||||
type: string
|
|
||||||
# You can express memory as a plain integer or as a fixed-point
|
|
||||||
# integer using one of these suffixes: E, P, T, G, M, k. You can
|
|
||||||
# also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
|
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
||||||
# Note: the value specified here must not be zero or be lower
|
|
||||||
# than the corresponding request.
|
|
||||||
requests:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- cpu
|
|
||||||
- memory
|
|
||||||
properties:
|
|
||||||
cpu:
|
|
||||||
type: string
|
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
|
||||||
# dot followed by up to three decimal digits.
|
|
||||||
#
|
|
||||||
# This is because the Kubernetes CPU resource has millis as the
|
|
||||||
# maximum precision. The actual values are checked in code
|
|
||||||
# because the regular expression would be huge and horrible and
|
|
||||||
# not very helpful in validation error messages; this one checks
|
|
||||||
# only the format of the given number.
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
|
|
||||||
pattern: '^(\d+m|\d+\.\d{1,3})$'
|
|
||||||
# Note: the value specified here must not be zero or be higher
|
|
||||||
# than the corresponding limit.
|
|
||||||
memory:
|
|
||||||
type: string
|
|
||||||
# You can express memory as a plain integer or as a fixed-point
|
|
||||||
# integer using one of these suffixes: E, P, T, G, M, k. You can
|
|
||||||
# also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
|
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
||||||
# Note: the value specified here must not be zero or be higher
|
|
||||||
# than the corresponding limit.
|
|
||||||
sidecars:
|
|
||||||
type: array
|
|
||||||
nullable: true
|
|
||||||
items:
|
|
||||||
type: object
|
|
||||||
additionalProperties: true
|
|
||||||
spiloFSGroup:
|
|
||||||
type: integer
|
|
||||||
standby:
|
|
||||||
type: object
|
|
||||||
required:
|
|
||||||
- s3_wal_path
|
|
||||||
properties:
|
|
||||||
s3_wal_path:
|
|
||||||
type: string
|
|
||||||
preparedDatabases:
|
preparedDatabases:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -440,11 +310,10 @@ spec:
|
||||||
limits:
|
limits:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- key
|
- cpu
|
||||||
- operator
|
- memory
|
||||||
- effect
|
|
||||||
properties:
|
properties:
|
||||||
key:
|
cpu:
|
||||||
type: string
|
type: string
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
# Decimal natural followed by m, or decimal natural followed by
|
||||||
# dot followed by up to three decimal digits.
|
# dot followed by up to three decimal digits.
|
||||||
|
|
@ -459,26 +328,6 @@ spec:
|
||||||
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
||||||
# Note: the value specified here must not be zero or be lower
|
# Note: the value specified here must not be zero or be lower
|
||||||
# than the corresponding request.
|
# than the corresponding request.
|
||||||
memory:
|
|
||||||
type: string
|
|
||||||
enum:
|
|
||||||
- Equal
|
|
||||||
- Exists
|
|
||||||
value:
|
|
||||||
type: string
|
|
||||||
# Decimal natural followed by m, or decimal natural followed by
|
|
||||||
# dot followed by up to three decimal digits.
|
|
||||||
#
|
|
||||||
# This is because the Kubernetes CPU resource has millis as the
|
|
||||||
# maximum precision. The actual values are checked in code
|
|
||||||
# because the regular expression would be huge and horrible and
|
|
||||||
# not very helpful in validation error messages; this one checks
|
|
||||||
# only the format of the given number.
|
|
||||||
#
|
|
||||||
# https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
|
|
||||||
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
|
||||||
# Note: the value specified here must not be zero or be higher
|
|
||||||
# than the corresponding limit.
|
|
||||||
memory:
|
memory:
|
||||||
type: string
|
type: string
|
||||||
# You can express memory as a plain integer or as a fixed-point
|
# You can express memory as a plain integer or as a fixed-point
|
||||||
|
|
@ -489,6 +338,18 @@ spec:
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
||||||
# Note: the value specified here must not be zero or be higher
|
# Note: the value specified here must not be zero or be higher
|
||||||
# than the corresponding limit.
|
# than the corresponding limit.
|
||||||
|
requests:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- cpu
|
||||||
|
- memory
|
||||||
|
properties:
|
||||||
|
cpu:
|
||||||
|
type: string
|
||||||
|
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
||||||
|
memory:
|
||||||
|
type: string
|
||||||
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
||||||
serviceAnnotations:
|
serviceAnnotations:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
|
|
@ -498,7 +359,7 @@ spec:
|
||||||
nullable: true
|
nullable: true
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
spiloRunAsUser:
|
spiloRunAsUser:
|
||||||
type: integer
|
type: integer
|
||||||
spiloRunAsGroup:
|
spiloRunAsGroup:
|
||||||
|
|
@ -534,15 +395,20 @@ spec:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- size
|
- key
|
||||||
|
- operator
|
||||||
|
- effect
|
||||||
properties:
|
properties:
|
||||||
size:
|
key:
|
||||||
type: string
|
type: string
|
||||||
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
operator:
|
||||||
# Note: the value specified here must not be zero.
|
|
||||||
storageClass:
|
|
||||||
type: string
|
type: string
|
||||||
subPath:
|
enum:
|
||||||
|
- Equal
|
||||||
|
- Exists
|
||||||
|
value:
|
||||||
|
type: string
|
||||||
|
effect:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- NoExecute
|
- NoExecute
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ spec:
|
||||||
schema:
|
schema:
|
||||||
openAPIV3Schema:
|
openAPIV3Schema:
|
||||||
type: object
|
type: object
|
||||||
x-preserve-unknown-fields: true
|
|
||||||
required:
|
required:
|
||||||
- kind
|
- kind
|
||||||
- apiVersion
|
- apiVersion
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,6 @@ var minDisable = -1.0
|
||||||
var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
OpenAPIV3Schema: &apiextv1.JSONSchemaProps{
|
OpenAPIV3Schema: &apiextv1.JSONSchemaProps{
|
||||||
Type: "object",
|
Type: "object",
|
||||||
XPreserveUnknownFields: util.True(),
|
|
||||||
Required: []string{"kind", "apiVersion", "spec"},
|
Required: []string{"kind", "apiVersion", "spec"},
|
||||||
Properties: map[string]apiextv1.JSONSchemaProps{
|
Properties: map[string]apiextv1.JSONSchemaProps{
|
||||||
"kind": {
|
"kind": {
|
||||||
|
|
@ -136,6 +135,38 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
Type: "object",
|
Type: "object",
|
||||||
Required: []string{"numberOfInstances", "teamId", "postgresql", "volume"},
|
Required: []string{"numberOfInstances", "teamId", "postgresql", "volume"},
|
||||||
Properties: map[string]apiextv1.JSONSchemaProps{
|
Properties: map[string]apiextv1.JSONSchemaProps{
|
||||||
|
"additionalVolumes": {
|
||||||
|
Type: "array",
|
||||||
|
Items: &apiextv1.JSONSchemaPropsOrArray{
|
||||||
|
Schema: &apiextv1.JSONSchemaProps{
|
||||||
|
Type: "object",
|
||||||
|
Required: []string{"name", "mountPath", "volumeSource"},
|
||||||
|
Properties: map[string]apiextv1.JSONSchemaProps{
|
||||||
|
"name": {
|
||||||
|
Type: "string",
|
||||||
|
},
|
||||||
|
"mountPath": {
|
||||||
|
Type: "string",
|
||||||
|
},
|
||||||
|
"targetContainers": {
|
||||||
|
Type: "array",
|
||||||
|
Items: &apiextv1.JSONSchemaPropsOrArray{
|
||||||
|
Schema: &apiextv1.JSONSchemaProps{
|
||||||
|
Type: "string",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"volumeSource": {
|
||||||
|
Type: "object",
|
||||||
|
XPreserveUnknownFields: util.True(),
|
||||||
|
},
|
||||||
|
"subPath": {
|
||||||
|
Type: "string",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"allowedSourceRanges": {
|
"allowedSourceRanges": {
|
||||||
Type: "array",
|
Type: "array",
|
||||||
Nullable: true,
|
Nullable: true,
|
||||||
|
|
@ -285,9 +316,7 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
Items: &apiextv1.JSONSchemaPropsOrArray{
|
Items: &apiextv1.JSONSchemaPropsOrArray{
|
||||||
Schema: &apiextv1.JSONSchemaProps{
|
Schema: &apiextv1.JSONSchemaProps{
|
||||||
Type: "object",
|
Type: "object",
|
||||||
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
XPreserveUnknownFields: util.True(),
|
||||||
Allows: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -296,9 +325,7 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
Items: &apiextv1.JSONSchemaPropsOrArray{
|
Items: &apiextv1.JSONSchemaPropsOrArray{
|
||||||
Schema: &apiextv1.JSONSchemaProps{
|
Schema: &apiextv1.JSONSchemaProps{
|
||||||
Type: "object",
|
Type: "object",
|
||||||
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
XPreserveUnknownFields: util.True(),
|
||||||
Allows: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -330,6 +357,12 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"loop_wait": {
|
||||||
|
Type: "integer",
|
||||||
|
},
|
||||||
|
"maximum_lag_on_failover": {
|
||||||
|
Type: "integer",
|
||||||
|
},
|
||||||
"pg_hba": {
|
"pg_hba": {
|
||||||
Type: "array",
|
Type: "array",
|
||||||
Items: &apiextv1.JSONSchemaPropsOrArray{
|
Items: &apiextv1.JSONSchemaPropsOrArray{
|
||||||
|
|
@ -338,6 +371,9 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"retry_timeout": {
|
||||||
|
Type: "integer",
|
||||||
|
},
|
||||||
"slots": {
|
"slots": {
|
||||||
Type: "object",
|
Type: "object",
|
||||||
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
||||||
|
|
@ -351,24 +387,15 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"ttl": {
|
|
||||||
Type: "integer",
|
|
||||||
},
|
|
||||||
"loop_wait": {
|
|
||||||
Type: "integer",
|
|
||||||
},
|
|
||||||
"retry_timeout": {
|
|
||||||
Type: "integer",
|
|
||||||
},
|
|
||||||
"maximum_lag_on_failover": {
|
|
||||||
Type: "integer",
|
|
||||||
},
|
|
||||||
"synchronous_mode": {
|
"synchronous_mode": {
|
||||||
Type: "boolean",
|
Type: "boolean",
|
||||||
},
|
},
|
||||||
"synchronous_mode_strict": {
|
"synchronous_mode_strict": {
|
||||||
Type: "boolean",
|
Type: "boolean",
|
||||||
},
|
},
|
||||||
|
"ttl": {
|
||||||
|
Type: "integer",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"podAnnotations": {
|
"podAnnotations": {
|
||||||
|
|
@ -736,37 +763,6 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"additionalVolumes": {
|
|
||||||
Type: "array",
|
|
||||||
Items: &apiextv1.JSONSchemaPropsOrArray{
|
|
||||||
Schema: &apiextv1.JSONSchemaProps{
|
|
||||||
Type: "object",
|
|
||||||
Required: []string{"name", "mountPath", "volumeSource"},
|
|
||||||
Properties: map[string]apiextv1.JSONSchemaProps{
|
|
||||||
"name": {
|
|
||||||
Type: "string",
|
|
||||||
},
|
|
||||||
"mountPath": {
|
|
||||||
Type: "string",
|
|
||||||
},
|
|
||||||
"targetContainers": {
|
|
||||||
Type: "array",
|
|
||||||
Items: &apiextv1.JSONSchemaPropsOrArray{
|
|
||||||
Schema: &apiextv1.JSONSchemaProps{
|
|
||||||
Type: "string",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"volumeSource": {
|
|
||||||
Type: "object",
|
|
||||||
},
|
|
||||||
"subPath": {
|
|
||||||
Type: "string",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
|
|
@ -785,7 +781,6 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{
|
var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
OpenAPIV3Schema: &apiextv1.JSONSchemaProps{
|
OpenAPIV3Schema: &apiextv1.JSONSchemaProps{
|
||||||
Type: "object",
|
Type: "object",
|
||||||
XPreserveUnknownFields: util.True(),
|
|
||||||
Required: []string{"kind", "apiVersion", "configuration"},
|
Required: []string{"kind", "apiVersion", "configuration"},
|
||||||
Properties: map[string]apiextv1.JSONSchemaProps{
|
Properties: map[string]apiextv1.JSONSchemaProps{
|
||||||
"kind": {
|
"kind": {
|
||||||
|
|
@ -857,9 +852,7 @@ var OperatorConfigCRDResourceValidation = apiextv1.CustomResourceValidation{
|
||||||
Items: &apiextv1.JSONSchemaPropsOrArray{
|
Items: &apiextv1.JSONSchemaPropsOrArray{
|
||||||
Schema: &apiextv1.JSONSchemaProps{
|
Schema: &apiextv1.JSONSchemaProps{
|
||||||
Type: "object",
|
Type: "object",
|
||||||
AdditionalProperties: &apiextv1.JSONSchemaPropsOrBool{
|
XPreserveUnknownFields: util.True(),
|
||||||
Allows: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -532,6 +532,11 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) {
|
||||||
*out = new(bool)
|
*out = new(bool)
|
||||||
**out = **in
|
**out = **in
|
||||||
}
|
}
|
||||||
|
if in.EnableReplicaConnectionPooler != nil {
|
||||||
|
in, out := &in.EnableReplicaConnectionPooler, &out.EnableReplicaConnectionPooler
|
||||||
|
*out = new(bool)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
if in.ConnectionPooler != nil {
|
if in.ConnectionPooler != nil {
|
||||||
in, out := &in.ConnectionPooler, &out.ConnectionPooler
|
in, out := &in.ConnectionPooler, &out.ConnectionPooler
|
||||||
*out = new(ConnectionPooler)
|
*out = new(ConnectionPooler)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue