diff --git a/postgres-operator/resources/crd/pgadmins.yaml b/postgres-operator/resources/crd/pgadmins.yaml index 1abbaa9..e0586f7 100644 --- a/postgres-operator/resources/crd/pgadmins.yaml +++ b/postgres-operator/resources/crd/pgadmins.yaml @@ -2,11 +2,11 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 + controller-gen.kubebuilder.io/version: v0.9.0 creationTimestamp: null labels: app.kubernetes.io/name: pgo - app.kubernetes.io/version: 5.5.0 + app.kubernetes.io/version: 5.6.0 name: pgadmins.postgres-operator.crunchydata.com spec: group: postgres-operator.crunchydata.com @@ -20,7 +20,7 @@ spec: - name: v1beta1 schema: openAPIV3Schema: - description: PGAdmin is the Schema for the pgadmins API + description: PGAdmin is the Schema for the PGAdmin API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -860,6 +860,24 @@ spec: to any of these values will be loaded without validation. Be careful, as you may put pgAdmin into an unusable state. properties: + configDatabaseURI: + description: 'A Secret containing the value for the CONFIG_DATABASE_URI + setting. More info: https://www.pgadmin.org/docs/pgadmin4/latest/external_database.html' + properties: + key: + description: The key of the secret to select from. Must be + a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + optional: + description: Specify whether the Secret or its key must be + defined + type: boolean + required: + - key + type: object files: description: Files allows the user to mount projected volumes into the pgAdmin container so that files can be referenced by @@ -1082,6 +1100,10 @@ spec: type: object type: object type: array + gunicorn: + description: 'Settings for the gunicorn server. More info: https://docs.gunicorn.org/en/latest/settings.html' + type: object + x-kubernetes-preserve-unknown-fields: true ldapBindPassword: description: 'A Secret containing the value for the LDAP_BIND_PASSWORD setting. More info: https://www.pgadmin.org/docs/pgadmin4/latest/ldap.html' @@ -1347,6 +1369,10 @@ spec: unique in the pgAdmin's ServerGroups since it becomes the ServerGroup name in pgAdmin. type: string + postgresClusterName: + description: PostgresClusterName selects one cluster to add + to pgAdmin by name. + type: string postgresClusterSelector: description: PostgresClusterSelector selects clusters to dynamically add to pgAdmin by matching labels. An empty selector like @@ -1395,9 +1421,18 @@ spec: type: object required: - name - - postgresClusterSelector type: object + x-kubernetes-validations: + - message: exactly one of "postgresClusterName" or "postgresClusterSelector" + is required + rule: '[has(self.postgresClusterName),has(self.postgresClusterSelector)].exists_one(x,x)' type: array + serviceName: + description: ServiceName will be used as the name of a ClusterIP service + pointing to the pgAdmin pod and port. If the service already exists, + PGO will update the service. For more information about services + reference the Kubernetes and CrunchyData documentation. https://kubernetes.io/docs/concepts/services-networking/service/ + type: string tolerations: description: 'Tolerations of the PGAdmin pod. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration' items: @@ -1438,6 +1473,50 @@ spec: type: string type: object type: array + users: + description: pgAdmin users that are managed via the PGAdmin spec. + Users can still be added via the pgAdmin GUI, but those users will + not show up here. + items: + properties: + passwordRef: + description: A reference to the secret that holds the user's + password. + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + role: + description: Role determines whether the user has admin privileges + or not. Defaults to User. Valid options are Administrator + and User. + enum: + - Administrator + - User + type: string + username: + description: The username for User in pgAdmin. Must be unique + in the pgAdmin's users list. + type: string + required: + - passwordRef + - username + type: object + type: array + x-kubernetes-list-map-keys: + - username + x-kubernetes-list-type: map required: - dataVolumeClaimSpec type: object @@ -1445,9 +1524,8 @@ spec: description: PGAdminStatus defines the observed state of PGAdmin properties: conditions: - description: 'conditions represent the observations of pgadmin''s - current state. Known .status.conditions.type are: "PersistentVolumeResizing", - "Progressing", "ProxyAvailable"' + description: 'conditions represent the observations of pgAdmin''s + current state. Known .status.conditions.type is: "PersistentVolumeResizing"' items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct @@ -1518,6 +1596,14 @@ spec: x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map + imageSHA: + description: ImageSHA represents the image SHA for the container running + pgAdmin. + type: string + majorVersion: + description: MajorVersion represents the major version of the running + pgAdmin. + type: integer observedGeneration: description: observedGeneration represents the .metadata.generation on which the status was based. diff --git a/postgres-operator/resources/crd/pgupgrades.yaml b/postgres-operator/resources/crd/pgupgrades.yaml index cbe5a5e..d621b50 100644 --- a/postgres-operator/resources/crd/pgupgrades.yaml +++ b/postgres-operator/resources/crd/pgupgrades.yaml @@ -2,11 +2,11 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 + controller-gen.kubebuilder.io/version: v0.9.0 creationTimestamp: null labels: app.kubernetes.io/name: pgo - app.kubernetes.io/version: 5.5.0 + app.kubernetes.io/version: 5.6.0 name: pgupgrades.postgres-operator.crunchydata.com spec: group: postgres-operator.crunchydata.com diff --git a/postgres-operator/resources/crd/postgresclusters.yaml b/postgres-operator/resources/crd/postgresclusters.yaml index ddd7a66..c0558b6 100644 --- a/postgres-operator/resources/crd/postgresclusters.yaml +++ b/postgres-operator/resources/crd/postgresclusters.yaml @@ -2,11 +2,11 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.8.0 + controller-gen.kubebuilder.io/version: v0.9.0 creationTimestamp: null labels: app.kubernetes.io/name: pgo - app.kubernetes.io/version: 5.5.0 + app.kubernetes.io/version: 5.6.0 name: postgresclusters.postgres-operator.crunchydata.com spec: group: postgres-operator.crunchydata.com @@ -2695,7 +2695,7 @@ spec: - bucket type: object name: - description: The name of the the repository + description: The name of the repository pattern: ^repo[1-4] type: string s3: @@ -4438,10 +4438,10 @@ spec: properties: pgbackrest: description: 'Defines a pgBackRest cloud-based data source that - can be used to pre-populate the the PostgreSQL data directory - for a new PostgreSQL cluster using a pgBackRest restore. The - PGBackRest field is incompatible with the PostgresCluster field: - only one data source can be used for pre-populating a new PostgreSQL + can be used to pre-populate the PostgreSQL data directory for + a new PostgreSQL cluster using a pgBackRest restore. The PGBackRest + field is incompatible with the PostgresCluster field: only one + data source can be used for pre-populating a new PostgreSQL cluster' properties: affinity: @@ -5615,7 +5615,7 @@ spec: - bucket type: object name: - description: The name of the the repository + description: The name of the repository pattern: ^repo[1-4] type: string s3: @@ -10396,7 +10396,7 @@ spec: description: 'Patroni dynamic configuration settings. Changes to this value will be automatically reloaded without validation. Changes to certain PostgreSQL parameters cause PostgreSQL to - restart. More info: https://patroni.readthedocs.io/en/latest/SETTINGS.html' + restart. More info: https://patroni.readthedocs.io/en/latest/dynamic_configuration.html' type: object x-kubernetes-preserve-unknown-fields: true leaderLeaseDurationSeconds: @@ -13060,6 +13060,18 @@ spec: service: description: Specification of the service that exposes PgBouncer. properties: + externalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string + internalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string metadata: description: Metadata contains metadata for custom resources properties: @@ -13319,10 +13331,66 @@ spec: required: - pgBouncer type: object + replicaService: + description: Specification of the service that exposes PostgreSQL + replica instances + properties: + externalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string + internalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string + metadata: + description: Metadata contains metadata for custom resources + properties: + annotations: + additionalProperties: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + type: object + nodePort: + description: The port on which this service is exposed when type + is NodePort or LoadBalancer. Value must be in-range and not + in use or the operation will fail. If unspecified, a port will + be allocated if this Service requires one. - https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + format: int32 + type: integer + type: + default: ClusterIP + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types' + enum: + - ClusterIP + - NodePort + - LoadBalancer + type: string + type: object service: description: Specification of the service that exposes the PostgreSQL primary instance. properties: + externalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string + internalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string metadata: description: Metadata contains metadata for custom resources properties: @@ -14793,6 +14861,18 @@ spec: service: description: Specification of the service that exposes pgAdmin. properties: + externalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string + internalTrafficPolicy: + description: 'More info: https://kubernetes.io/docs/concepts/services-networking/service/#traffic-policies' + enum: + - Cluster + - Local + type: string metadata: description: Metadata contains metadata for custom resources properties: @@ -15048,8 +15128,14 @@ spec: options: description: 'ALTER ROLE options except for PASSWORD. This field is ignored for the "postgres" user. More info: https://www.postgresql.org/docs/current/role-attributes.html' + maxLength: 200 pattern: ^[^;]*$ type: string + x-kubernetes-validations: + - message: cannot assign password + rule: '!self.matches("(?i:PASSWORD)")' + - message: cannot contain comments + rule: '!self.matches("(?:--|/[*]|[*]/)")' password: description: Properties of the password generated for this user. properties: @@ -15070,6 +15156,7 @@ spec: required: - name type: object + maxItems: 64 type: array x-kubernetes-list-map-keys: - name @@ -15157,6 +15244,11 @@ spec: description: Current state of PostgreSQL instances. items: properties: + desiredPGDataVolume: + additionalProperties: + type: string + description: Desired Size of the pgData volume + type: object name: type: string readyReplicas: @@ -15291,7 +15383,7 @@ spec: type: boolean repoOptionsHash: description: A hash of the required fields in the spec for - defining an Azure, GCS or S3 repository, Utilizd to detect + defining an Azure, GCS or S3 repository, Utilized to detect changes to these fields and then execute pgBackRest stanza-create commands accordingly. type: string @@ -15425,8 +15517,6 @@ spec: type: object type: object registrationRequired: - description: Version information for installations with a registration - requirement. properties: pgoVersion: type: string @@ -15439,8 +15529,6 @@ spec: description: The instance set associated with the startupInstance type: string tokenRequired: - description: Signals the need for a token to be applied when registration - is required. type: string userInterface: description: Current state of the PostgreSQL user interface.