--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview operatorframework.io/installed-alongside-6f3f0ea9e10ac419: openshift-operators/cluster-observability-operator.v1.3.0 creationTimestamp: "2025-12-05T12:58:23Z" generation: 1 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-6f3f0ea9e10ac419: {} f:labels: .: {} f:olm.managed: {} f:spec: f:conversion: .: {} f:strategy: {} f:group: {} f:names: f:kind: {} f:listKind: {} f:plural: {} f:shortNames: {} f:singular: {} f:scope: {} f:versions: {} manager: catalog operation: Update time: "2025-12-05T12:58:23Z" - 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: "2025-12-05T12:58:24Z" - apiVersion: apiextensions.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:operators.coreos.com/cluster-observability-operator.openshift-operators: {} manager: olm operation: Update time: "2025-12-05T12:59:08Z" name: observabilityinstallers.observability.openshift.io resourceVersion: "21322" uid: d1e440e5-6c8c-41d5-8486-f72d38edae06 spec: conversion: strategy: None group: observability.openshift.io names: kind: ObservabilityInstaller listKind: ObservabilityInstallerList plural: observabilityinstallers shortNames: - obsinstall - obsinst singular: observabilityinstaller scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.opentelemetry name: OpenTelemetry type: string - jsonPath: .status.tempo name: Tempo type: string name: v1alpha1 schema: openAPIV3Schema: description: ObservabilityInstaller defines the desired state of the observability stack. 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: Spec defines the desired state of the observability installer. properties: capabilities: description: |- Capabilities defines the observability capabilities. Each capability has to be enabled explicitly. properties: tracing: description: |- Tracing defines the tracing capabilities. The tracing capability install an OpenTelemetry Operator instance and a Tempo instance. The Tempo instance is configured with a single tenant called application. properties: enabled: description: |- Enabled indicates whether the capability is enabled and whether the operator should deploy an instance. By default, it is set to false. type: boolean operators: description: Operators defines the operators installation for the capability. properties: install: description: |- Install indicates whether the operator(s) used by the capability should be installed via OLM. When the capability is enabled, the install is set to true, otherwise it is set to false. This field can be used to install the operator(s) without installing any operands. type: boolean type: object storage: description: Storage defines the storage for the tracing capability properties: objectStorage: description: ObjectStorageSpec defines the object storage configuration for tracing. properties: azure: description: Azure defines the Azure Blob Storage configuration. properties: accountKeySecret: description: AccountKey is a reference to a secret containing the account key for the Azure Storage account. properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object accountName: description: AccountName is the name of the Azure Storage account. type: string container: description: Container is the name of the Azure Blob Storage container. type: string required: - accountKeySecret - accountName - container type: object azureWIF: description: AzureWIF defines the Azure Blob Storage configuration using a Workload Identity Federation. properties: accountName: description: AccountName is the name of the Azure Storage account. type: string audience: description: Audience is the optional audience for the Azure Workload Identity Federation. type: string clientID: description: ClientID is the client ID of the Azure Active Directory application. type: string container: description: Container is the name of the Azure Blob Storage container. type: string tenantID: description: TenantID is the tenant ID of the Azure Active Directory. type: string required: - accountName - clientID - container - tenantID type: object gcs: description: GCS defines the Google Cloud Storage configuration. properties: bucket: description: Bucket is the name of the Google Cloud Storage bucket. type: string keyJSONSecret: description: KeyJSON is the key.json file encoded in a secret. properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object required: - bucket - keyJSONSecret type: object gcsWIF: description: GCSSToken defines the Google Cloud Storage configuration using short-lived tokens. properties: audience: description: Audience is the optional audience. type: string bucket: description: Bucket is the name of the Google Cloud Storage bucket. type: string keyJSONSecret: description: KeyJSON is the key.json file encoded in a secret. properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object required: - bucket - keyJSONSecret type: object s3: description: S3 defines the S3 object storage configuration. properties: accessKeyID: description: AccessKeyID is the access key ID for the S3 bucket. type: string accessKeySecret: description: AccessKeySecret is a reference to a secret containing the access key secret for the S3. properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object bucket: description: Bucket is the name of the S3 bucket. type: string endpoint: description: Endpoint is the S3 endpoint URL. type: string region: description: Region is the region where the S3 bucket is located. type: string required: - accessKeyID - accessKeySecret - bucket - endpoint type: object s3CCO: description: S3CCO defines the S3 object storage configuration using CCO. properties: bucket: description: Bucket is the name of the S3 bucket. type: string region: description: Region is the region where the S3 bucket is located. type: string required: - bucket type: object s3STS: description: S3STS defines the S3 object storage configuration using short-lived credentials. properties: bucket: description: Bucket is the name of the S3 bucket. type: string region: description: Region is the region where the S3 bucket is located. type: string roleARN: description: RoleARN is the ARN of the IAM role to assume for accessing the S3 bucket. type: string required: - bucket - roleARN type: object tls: description: TLS configuration for reaching the object storage endpoint. properties: caConfigMap: description: CAConfigMap is the name of a ConfigMap containing a CA certificate (e.g. service-ca.crt). properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object certSecret: description: CertSecret is the name of a Secret containing a certificate (e.g. tls.crt). properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object keySecret: description: KeySecret is the name of a Secret containing a private key (e.g. tls.key). properties: key: description: Key contains the name of the key inside the referenced Secret. type: string name: description: SecretName contains the name of the Secret containing the referenced value. type: string required: - key - name type: object minVersion: description: MinVersion defines the minimum acceptable TLS version. type: string type: object x-kubernetes-validations: - message: KeySecret and CertSecret must be set together rule: (has(self.keySecret) && has(self.certSecret)) || (!has(self.keySecret) && !has(self.certSecret)) type: object x-kubernetes-validations: - message: Only one or zero storage configurations can be specified rule: '[has(self.s3), has(self.s3STS), has(self.s3CCO), has(self.azure), has(self.azureWIF), has(self.gcs), has(self.gcsWIF)].filter(x, x).size() <= 1' type: object type: object x-kubernetes-validations: - message: Storage configuration is required when tracing is enabled rule: (!has(self.enabled) || !self.enabled) || [has(self.storage.objectStorage.s3), has(self.storage.objectStorage.s3STS), has(self.storage.objectStorage.s3CCO), has(self.storage.objectStorage.azure), has(self.storage.objectStorage.azureWIF), has(self.storage.objectStorage.gcs), has(self.storage.objectStorage.gcsWIF)].filter(x, x).size() > 0 type: object type: object status: description: Status of the signal manager. properties: conditions: description: Conditions provide status information about the instance. 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-type: atomic opentelemetry: description: |- OpenTelemetry defines the status of the OpenTelemetry capability. The value is in the form of instance namespace/name (version) type: string tempo: description: |- Tempo defines the status of the Tempo capability. The value is in the form of instance namespace/name (version) type: string type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: ObservabilityInstaller listKind: ObservabilityInstallerList plural: observabilityinstallers shortNames: - obsinstall - obsinst singular: observabilityinstaller conditions: - lastTransitionTime: "2025-12-05T12:58:24Z" message: no conflicts found reason: NoConflicts status: "True" type: NamesAccepted - lastTransitionTime: "2025-12-05T12:58:24Z" message: the initial names have been accepted reason: InitialNamesAccepted status: "True" type: Established storedVersions: - v1alpha1