--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: DevPreview operatorframework.io/installed-alongside-56529da9d339fb48: openshift-operators/cluster-observability-operator.v1.4.0 creationTimestamp: "2026-03-18T10:20:56Z" generation: 2 labels: olm.managed: "true" operators.coreos.com/cluster-observability-operator.openshift-operators: "" managedFields: - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:controller-gen.kubebuilder.io/version: {} f:observability.openshift.io/api-support: {} f:operatorframework.io/installed-alongside-56529da9d339fb48: {} f:labels: .: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:webhook: .: {} f:clientConfig: .: {} f:service: .: {} f:path: {} f:port: {} f:conversionReviewVersions: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2026-03-18T10:20:56Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:status: f:acceptedNames: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:conditions: k:{"type":"Established"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"NamesAccepted"}: .: {} f:lastTransitionTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} manager: kube-apiserver operation: Update subresource: status time: "2026-03-18T10:20:56Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/cluster-observability-operator.openshift-operators: {} f:spec: f:conversion: f:webhook: f:clientConfig: f:caBundle: {} f:service: f:name: {} f:namespace: {} manager: olm operation: Update time: "2026-03-18T10:21:09Z" name: persesglobaldatasources.perses.dev resourceVersion: "21622" uid: 6f556bab-084b-4c41-bbba-21aa46d80277 spec: conversion: strategy: Webhook webhook: clientConfig: caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ2RENDQVdLZ0F3SUJBZ0lJS0s1R2dDN0l3cUl3Q2dZSUtvWkl6ajBFQXdJd1FqRVdNQlFHQTFVRUNoTU4KVW1Wa0lFaGhkQ3dnU1c1akxqRW9NQ1lHQTFVRUF4TWZiMnh0TFhObGJHWnphV2R1WldRdE1qaGhaVFEyT0RBeQpaV000WXpKaE1qQWVGdzB5TmpBek1UZ3hNREl4TURoYUZ3MHlPREF6TVRjeE1ESXhNRGhhTUVJeEZqQVVCZ05WCkJBb1REVkpsWkNCSVlYUXNJRWx1WXk0eEtEQW1CZ05WQkFNVEgyOXNiUzF6Wld4bWMybG5ibVZrTFRJNFlXVTAKTmpnd01tVmpPR015WVRJd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFRVmxTV09RdGkzS3FnOQpTSHN6VTZ4Uk4xQXdPU3ArOTFMbmlNaU1jQWFOS3E4QWxSS3llUzRBUEFlVjRReW04WmpPakxISFpYY3h5NWlsClhrZ3ZUMmx5bzBJd1FEQU9CZ05WSFE4QkFmOEVCQU1DQWdRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlYKSFE0RUZnUVVYTmdpbXFVajBqemFrSkh0dzdpVHBBcFUyWk13Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU1vVQo4bDlVUmhWVURFMVJibUZKY0JvU3NHa0tIQ0dPRVMxeFVQOUYvWWd1QWlCN0pKaUpQaTVVbHRROGVwNUYwcEcrCnljUk9WYjRTbTFXczBPSEwxUi9yamc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== service: name: perses-operator-service namespace: openshift-operators path: /convert port: 443 conversionReviewVersions: - v1 group: perses.dev names: kind: PersesGlobalDatasource listKind: PersesGlobalDatasourceList plural: persesglobaldatasources shortNames: - pergds singular: persesglobaldatasource scope: Cluster versions: - name: v1alpha2 schema: openAPIV3Schema: description: PersesGlobalDatasource is the Schema for the PersesGlobalDatasources 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: DatasourceSpec defines the desired state of a Perses datasource properties: client: description: Client authentication and TLS configuration for the datasource properties: basicAuth: description: BasicAuth basic auth config for perses client properties: name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string passwordPath: description: Path to password minLength: 1 type: string type: description: Type source type of secret enum: - secret - configmap - file type: string username: description: Username for basic auth minLength: 1 type: string required: - passwordPath - type - username type: object kubernetesAuth: description: KubernetesAuth configuration for perses client properties: enable: description: Enable kubernetes auth for perses client type: boolean required: - enable type: object oauth: description: OAuth configuration for perses client properties: authStyle: description: |- AuthStyle optionally specifies how the endpoint wants the client ID & client secret sent. The zero value means to auto-detect. type: integer clientIDPath: description: Path to client id type: string clientSecretPath: description: Path to client secret type: string endpointParams: additionalProperties: items: type: string type: array description: EndpointParams specifies additional parameters for requests to the token endpoint. type: object name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string scopes: description: Scope specifies optional requested permissions. items: type: string type: array tokenURL: description: |- TokenURL is the resource server's token endpoint URL. This is a constant specific to each server. minLength: 1 type: string type: description: Type source type of secret enum: - secret - configmap - file type: string required: - tokenURL - type type: object tls: description: TLS the equivalent to the tls_config for perses client properties: caCert: description: CaCert to verify the perses certificate properties: certPath: description: Path to Certificate minLength: 1 type: string name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string privateKeyPath: description: Path to Private key certificate type: string type: description: Type source type of secret enum: - secret - configmap - file type: string required: - certPath - type type: object enable: description: Enable TLS connection to perses type: boolean insecureSkipVerify: description: InsecureSkipVerify skip verify of perses certificate type: boolean userCert: description: UserCert client cert/key for mTLS properties: certPath: description: Path to Certificate minLength: 1 type: string name: description: Name of basic auth k8s resource (when type is secret or configmap) type: string namespace: description: Namespace of certificate k8s resource (when type is secret or configmap) type: string privateKeyPath: description: Path to Private key certificate type: string type: description: Type source type of secret enum: - secret - configmap - file type: string required: - certPath - type type: object required: - enable type: object type: object config: description: Perses datasource configuration properties: default: type: boolean display: properties: description: type: string name: type: string type: object plugin: description: |- Plugin will contain the datasource configuration. The data typed is available in Cue. properties: kind: description: Kind is the type of the plugin (e.g., Panel, Variable, Datasource, etc.). type: string metadata: description: Metadata is an optional field that contains additional information such as version and registry of the plugin. properties: registry: description: 'Registry is optional. If not provided, it means the default registry: "perses.dev".' type: string version: description: Version is optional. If not provided, it means the latest version available in the Perses instance. type: string type: object spec: x-kubernetes-preserve-unknown-fields: true required: - kind - spec type: object required: - default - plugin type: object instanceSelector: description: InstanceSelector selects Perses instances where this datasource will be created properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: |- operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: |- values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array x-kubernetes-list-type: atomic required: - key - operator type: object type: array x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string description: |- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic required: - config type: object status: description: PersesGlobalDatasourceStatus defines the observed state of PersesGlobalDatasource properties: conditions: description: Conditions represent the latest observations of the PersesGlobalDatasource resource state 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 type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: PersesGlobalDatasource listKind: PersesGlobalDatasourceList plural: persesglobaldatasources shortNames: - pergds singular: persesglobaldatasource conditions: - lastTransitionTime: "2026-03-18T10:20:56Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2026-03-18T10:20:56Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1alpha2