--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.21.0 name: postgresqlinstances.database.ddupan.top spec: group: database.ddupan.top names: kind: PostgreSQLInstance listKind: PostgreSQLInstanceList plural: postgresqlinstances shortNames: - pginstance singular: postgresqlinstance scope: Cluster versions: - additionalPrinterColumns: - jsonPath: .spec.endpoint.host name: Endpoint type: string - jsonPath: .status.phase name: Phase type: string - jsonPath: .status.conditions[?(@.type=="Ready")].status name: Ready type: string - jsonPath: .metadata.creationTimestamp name: Age type: date name: v1alpha1 schema: openAPIV3Schema: description: PostgreSQLInstance is the Schema for the postgresqlinstances API. properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: PostgreSQLInstanceSpec defines an external PostgreSQL server managed by the controller. properties: adminCredentialRef: description: |- AdminCredentialRef identifies the OpenBao KV v2 record containing the administrative username and password. Values are never copied into this resource. properties: passwordKey: default: password description: PasswordKey is the key containing the administrative password. minLength: 1 type: string path: description: Path is mount-relative and must not include the KV v2 data or metadata API layer. maxLength: 512 minLength: 1 pattern: ^[^/]+(/[^/]+)*$ type: string x-kubernetes-validations: - message: path must not contain . or .. segments rule: self.split('/').all(segment, segment != '.' && segment != '..') - message: path must not include the KV v2 data or metadata API layer rule: self.split('/')[0] != 'data' && self.split('/')[0] != 'metadata' usernameKey: default: username description: UsernameKey is the key containing the administrative username. minLength: 1 type: string required: - path type: object allowedExtensions: description: |- AllowedExtensions is the set of extensions tenants may request. Removing an item does not remove it from databases where it already exists. items: type: string type: array x-kubernetes-list-type: set endpoint: description: Endpoint identifies the PostgreSQL server and its administrative database. properties: database: default: postgres description: Database is used for administrative connections and the ownership registry. pattern: ^[a-z][a-z0-9_]{0,62}$ type: string host: description: Host is the DNS name used as a connection target and TLS server name. minLength: 1 type: string hostaddr: description: HostAddr is an IPv4 or IPv6 address covered by the server certificate IP SAN. format: ip type: string port: default: 5432 description: Port is the PostgreSQL TCP port. format: int32 maximum: 65535 minimum: 1 type: integer sslMode: default: verify-full description: SSLMode controls PostgreSQL TLS verification. enum: - disable - require - verify-ca - verify-full type: string required: - host - hostaddr type: object required: - adminCredentialRef - endpoint type: object status: description: PostgreSQLInstanceStatus defines the observed state of PostgreSQLInstance. properties: conditions: description: Conditions contains the current Ready condition and any future auxiliary conditions. items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map observedGeneration: description: ObservedGeneration is the most recent generation for which reconciliation reached a conclusion. format: int64 type: integer phase: description: |- Phase is the authoritative checkpoint of the controller workflow. External state is still read back before and after every operation. enum: - Pending - Validating - InitializingRegistry - Ready - Deleting type: string postgresqlVersion: description: PostgreSQLVersion is reported by the target server for diagnostics. type: string type: object required: - metadata - spec type: object served: true storage: true subresources: status: {}