apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "MonitoringStack", "metadata": { "labels": { "mso": "example" }, "name": "sample-monitoring-stack" }, "spec": { "logLevel": "debug", "resourceSelector": { "matchLabels": { "app": "demo" } }, "retention": "1d" } }, { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "ThanosQuerier", "metadata": { "name": "example-thanos" }, "spec": { "selector": { "matchLabels": { "mso": "example" } } } } ] capabilities: Basic Install categories: Monitoring certified: "false" containerImage: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e createdAt: "2025-06-24T11:30:26Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. features.operators.openshift.io/cnf: "false" features.operators.openshift.io/cni: "false" features.operators.openshift.io/csi: "false" features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "false" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: global-operators olm.operatorNamespace: openshift-operators olm.skipRange: '>=..0 <1.2.2' operatorframework.io/cluster-monitoring: "true" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Alertmanager","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"AlertmanagerConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"MonitoringStack","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PodMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Probe","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Prometheus","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusAgent","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusRule","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ScrapeConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ServiceMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosQuerier","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosRuler","version":"v1"}},{"type":"olm.gvk","value":{"group":"observability.openshift.io","kind":"UIPlugin","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"Perses","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDashboard","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDatasource","version":"v1alpha1"}},{"type":"olm.package","value":{"packageName":"cluster-observability-operator","version":"1.2.2"}}]}' operatorframework.io/suggested-namespace: openshift-cluster-observability-operator operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/internal-objects: |- [ "prometheuses.monitoring.rhobs", "alertmanagers.monitoring.rhobs", "thanosrulers.monitoring.rhobs", "prometheusagents.monitoring.rhobs", "perses.perses.dev" ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator support: Cluster Observability (https://issues.redhat.com/projects/COO/) creationTimestamp: "2025-10-11T10:49:43Z" generation: 1 labels: olm.copiedFrom: openshift-operators olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.arm64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: cluster-observability-operator.v1.2.2 namespace: openstack resourceVersion: "30392" uid: f3e00ae9-972d-4ccd-a044-6bd87f57e00c spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems displayName: AlertmanagerConfig kind: AlertmanagerConfig name: alertmanagerconfigs.monitoring.rhobs version: v1alpha1 - description: Alertmanager describes an Alertmanager cluster displayName: Alertmanager kind: Alertmanager name: alertmanagers.monitoring.rhobs version: v1 - description: MonitoringStack is the Schema for the monitoringstacks API displayName: MonitoringStack kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - description: Perses is the Schema for the perses API displayName: Perses kind: Perses name: perses.perses.dev version: v1alpha1 - description: A Perses Dashboard displayName: Perses Dashboard kind: PersesDashboard name: persesdashboards.perses.dev version: v1alpha1 - description: A Perses Datasource displayName: Perses Datasource kind: PersesDatasource name: persesdatasources.perses.dev version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor name: podmonitors.monitoring.rhobs version: v1 - description: Probe defines monitoring for a set of static targets or ingresses displayName: Probe kind: Probe name: probes.monitoring.rhobs version: v1 - description: PrometheusAgent defines a Prometheus agent deployment displayName: PrometheusAgent kind: PrometheusAgent name: prometheusagents.monitoring.rhobs version: v1alpha1 - description: Prometheus defines a Prometheus deployment displayName: Prometheus kind: Prometheus name: prometheuses.monitoring.rhobs version: v1 - description: PrometheusRule defines recording and alerting rules for a Prometheus instance displayName: PrometheusRule kind: PrometheusRule name: prometheusrules.monitoring.rhobs version: v1 - description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration displayName: ScrapeConfig kind: ScrapeConfig name: scrapeconfigs.monitoring.rhobs version: v1alpha1 - description: ServiceMonitor defines monitoring for a set of services displayName: ServiceMonitor kind: ServiceMonitor name: servicemonitors.monitoring.rhobs version: v1 - description: ThanosQuerier outlines the Thanos querier components, managed by this stack displayName: ThanosQuerier kind: ThanosQuerier name: thanosqueriers.monitoring.rhobs version: v1alpha1 - description: ThanosRuler defines a ThanosRuler deployment displayName: ThanosRuler kind: ThanosRuler name: thanosrulers.monitoring.rhobs version: v1 - description: UIPlugin defines a console plugin for observability displayName: UIPlugin kind: UIPlugin name: uiplugins.observability.openshift.io version: v1alpha1 description: |- Cluster Observability Operator is a Go based Kubernetes operator to easily setup and manage various observability tools. ### Supported Features - Setup multiple Highly Available Monitoring stack using Prometheus, Alertmanager and Thanos Querier - Customizable configuration for managing Prometheus deployments - Customizable configuration for managing Alertmanager deployments - Customizable configuration for managing Thanos Querier deployments - Setup console plugins - Setup korrel8r - Setup Perses - Setup Cluster Health Analyzer ### Documentation - **[Documentation](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/cluster_observability_operator/index)** ### License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) displayName: Cluster Observability Operator icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC1kMWI4NDIzOC0wYzgxLTQ5MjctOGQ4Mi03OTcyN2Y5OGZjYWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4IDM4Ij4KPHRpdGxlPkNsdXN0ZXIgb2JzZXJ2YWJpbGl0eTwvdGl0bGU+CjxkZXNjPmNsb3VkPC9kZXNjPgo8bWV0YWRhdGE+PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOC4wLWMwMDEgMS4wMDAwMDAsIDAwMDAvMDAvMDAtMDA6MDA6MDAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8IS0tIG1ldGFkYXRhIGZpZWxkcyAtLT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InciPz48L21ldGFkYXRhPgo8ZGVmcz48c3R5bGU+LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhe2ZpbGw6I2UwZTBlMDt9LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhLC51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCwudXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgsLnV1aWQtNGJlZjgyMGItNTZjOS00N2U3LTgyYTMtMmRiOGQ4YzdiMTEye3N0cm9rZS13aWR0aDowcHg7fS51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMHtmaWxsOiMwMDA7fS51dWlkLWYwMzIxNzhlLWJkNTAtNGRlNy1iNzczLTY2NWJmZDVjNWJiOHtmaWxsOiNlMDA7fS51dWlkLTRiZWY4MjBiLTU2YzktNDdlNy04MmEzLTJkYjhkOGM3YjExMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPgo8cmVjdCBjbGFzcz0idXVpZC00YmVmODIwYi01NmM5LTQ3ZTctODJhMy0yZGI4ZDhjN2IxMTIiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+CjxwYXRoIGNsYXNzPSJ1dWlkLTI0YjBkOTdiLTY4MWUtNGRhNi1hMWM3LTc2NzFhZTU3NTMyYSIgZD0iTTI4LDIuMjVjNC4yNzM0LDAsNy43NSwzLjQ3NjYsNy43NSw3Ljc1djE4YzAsNC4yNzM0LTMuNDc2Niw3Ljc1LTcuNzUsNy43NUgxMGMtNC4yNzM0LDAtNy43NS0zLjQ3NjYtNy43NS03Ljc1VjEwYzAtNC4yNzM0LDMuNDc2Ni03Ljc1LDcuNzUtNy43NWgxOE0yOCwxSDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz4KPHBhdGggY2xhc3M9InV1aWQtZjAzMjE3OGUtYmQ1MC00ZGU3LWI3NzMtNjY1YmZkNWM1YmI4IiBkPSJNMjEuMzc1LDE5YzAsLjM0NTIuMjgwMy42MjUuNjI1LjYyNXMuNjI1LS4yNzk4LjYyNS0uNjI1YzAtMS45OTktMS42MjYtMy42MjUtMy42MjUtMy42MjUtLjM0NDcsMC0uNjI1LjI3OTgtLjYyNS42MjVzLjI4MDMuNjI1LjYyNS42MjVjMS4zMDk2LDAsMi4zNzUsMS4wNjU0LDIuMzc1LDIuMzc1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgiIGQ9Ik0xOSwxMy4zNzVjLS43ODIyLDAtMS41MzkxLjE1NzctMi4yNS40NjgzLS4zMTY0LjEzODItLjQ2MDkuNTA2OC0uMzIyMy44MjMyLjEzNzcuMzE2NC41MDc4LjQ1ODUuODIyMy4zMjIzLjU1MjctLjI0MTIsMS4xNDE2LS4zNjM4LDEuNzUtLjM2MzgsMi40MTIxLDAsNC4zNzUsMS45NjI0LDQuMzc1LDQuMzc1cy0xLjk2MjksNC4zNzUtNC4zNzUsNC4zNzUtNC4zNzUtMS45NjI0LTQuMzc1LTQuMzc1YzAtLjYwODkuMTIyMS0xLjE5NzMuMzYzMy0xLjc0OTUuMTM4Ny0uMzE2NC0uMDA1OS0uNjg1MS0uMzIyMy0uODIzMi0uMzE0NS0uMTM5Mi0uNjgzNi4wMDU0LS44MjIzLjMyMjMtLjMxMTUuNzExNC0uNDY4OCwxLjQ2ODMtLjQ2ODgsMi4yNTA1LDAsMy4xMDE2LDIuNTIzNCw1LjYyNSw1LjYyNSw1LjYyNXM1LjYyNS0yLjUyMzQsNS42MjUtNS42MjUtMi41MjM0LTUuNjI1LTUuNjI1LTUuNjI1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC05N2MxZWM4NC05YjgxLTQ1NmUtOTlhYS03MTM3NTBlYjY5ZTAiIGQ9Ik0zMC40NjY4LDE4LjczODhjLTIuMDU2Ni00LjQ3MzEtNi41NTc2LTcuMzYzOC0xMS40NjY4LTcuMzYzOHMtOS40MTAyLDIuODkwNi0xMS40NjY4LDcuMzYzOGMtLjA3NTIuMTY2LS4wNzUyLjM1NjQsMCwuNTIyNSwyLjA1NjYsNC40NzMxLDYuNTU3Niw3LjM2MzgsMTEuNDY2OCw3LjM2MzhzOS40MTAyLTIuODkwNiwxMS40NjY4LTcuMzYzOGMuMDc1Mi0uMTY2LjA3NTItLjM1NjQsMC0uNTIyNVpNMTksMjUuMzc1Yy00LjMyNjIsMC04LjMwMDgtMi40OTI3LTEwLjIwNjEtNi4zNzUsMS45MDUzLTMuODgyMyw1Ljg3OTktNi4zNzUsMTAuMjA2MS02LjM3NXM4LjMwMDgsMi40OTI3LDEwLjIwNjEsNi4zNzVjLTEuOTA1MywzLjg4MjMtNS44Nzk5LDYuMzc1LTEwLjIwNjEsNi4zNzVaIi8+CjxwYXRoIGNsYXNzPSJ1dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCIgZD0iTTE1LjQ0MjQsMTQuNTU4MWMtLjI0NDEtLjI0NDEtLjY0MDYtLjI0NDEtLjg4NDgsMC0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOGw0LDRjLjEyMjEuMTIyMS4yODIyLjE4MzEuNDQyNC4xODMxcy4zMjAzLS4wNjEuNDQyNC0uMTgzMWMuMjQzMi0uMjQ0MS4yNDMyLS42Mzk2LDAtLjg4MzhsLTQtNFoiLz4KPC9zdmc+Cg== mediatype: image/svg+xml install: spec: clusterPermissions: - rules: - apiGroups: - monitoring.rhobs resources: - alertmanagers - alertmanagers/finalizers - alertmanagers/status - alertmanagerconfigs - prometheuses - prometheuses/finalizers - prometheuses/status - prometheusagents - prometheusagents/finalizers - prometheusagents/status - thanosrulers - thanosrulers/finalizers - thanosrulers/status - scrapeconfigs - servicemonitors - podmonitors - probes - prometheusrules verbs: - '*' - apiGroups: - apps resources: - statefulsets verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets verbs: - '*' - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - "" resources: - endpoints verbs: - get - create - update - delete - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator - rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator-admission-webhook - rules: - apiGroups: - "" resources: - configmaps - secrets - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - endpoints - events - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers verbs: - get - list - watch - apiGroups: - "" resources: - services/finalizers verbs: - patch - update - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusterversions verbs: - get - list - watch - apiGroups: - console.openshift.io resources: - consoleplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - loki.grafana.com resources: - application - audit - infrastructure - network verbs: - get - apiGroups: - loki.grafana.com resources: - lokistacks verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - main resources: - alertmanagers/api verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - k8s resources: - prometheuses/api verbs: - create - get - update - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - alertmanagers - prometheuses - servicemonitors - thanosqueriers verbs: - create - delete - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks verbs: - create - get - list - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks/finalizers - monitoringstacks/status verbs: - get - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/finalizers verbs: - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/status verbs: - get - patch - update - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability/finalizers - clusterobservability/status - uiplugins/finalizers - uiplugins/status verbs: - get - update - apiGroups: - observability.openshift.io resources: - uiplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - consoles verbs: - get - list - patch - watch - apiGroups: - perses.dev resources: - perses - persesdashboards - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers - persesdashboards/finalizers - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status - persesdashboards/status - persesdatasources/status verbs: - get - patch - update - apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resourceNames: - nonroot - nonroot-v2 resources: - securitycontextconstraints verbs: - use - apiGroups: - storage.k8s.io resources: - storageclasses - volumeattachments verbs: - get - list - watch - apiGroups: - tempo.grafana.com resources: - tempomonolithics - tempostacks verbs: - list serviceAccountName: observability-operator-sa - rules: - apiGroups: - apps resources: - deployments - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services - configmaps - secrets verbs: - get - patch - update - create - delete - list - watch - apiGroups: - perses.dev resources: - perses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdashboards verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdashboards/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdashboards/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdatasources/status verbs: - get - patch - update serviceAccountName: perses-operator deployments: - label: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 automountServiceAccountToken: true containers: - args: - --prometheus-config-reloader=$(RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER) - --prometheus-instance-selector=app.kubernetes.io/managed-by=observability-operator - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator env: - name: GOGC value: "30" - name: RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER value: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 100m memory: 500Mi requests: cpu: 5m memory: 150Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook creationTimestamp: null labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false containers: - args: - --web.enable-tls=true - --web.cert-file=/tmp/k8s-webhook-server/serving-certs/tls.crt - --web.key-file=/tmp/k8s-webhook-server/serving-certs/tls.key image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator-admission-webhook tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 name: observability-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator strategy: {} template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - args: - --namespace=$(NAMESPACE) - --images=alertmanager=$(RELATED_IMAGE_ALERTMANAGER) - --images=prometheus=$(RELATED_IMAGE_PROMETHEUS) - --images=thanos=$(RELATED_IMAGE_THANOS) - --images=perses=$(RELATED_IMAGE_PERSES) - --images=ui-dashboards=$(RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN) - --images=ui-distributed-tracing=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN) - --images=ui-distributed-tracing-pf5=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5) - --images=ui-distributed-tracing-pf4=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4) - --images=ui-logging=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN) - --images=ui-logging-pf4=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4) - --images=ui-troubleshooting-panel=$(RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN) - --images=ui-monitoring=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN) - --images=ui-monitoring-pf5=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5) - --images=korrel8r=$(RELATED_IMAGE_KORREL8R) - --images=health-analyzer=$(RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER) - --openshift.enabled=true env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_ALERTMANAGER value: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 - name: RELATED_IMAGE_PROMETHEUS value: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 - name: RELATED_IMAGE_THANOS value: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 - name: RELATED_IMAGE_PERSES value: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 - name: RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN value: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 - name: RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN value: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e - name: RELATED_IMAGE_KORREL8R value: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 - name: RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER value: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 name: operator readinessProbe: httpGet: path: /healthz port: 8081 resources: limits: cpu: 400m memory: 512Mi requests: cpu: 100m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /etc/tls/private name: observability-operator-tls readOnly: true securityContext: runAsNonRoot: true serviceAccountName: observability-operator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - name: observability-operator-tls secret: optional: true secretName: observability-operator-tls - label: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator name: perses-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: perses-operator creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: perses-operator readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /ca name: openshift-service-ca readOnly: true serviceAccountName: perses-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt optional: true name: openshift-service-ca strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - observability - monitoring - prometheus - thanos links: - name: GitHub url: https://github.com/rhobs/observability-operator maintainers: - email: jfajersk@redhat.com name: Jan Fajerski - email: spasquie@redhat.com name: Simon Pasquier maturity: alpha provider: name: Red Hat relatedImages: - image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e name: cluster-observability-operator - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 name: prometheus-config-reloader - image: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 name: alertmanager - image: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 name: prometheus - image: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 name: thanos - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator - image: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 name: ui-dashboards - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a name: ui-tracing - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 name: ui-tracing-pf5 - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed name: ui-tracing-pf4 - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf name: ui-logging - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 name: ui-logging-pf4 - image: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad name: ui-troubleshooting - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 name: ui-monitoring - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e name: ui-monitoring-pf5 - image: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 name: korrel8r - image: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd name: cluster-health-analyzer - image: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 name: perses - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c name: perses-operator replaces: cluster-observability-operator.v1.2.1 version: 1.2.2 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: alertmanagerconfigs.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - alertmanagerconfigs scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-alertmanagerconfigs/validate - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: prometheusrules.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - prometheusrules scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-prometheusrules/validate status: certsLastUpdated: "2025-10-11T10:48:15Z" certsRotateAt: "2027-10-10T10:48:14Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:06Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:16Z" message: 'installing: waiting for deployment obo-prometheus-operator to become ready: deployment "obo-prometheus-operator" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: The operator is running in openshift-operators but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagerconfigs.monitoring.rhobs status: Present uuid: 6dbb3562-3502-427f-a8ac-69f5fee677eb version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagers.monitoring.rhobs status: Present uuid: 94358371-764f-469d-bfdf-60918719ad15 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: monitoringstacks.monitoring.rhobs status: Present uuid: eef8c5db-14cc-4b9b-a16a-bb53c9085ad8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: perses.perses.dev status: Present uuid: 699a06b6-6ea1-470b-9396-ea9e74aacbf0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdashboards.perses.dev status: Present uuid: 9fdcb708-f24c-4a68-9e4d-a90cc21b8b2a version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdatasources.perses.dev status: Present uuid: 3367dd1b-8fbf-4ec3-bc6e-5ac723632866 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: podmonitors.monitoring.rhobs status: Present uuid: 119333e4-8acd-4490-89f2-0ab4c2cb69e3 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: probes.monitoring.rhobs status: Present uuid: b6f5743f-53c5-4ef2-ba73-1dfff01529ab version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusagents.monitoring.rhobs status: Present uuid: 9cd94803-872e-48c2-b886-046df0f3ea97 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheuses.monitoring.rhobs status: Present uuid: 63114d9d-5830-4525-a696-f9d5631f50bf version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusrules.monitoring.rhobs status: Present uuid: d001857d-a609-4f31-ac94-103f85059cda version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: scrapeconfigs.monitoring.rhobs status: Present uuid: 54fa29dc-530e-4d4e-9d1f-dddec15c22af version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicemonitors.monitoring.rhobs status: Present uuid: 7f226d56-076c-4493-a434-faf2df2977a1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosqueriers.monitoring.rhobs status: Present uuid: 425ae3fd-53e2-48ba-9e21-ab9fc60cc7b0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosrulers.monitoring.rhobs status: Present uuid: d496ce12-f67c-4cd5-a94f-7da43dbd9c84 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: uiplugins.observability.openshift.io status: Present uuid: be0bccb8-7608-4f4a-b285-faef260080c5 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update","create","delete","list","watch"],"apiGroups":[""],"resources":["services","configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdashboards"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/status"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: perses-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","alertmanagers/finalizers","alertmanagers/status","alertmanagerconfigs","prometheuses","prometheuses/finalizers","prometheuses/status","prometheusagents","prometheusagents/finalizers","prometheusagents/status","thanosrulers","thanosrulers/finalizers","thanosrulers/status","scrapeconfigs","servicemonitors","podmonitors","probes","prometheusrules"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":[""],"resources":["configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","delete"],"apiGroups":[""],"resources":["pods"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["services","services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","create"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["endpoints"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator-admission-webhook status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["configmaps","secrets","serviceaccounts","services"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["endpoints","events","namespaces","nodes","persistentvolumeclaims","persistentvolumes","pods","replicationcontrollers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","update"],"apiGroups":[""],"resources":["services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","replicasets","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["autoscaling"],"resources":["horizontalpodautoscalers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["batch"],"resources":["cronjobs","jobs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusterversions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["console.openshift.io"],"resources":["consoleplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["loki.grafana.com"],"resources":["application","audit","infrastructure","network"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["loki.grafana.com"],"resources":["lokistacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["monitoring.coreos.com"],"resources":["alertmanagers/api"],"resourceNames":["main"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","update"],"apiGroups":["monitoring.coreos.com"],"resources":["prometheuses/api"],"resourceNames":["k8s"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","list","patch","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","prometheuses","servicemonitors","thanosqueriers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","list","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks/finalizers","monitoringstacks/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses","networkpolicies"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability/finalizers","clusterobservability/status","uiplugins/finalizers","uiplugins/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["observability.openshift.io"],"resources":["uiplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","patch","watch"],"apiGroups":["operator.openshift.io"],"resources":["consoles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses","persesdashboards","persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers","persesdashboards/finalizers","persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status","persesdashboards/status","persesdatasources/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["poddisruptionbudgets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterrolebindings","clusterroles","rolebindings","roles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot","nonroot-v2"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses","volumeattachments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":["tempo.grafana.com"],"resources":["tempomonolithics","tempostacks"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: observability-operator-sa status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "MonitoringStack", "metadata": { "labels": { "mso": "example" }, "name": "sample-monitoring-stack" }, "spec": { "logLevel": "debug", "resourceSelector": { "matchLabels": { "app": "demo" } }, "retention": "1d" } }, { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "ThanosQuerier", "metadata": { "name": "example-thanos" }, "spec": { "selector": { "matchLabels": { "mso": "example" } } } } ] capabilities: Basic Install categories: Monitoring certified: "false" containerImage: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e createdAt: "2025-06-24T11:30:26Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. features.operators.openshift.io/cnf: "false" features.operators.openshift.io/cni: "false" features.operators.openshift.io/csi: "false" features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "false" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: global-operators olm.operatorNamespace: openshift-operators olm.skipRange: '>=..0 <1.2.2' operatorframework.io/cluster-monitoring: "true" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Alertmanager","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"AlertmanagerConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"MonitoringStack","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PodMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Probe","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Prometheus","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusAgent","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusRule","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ScrapeConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ServiceMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosQuerier","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosRuler","version":"v1"}},{"type":"olm.gvk","value":{"group":"observability.openshift.io","kind":"UIPlugin","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"Perses","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDashboard","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDatasource","version":"v1alpha1"}},{"type":"olm.package","value":{"packageName":"cluster-observability-operator","version":"1.2.2"}}]}' operatorframework.io/suggested-namespace: openshift-cluster-observability-operator operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/internal-objects: |- [ "prometheuses.monitoring.rhobs", "alertmanagers.monitoring.rhobs", "thanosrulers.monitoring.rhobs", "prometheusagents.monitoring.rhobs", "perses.perses.dev" ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator support: Cluster Observability (https://issues.redhat.com/projects/COO/) creationTimestamp: "2025-10-11T10:49:43Z" generation: 1 labels: olm.copiedFrom: openshift-operators olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.arm64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: cluster-observability-operator.v1.2.2 namespace: openstack-operators resourceVersion: "30394" uid: 392c46e2-0a2b-41a3-ab0b-6f94e0a063cb spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems displayName: AlertmanagerConfig kind: AlertmanagerConfig name: alertmanagerconfigs.monitoring.rhobs version: v1alpha1 - description: Alertmanager describes an Alertmanager cluster displayName: Alertmanager kind: Alertmanager name: alertmanagers.monitoring.rhobs version: v1 - description: MonitoringStack is the Schema for the monitoringstacks API displayName: MonitoringStack kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - description: Perses is the Schema for the perses API displayName: Perses kind: Perses name: perses.perses.dev version: v1alpha1 - description: A Perses Dashboard displayName: Perses Dashboard kind: PersesDashboard name: persesdashboards.perses.dev version: v1alpha1 - description: A Perses Datasource displayName: Perses Datasource kind: PersesDatasource name: persesdatasources.perses.dev version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor name: podmonitors.monitoring.rhobs version: v1 - description: Probe defines monitoring for a set of static targets or ingresses displayName: Probe kind: Probe name: probes.monitoring.rhobs version: v1 - description: PrometheusAgent defines a Prometheus agent deployment displayName: PrometheusAgent kind: PrometheusAgent name: prometheusagents.monitoring.rhobs version: v1alpha1 - description: Prometheus defines a Prometheus deployment displayName: Prometheus kind: Prometheus name: prometheuses.monitoring.rhobs version: v1 - description: PrometheusRule defines recording and alerting rules for a Prometheus instance displayName: PrometheusRule kind: PrometheusRule name: prometheusrules.monitoring.rhobs version: v1 - description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration displayName: ScrapeConfig kind: ScrapeConfig name: scrapeconfigs.monitoring.rhobs version: v1alpha1 - description: ServiceMonitor defines monitoring for a set of services displayName: ServiceMonitor kind: ServiceMonitor name: servicemonitors.monitoring.rhobs version: v1 - description: ThanosQuerier outlines the Thanos querier components, managed by this stack displayName: ThanosQuerier kind: ThanosQuerier name: thanosqueriers.monitoring.rhobs version: v1alpha1 - description: ThanosRuler defines a ThanosRuler deployment displayName: ThanosRuler kind: ThanosRuler name: thanosrulers.monitoring.rhobs version: v1 - description: UIPlugin defines a console plugin for observability displayName: UIPlugin kind: UIPlugin name: uiplugins.observability.openshift.io version: v1alpha1 description: |- Cluster Observability Operator is a Go based Kubernetes operator to easily setup and manage various observability tools. ### Supported Features - Setup multiple Highly Available Monitoring stack using Prometheus, Alertmanager and Thanos Querier - Customizable configuration for managing Prometheus deployments - Customizable configuration for managing Alertmanager deployments - Customizable configuration for managing Thanos Querier deployments - Setup console plugins - Setup korrel8r - Setup Perses - Setup Cluster Health Analyzer ### Documentation - **[Documentation](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/cluster_observability_operator/index)** ### License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) displayName: Cluster Observability Operator icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC1kMWI4NDIzOC0wYzgxLTQ5MjctOGQ4Mi03OTcyN2Y5OGZjYWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4IDM4Ij4KPHRpdGxlPkNsdXN0ZXIgb2JzZXJ2YWJpbGl0eTwvdGl0bGU+CjxkZXNjPmNsb3VkPC9kZXNjPgo8bWV0YWRhdGE+PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOC4wLWMwMDEgMS4wMDAwMDAsIDAwMDAvMDAvMDAtMDA6MDA6MDAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8IS0tIG1ldGFkYXRhIGZpZWxkcyAtLT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InciPz48L21ldGFkYXRhPgo8ZGVmcz48c3R5bGU+LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhe2ZpbGw6I2UwZTBlMDt9LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhLC51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCwudXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgsLnV1aWQtNGJlZjgyMGItNTZjOS00N2U3LTgyYTMtMmRiOGQ4YzdiMTEye3N0cm9rZS13aWR0aDowcHg7fS51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMHtmaWxsOiMwMDA7fS51dWlkLWYwMzIxNzhlLWJkNTAtNGRlNy1iNzczLTY2NWJmZDVjNWJiOHtmaWxsOiNlMDA7fS51dWlkLTRiZWY4MjBiLTU2YzktNDdlNy04MmEzLTJkYjhkOGM3YjExMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPgo8cmVjdCBjbGFzcz0idXVpZC00YmVmODIwYi01NmM5LTQ3ZTctODJhMy0yZGI4ZDhjN2IxMTIiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+CjxwYXRoIGNsYXNzPSJ1dWlkLTI0YjBkOTdiLTY4MWUtNGRhNi1hMWM3LTc2NzFhZTU3NTMyYSIgZD0iTTI4LDIuMjVjNC4yNzM0LDAsNy43NSwzLjQ3NjYsNy43NSw3Ljc1djE4YzAsNC4yNzM0LTMuNDc2Niw3Ljc1LTcuNzUsNy43NUgxMGMtNC4yNzM0LDAtNy43NS0zLjQ3NjYtNy43NS03Ljc1VjEwYzAtNC4yNzM0LDMuNDc2Ni03Ljc1LDcuNzUtNy43NWgxOE0yOCwxSDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz4KPHBhdGggY2xhc3M9InV1aWQtZjAzMjE3OGUtYmQ1MC00ZGU3LWI3NzMtNjY1YmZkNWM1YmI4IiBkPSJNMjEuMzc1LDE5YzAsLjM0NTIuMjgwMy42MjUuNjI1LjYyNXMuNjI1LS4yNzk4LjYyNS0uNjI1YzAtMS45OTktMS42MjYtMy42MjUtMy42MjUtMy42MjUtLjM0NDcsMC0uNjI1LjI3OTgtLjYyNS42MjVzLjI4MDMuNjI1LjYyNS42MjVjMS4zMDk2LDAsMi4zNzUsMS4wNjU0LDIuMzc1LDIuMzc1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgiIGQ9Ik0xOSwxMy4zNzVjLS43ODIyLDAtMS41MzkxLjE1NzctMi4yNS40NjgzLS4zMTY0LjEzODItLjQ2MDkuNTA2OC0uMzIyMy44MjMyLjEzNzcuMzE2NC41MDc4LjQ1ODUuODIyMy4zMjIzLjU1MjctLjI0MTIsMS4xNDE2LS4zNjM4LDEuNzUtLjM2MzgsMi40MTIxLDAsNC4zNzUsMS45NjI0LDQuMzc1LDQuMzc1cy0xLjk2MjksNC4zNzUtNC4zNzUsNC4zNzUtNC4zNzUtMS45NjI0LTQuMzc1LTQuMzc1YzAtLjYwODkuMTIyMS0xLjE5NzMuMzYzMy0xLjc0OTUuMTM4Ny0uMzE2NC0uMDA1OS0uNjg1MS0uMzIyMy0uODIzMi0uMzE0NS0uMTM5Mi0uNjgzNi4wMDU0LS44MjIzLjMyMjMtLjMxMTUuNzExNC0uNDY4OCwxLjQ2ODMtLjQ2ODgsMi4yNTA1LDAsMy4xMDE2LDIuNTIzNCw1LjYyNSw1LjYyNSw1LjYyNXM1LjYyNS0yLjUyMzQsNS42MjUtNS42MjUtMi41MjM0LTUuNjI1LTUuNjI1LTUuNjI1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC05N2MxZWM4NC05YjgxLTQ1NmUtOTlhYS03MTM3NTBlYjY5ZTAiIGQ9Ik0zMC40NjY4LDE4LjczODhjLTIuMDU2Ni00LjQ3MzEtNi41NTc2LTcuMzYzOC0xMS40NjY4LTcuMzYzOHMtOS40MTAyLDIuODkwNi0xMS40NjY4LDcuMzYzOGMtLjA3NTIuMTY2LS4wNzUyLjM1NjQsMCwuNTIyNSwyLjA1NjYsNC40NzMxLDYuNTU3Niw3LjM2MzgsMTEuNDY2OCw3LjM2MzhzOS40MTAyLTIuODkwNiwxMS40NjY4LTcuMzYzOGMuMDc1Mi0uMTY2LjA3NTItLjM1NjQsMC0uNTIyNVpNMTksMjUuMzc1Yy00LjMyNjIsMC04LjMwMDgtMi40OTI3LTEwLjIwNjEtNi4zNzUsMS45MDUzLTMuODgyMyw1Ljg3OTktNi4zNzUsMTAuMjA2MS02LjM3NXM4LjMwMDgsMi40OTI3LDEwLjIwNjEsNi4zNzVjLTEuOTA1MywzLjg4MjMtNS44Nzk5LDYuMzc1LTEwLjIwNjEsNi4zNzVaIi8+CjxwYXRoIGNsYXNzPSJ1dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCIgZD0iTTE1LjQ0MjQsMTQuNTU4MWMtLjI0NDEtLjI0NDEtLjY0MDYtLjI0NDEtLjg4NDgsMC0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOGw0LDRjLjEyMjEuMTIyMS4yODIyLjE4MzEuNDQyNC4xODMxcy4zMjAzLS4wNjEuNDQyNC0uMTgzMWMuMjQzMi0uMjQ0MS4yNDMyLS42Mzk2LDAtLjg4MzhsLTQtNFoiLz4KPC9zdmc+Cg== mediatype: image/svg+xml install: spec: clusterPermissions: - rules: - apiGroups: - monitoring.rhobs resources: - alertmanagers - alertmanagers/finalizers - alertmanagers/status - alertmanagerconfigs - prometheuses - prometheuses/finalizers - prometheuses/status - prometheusagents - prometheusagents/finalizers - prometheusagents/status - thanosrulers - thanosrulers/finalizers - thanosrulers/status - scrapeconfigs - servicemonitors - podmonitors - probes - prometheusrules verbs: - '*' - apiGroups: - apps resources: - statefulsets verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets verbs: - '*' - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - "" resources: - endpoints verbs: - get - create - update - delete - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator - rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator-admission-webhook - rules: - apiGroups: - "" resources: - configmaps - secrets - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - endpoints - events - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers verbs: - get - list - watch - apiGroups: - "" resources: - services/finalizers verbs: - patch - update - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusterversions verbs: - get - list - watch - apiGroups: - console.openshift.io resources: - consoleplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - loki.grafana.com resources: - application - audit - infrastructure - network verbs: - get - apiGroups: - loki.grafana.com resources: - lokistacks verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - main resources: - alertmanagers/api verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - k8s resources: - prometheuses/api verbs: - create - get - update - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - alertmanagers - prometheuses - servicemonitors - thanosqueriers verbs: - create - delete - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks verbs: - create - get - list - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks/finalizers - monitoringstacks/status verbs: - get - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/finalizers verbs: - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/status verbs: - get - patch - update - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability/finalizers - clusterobservability/status - uiplugins/finalizers - uiplugins/status verbs: - get - update - apiGroups: - observability.openshift.io resources: - uiplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - consoles verbs: - get - list - patch - watch - apiGroups: - perses.dev resources: - perses - persesdashboards - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers - persesdashboards/finalizers - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status - persesdashboards/status - persesdatasources/status verbs: - get - patch - update - apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resourceNames: - nonroot - nonroot-v2 resources: - securitycontextconstraints verbs: - use - apiGroups: - storage.k8s.io resources: - storageclasses - volumeattachments verbs: - get - list - watch - apiGroups: - tempo.grafana.com resources: - tempomonolithics - tempostacks verbs: - list serviceAccountName: observability-operator-sa - rules: - apiGroups: - apps resources: - deployments - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services - configmaps - secrets verbs: - get - patch - update - create - delete - list - watch - apiGroups: - perses.dev resources: - perses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdashboards verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdashboards/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdashboards/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdatasources/status verbs: - get - patch - update serviceAccountName: perses-operator deployments: - label: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 automountServiceAccountToken: true containers: - args: - --prometheus-config-reloader=$(RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER) - --prometheus-instance-selector=app.kubernetes.io/managed-by=observability-operator - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator env: - name: GOGC value: "30" - name: RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER value: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 100m memory: 500Mi requests: cpu: 5m memory: 150Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook creationTimestamp: null labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false containers: - args: - --web.enable-tls=true - --web.cert-file=/tmp/k8s-webhook-server/serving-certs/tls.crt - --web.key-file=/tmp/k8s-webhook-server/serving-certs/tls.key image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator-admission-webhook tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 name: observability-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator strategy: {} template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - args: - --namespace=$(NAMESPACE) - --images=alertmanager=$(RELATED_IMAGE_ALERTMANAGER) - --images=prometheus=$(RELATED_IMAGE_PROMETHEUS) - --images=thanos=$(RELATED_IMAGE_THANOS) - --images=perses=$(RELATED_IMAGE_PERSES) - --images=ui-dashboards=$(RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN) - --images=ui-distributed-tracing=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN) - --images=ui-distributed-tracing-pf5=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5) - --images=ui-distributed-tracing-pf4=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4) - --images=ui-logging=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN) - --images=ui-logging-pf4=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4) - --images=ui-troubleshooting-panel=$(RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN) - --images=ui-monitoring=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN) - --images=ui-monitoring-pf5=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5) - --images=korrel8r=$(RELATED_IMAGE_KORREL8R) - --images=health-analyzer=$(RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER) - --openshift.enabled=true env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_ALERTMANAGER value: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 - name: RELATED_IMAGE_PROMETHEUS value: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 - name: RELATED_IMAGE_THANOS value: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 - name: RELATED_IMAGE_PERSES value: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 - name: RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN value: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 - name: RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN value: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e - name: RELATED_IMAGE_KORREL8R value: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 - name: RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER value: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 name: operator readinessProbe: httpGet: path: /healthz port: 8081 resources: limits: cpu: 400m memory: 512Mi requests: cpu: 100m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /etc/tls/private name: observability-operator-tls readOnly: true securityContext: runAsNonRoot: true serviceAccountName: observability-operator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - name: observability-operator-tls secret: optional: true secretName: observability-operator-tls - label: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator name: perses-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: perses-operator creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: perses-operator readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /ca name: openshift-service-ca readOnly: true serviceAccountName: perses-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt optional: true name: openshift-service-ca strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - observability - monitoring - prometheus - thanos links: - name: GitHub url: https://github.com/rhobs/observability-operator maintainers: - email: jfajersk@redhat.com name: Jan Fajerski - email: spasquie@redhat.com name: Simon Pasquier maturity: alpha provider: name: Red Hat relatedImages: - image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e name: cluster-observability-operator - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 name: prometheus-config-reloader - image: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 name: alertmanager - image: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 name: prometheus - image: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 name: thanos - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator - image: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 name: ui-dashboards - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a name: ui-tracing - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 name: ui-tracing-pf5 - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed name: ui-tracing-pf4 - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf name: ui-logging - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 name: ui-logging-pf4 - image: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad name: ui-troubleshooting - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 name: ui-monitoring - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e name: ui-monitoring-pf5 - image: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 name: korrel8r - image: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd name: cluster-health-analyzer - image: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 name: perses - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c name: perses-operator replaces: cluster-observability-operator.v1.2.1 version: 1.2.2 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: alertmanagerconfigs.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - alertmanagerconfigs scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-alertmanagerconfigs/validate - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: prometheusrules.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - prometheusrules scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-prometheusrules/validate status: certsLastUpdated: "2025-10-11T10:48:15Z" certsRotateAt: "2027-10-10T10:48:14Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:06Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:16Z" message: 'installing: waiting for deployment obo-prometheus-operator to become ready: deployment "obo-prometheus-operator" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: The operator is running in openshift-operators but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagerconfigs.monitoring.rhobs status: Present uuid: 6dbb3562-3502-427f-a8ac-69f5fee677eb version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagers.monitoring.rhobs status: Present uuid: 94358371-764f-469d-bfdf-60918719ad15 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: monitoringstacks.monitoring.rhobs status: Present uuid: eef8c5db-14cc-4b9b-a16a-bb53c9085ad8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: perses.perses.dev status: Present uuid: 699a06b6-6ea1-470b-9396-ea9e74aacbf0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdashboards.perses.dev status: Present uuid: 9fdcb708-f24c-4a68-9e4d-a90cc21b8b2a version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdatasources.perses.dev status: Present uuid: 3367dd1b-8fbf-4ec3-bc6e-5ac723632866 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: podmonitors.monitoring.rhobs status: Present uuid: 119333e4-8acd-4490-89f2-0ab4c2cb69e3 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: probes.monitoring.rhobs status: Present uuid: b6f5743f-53c5-4ef2-ba73-1dfff01529ab version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusagents.monitoring.rhobs status: Present uuid: 9cd94803-872e-48c2-b886-046df0f3ea97 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheuses.monitoring.rhobs status: Present uuid: 63114d9d-5830-4525-a696-f9d5631f50bf version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusrules.monitoring.rhobs status: Present uuid: d001857d-a609-4f31-ac94-103f85059cda version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: scrapeconfigs.monitoring.rhobs status: Present uuid: 54fa29dc-530e-4d4e-9d1f-dddec15c22af version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicemonitors.monitoring.rhobs status: Present uuid: 7f226d56-076c-4493-a434-faf2df2977a1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosqueriers.monitoring.rhobs status: Present uuid: 425ae3fd-53e2-48ba-9e21-ab9fc60cc7b0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosrulers.monitoring.rhobs status: Present uuid: d496ce12-f67c-4cd5-a94f-7da43dbd9c84 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: uiplugins.observability.openshift.io status: Present uuid: be0bccb8-7608-4f4a-b285-faef260080c5 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update","create","delete","list","watch"],"apiGroups":[""],"resources":["services","configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdashboards"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/status"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: perses-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","alertmanagers/finalizers","alertmanagers/status","alertmanagerconfigs","prometheuses","prometheuses/finalizers","prometheuses/status","prometheusagents","prometheusagents/finalizers","prometheusagents/status","thanosrulers","thanosrulers/finalizers","thanosrulers/status","scrapeconfigs","servicemonitors","podmonitors","probes","prometheusrules"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":[""],"resources":["configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","delete"],"apiGroups":[""],"resources":["pods"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["services","services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","create"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["endpoints"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator-admission-webhook status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["configmaps","secrets","serviceaccounts","services"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["endpoints","events","namespaces","nodes","persistentvolumeclaims","persistentvolumes","pods","replicationcontrollers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","update"],"apiGroups":[""],"resources":["services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","replicasets","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["autoscaling"],"resources":["horizontalpodautoscalers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["batch"],"resources":["cronjobs","jobs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusterversions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["console.openshift.io"],"resources":["consoleplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["loki.grafana.com"],"resources":["application","audit","infrastructure","network"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["loki.grafana.com"],"resources":["lokistacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["monitoring.coreos.com"],"resources":["alertmanagers/api"],"resourceNames":["main"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","update"],"apiGroups":["monitoring.coreos.com"],"resources":["prometheuses/api"],"resourceNames":["k8s"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","list","patch","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","prometheuses","servicemonitors","thanosqueriers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","list","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks/finalizers","monitoringstacks/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses","networkpolicies"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability/finalizers","clusterobservability/status","uiplugins/finalizers","uiplugins/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["observability.openshift.io"],"resources":["uiplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","patch","watch"],"apiGroups":["operator.openshift.io"],"resources":["consoles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses","persesdashboards","persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers","persesdashboards/finalizers","persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status","persesdashboards/status","persesdatasources/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["poddisruptionbudgets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterrolebindings","clusterroles","rolebindings","roles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot","nonroot-v2"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses","volumeattachments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":["tempo.grafana.com"],"resources":["tempomonolithics","tempostacks"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: observability-operator-sa status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "MonitoringStack", "metadata": { "labels": { "mso": "example" }, "name": "sample-monitoring-stack" }, "spec": { "logLevel": "debug", "resourceSelector": { "matchLabels": { "app": "demo" } }, "retention": "1d" } }, { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "ThanosQuerier", "metadata": { "name": "example-thanos" }, "spec": { "selector": { "matchLabels": { "mso": "example" } } } } ] capabilities: Basic Install categories: Monitoring certified: "false" containerImage: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e createdAt: "2025-06-24T11:30:26Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. features.operators.openshift.io/cnf: "false" features.operators.openshift.io/cni: "false" features.operators.openshift.io/csi: "false" features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "false" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: global-operators olm.operatorNamespace: openshift-operators olm.skipRange: '>=..0 <1.2.2' operatorframework.io/cluster-monitoring: "true" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Alertmanager","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"AlertmanagerConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"MonitoringStack","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PodMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Probe","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Prometheus","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusAgent","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusRule","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ScrapeConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ServiceMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosQuerier","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosRuler","version":"v1"}},{"type":"olm.gvk","value":{"group":"observability.openshift.io","kind":"UIPlugin","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"Perses","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDashboard","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDatasource","version":"v1alpha1"}},{"type":"olm.package","value":{"packageName":"cluster-observability-operator","version":"1.2.2"}}]}' operatorframework.io/suggested-namespace: openshift-cluster-observability-operator operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/internal-objects: |- [ "prometheuses.monitoring.rhobs", "alertmanagers.monitoring.rhobs", "thanosrulers.monitoring.rhobs", "prometheusagents.monitoring.rhobs", "perses.perses.dev" ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator support: Cluster Observability (https://issues.redhat.com/projects/COO/) creationTimestamp: "2025-10-11T10:48:23Z" generation: 1 labels: olm.copiedFrom: openshift-operators olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.arm64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: cluster-observability-operator.v1.2.2 namespace: openshift-machine-api resourceVersion: "28824" uid: 1c4d8173-72d9-4251-8f14-cae87ebf617d spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems displayName: AlertmanagerConfig kind: AlertmanagerConfig name: alertmanagerconfigs.monitoring.rhobs version: v1alpha1 - description: Alertmanager describes an Alertmanager cluster displayName: Alertmanager kind: Alertmanager name: alertmanagers.monitoring.rhobs version: v1 - description: MonitoringStack is the Schema for the monitoringstacks API displayName: MonitoringStack kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - description: Perses is the Schema for the perses API displayName: Perses kind: Perses name: perses.perses.dev version: v1alpha1 - description: A Perses Dashboard displayName: Perses Dashboard kind: PersesDashboard name: persesdashboards.perses.dev version: v1alpha1 - description: A Perses Datasource displayName: Perses Datasource kind: PersesDatasource name: persesdatasources.perses.dev version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor name: podmonitors.monitoring.rhobs version: v1 - description: Probe defines monitoring for a set of static targets or ingresses displayName: Probe kind: Probe name: probes.monitoring.rhobs version: v1 - description: PrometheusAgent defines a Prometheus agent deployment displayName: PrometheusAgent kind: PrometheusAgent name: prometheusagents.monitoring.rhobs version: v1alpha1 - description: Prometheus defines a Prometheus deployment displayName: Prometheus kind: Prometheus name: prometheuses.monitoring.rhobs version: v1 - description: PrometheusRule defines recording and alerting rules for a Prometheus instance displayName: PrometheusRule kind: PrometheusRule name: prometheusrules.monitoring.rhobs version: v1 - description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration displayName: ScrapeConfig kind: ScrapeConfig name: scrapeconfigs.monitoring.rhobs version: v1alpha1 - description: ServiceMonitor defines monitoring for a set of services displayName: ServiceMonitor kind: ServiceMonitor name: servicemonitors.monitoring.rhobs version: v1 - description: ThanosQuerier outlines the Thanos querier components, managed by this stack displayName: ThanosQuerier kind: ThanosQuerier name: thanosqueriers.monitoring.rhobs version: v1alpha1 - description: ThanosRuler defines a ThanosRuler deployment displayName: ThanosRuler kind: ThanosRuler name: thanosrulers.monitoring.rhobs version: v1 - description: UIPlugin defines a console plugin for observability displayName: UIPlugin kind: UIPlugin name: uiplugins.observability.openshift.io version: v1alpha1 description: |- Cluster Observability Operator is a Go based Kubernetes operator to easily setup and manage various observability tools. ### Supported Features - Setup multiple Highly Available Monitoring stack using Prometheus, Alertmanager and Thanos Querier - Customizable configuration for managing Prometheus deployments - Customizable configuration for managing Alertmanager deployments - Customizable configuration for managing Thanos Querier deployments - Setup console plugins - Setup korrel8r - Setup Perses - Setup Cluster Health Analyzer ### Documentation - **[Documentation](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/cluster_observability_operator/index)** ### License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) displayName: Cluster Observability Operator icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC1kMWI4NDIzOC0wYzgxLTQ5MjctOGQ4Mi03OTcyN2Y5OGZjYWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4IDM4Ij4KPHRpdGxlPkNsdXN0ZXIgb2JzZXJ2YWJpbGl0eTwvdGl0bGU+CjxkZXNjPmNsb3VkPC9kZXNjPgo8bWV0YWRhdGE+PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOC4wLWMwMDEgMS4wMDAwMDAsIDAwMDAvMDAvMDAtMDA6MDA6MDAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8IS0tIG1ldGFkYXRhIGZpZWxkcyAtLT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InciPz48L21ldGFkYXRhPgo8ZGVmcz48c3R5bGU+LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhe2ZpbGw6I2UwZTBlMDt9LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhLC51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCwudXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgsLnV1aWQtNGJlZjgyMGItNTZjOS00N2U3LTgyYTMtMmRiOGQ4YzdiMTEye3N0cm9rZS13aWR0aDowcHg7fS51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMHtmaWxsOiMwMDA7fS51dWlkLWYwMzIxNzhlLWJkNTAtNGRlNy1iNzczLTY2NWJmZDVjNWJiOHtmaWxsOiNlMDA7fS51dWlkLTRiZWY4MjBiLTU2YzktNDdlNy04MmEzLTJkYjhkOGM3YjExMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPgo8cmVjdCBjbGFzcz0idXVpZC00YmVmODIwYi01NmM5LTQ3ZTctODJhMy0yZGI4ZDhjN2IxMTIiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+CjxwYXRoIGNsYXNzPSJ1dWlkLTI0YjBkOTdiLTY4MWUtNGRhNi1hMWM3LTc2NzFhZTU3NTMyYSIgZD0iTTI4LDIuMjVjNC4yNzM0LDAsNy43NSwzLjQ3NjYsNy43NSw3Ljc1djE4YzAsNC4yNzM0LTMuNDc2Niw3Ljc1LTcuNzUsNy43NUgxMGMtNC4yNzM0LDAtNy43NS0zLjQ3NjYtNy43NS03Ljc1VjEwYzAtNC4yNzM0LDMuNDc2Ni03Ljc1LDcuNzUtNy43NWgxOE0yOCwxSDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz4KPHBhdGggY2xhc3M9InV1aWQtZjAzMjE3OGUtYmQ1MC00ZGU3LWI3NzMtNjY1YmZkNWM1YmI4IiBkPSJNMjEuMzc1LDE5YzAsLjM0NTIuMjgwMy42MjUuNjI1LjYyNXMuNjI1LS4yNzk4LjYyNS0uNjI1YzAtMS45OTktMS42MjYtMy42MjUtMy42MjUtMy42MjUtLjM0NDcsMC0uNjI1LjI3OTgtLjYyNS42MjVzLjI4MDMuNjI1LjYyNS42MjVjMS4zMDk2LDAsMi4zNzUsMS4wNjU0LDIuMzc1LDIuMzc1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgiIGQ9Ik0xOSwxMy4zNzVjLS43ODIyLDAtMS41MzkxLjE1NzctMi4yNS40NjgzLS4zMTY0LjEzODItLjQ2MDkuNTA2OC0uMzIyMy44MjMyLjEzNzcuMzE2NC41MDc4LjQ1ODUuODIyMy4zMjIzLjU1MjctLjI0MTIsMS4xNDE2LS4zNjM4LDEuNzUtLjM2MzgsMi40MTIxLDAsNC4zNzUsMS45NjI0LDQuMzc1LDQuMzc1cy0xLjk2MjksNC4zNzUtNC4zNzUsNC4zNzUtNC4zNzUtMS45NjI0LTQuMzc1LTQuMzc1YzAtLjYwODkuMTIyMS0xLjE5NzMuMzYzMy0xLjc0OTUuMTM4Ny0uMzE2NC0uMDA1OS0uNjg1MS0uMzIyMy0uODIzMi0uMzE0NS0uMTM5Mi0uNjgzNi4wMDU0LS44MjIzLjMyMjMtLjMxMTUuNzExNC0uNDY4OCwxLjQ2ODMtLjQ2ODgsMi4yNTA1LDAsMy4xMDE2LDIuNTIzNCw1LjYyNSw1LjYyNSw1LjYyNXM1LjYyNS0yLjUyMzQsNS42MjUtNS42MjUtMi41MjM0LTUuNjI1LTUuNjI1LTUuNjI1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC05N2MxZWM4NC05YjgxLTQ1NmUtOTlhYS03MTM3NTBlYjY5ZTAiIGQ9Ik0zMC40NjY4LDE4LjczODhjLTIuMDU2Ni00LjQ3MzEtNi41NTc2LTcuMzYzOC0xMS40NjY4LTcuMzYzOHMtOS40MTAyLDIuODkwNi0xMS40NjY4LDcuMzYzOGMtLjA3NTIuMTY2LS4wNzUyLjM1NjQsMCwuNTIyNSwyLjA1NjYsNC40NzMxLDYuNTU3Niw3LjM2MzgsMTEuNDY2OCw3LjM2MzhzOS40MTAyLTIuODkwNiwxMS40NjY4LTcuMzYzOGMuMDc1Mi0uMTY2LjA3NTItLjM1NjQsMC0uNTIyNVpNMTksMjUuMzc1Yy00LjMyNjIsMC04LjMwMDgtMi40OTI3LTEwLjIwNjEtNi4zNzUsMS45MDUzLTMuODgyMyw1Ljg3OTktNi4zNzUsMTAuMjA2MS02LjM3NXM4LjMwMDgsMi40OTI3LDEwLjIwNjEsNi4zNzVjLTEuOTA1MywzLjg4MjMtNS44Nzk5LDYuMzc1LTEwLjIwNjEsNi4zNzVaIi8+CjxwYXRoIGNsYXNzPSJ1dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCIgZD0iTTE1LjQ0MjQsMTQuNTU4MWMtLjI0NDEtLjI0NDEtLjY0MDYtLjI0NDEtLjg4NDgsMC0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOGw0LDRjLjEyMjEuMTIyMS4yODIyLjE4MzEuNDQyNC4xODMxcy4zMjAzLS4wNjEuNDQyNC0uMTgzMWMuMjQzMi0uMjQ0MS4yNDMyLS42Mzk2LDAtLjg4MzhsLTQtNFoiLz4KPC9zdmc+Cg== mediatype: image/svg+xml install: spec: clusterPermissions: - rules: - apiGroups: - monitoring.rhobs resources: - alertmanagers - alertmanagers/finalizers - alertmanagers/status - alertmanagerconfigs - prometheuses - prometheuses/finalizers - prometheuses/status - prometheusagents - prometheusagents/finalizers - prometheusagents/status - thanosrulers - thanosrulers/finalizers - thanosrulers/status - scrapeconfigs - servicemonitors - podmonitors - probes - prometheusrules verbs: - '*' - apiGroups: - apps resources: - statefulsets verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets verbs: - '*' - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - "" resources: - endpoints verbs: - get - create - update - delete - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator - rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator-admission-webhook - rules: - apiGroups: - "" resources: - configmaps - secrets - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - endpoints - events - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers verbs: - get - list - watch - apiGroups: - "" resources: - services/finalizers verbs: - patch - update - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusterversions verbs: - get - list - watch - apiGroups: - console.openshift.io resources: - consoleplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - loki.grafana.com resources: - application - audit - infrastructure - network verbs: - get - apiGroups: - loki.grafana.com resources: - lokistacks verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - main resources: - alertmanagers/api verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - k8s resources: - prometheuses/api verbs: - create - get - update - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - alertmanagers - prometheuses - servicemonitors - thanosqueriers verbs: - create - delete - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks verbs: - create - get - list - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks/finalizers - monitoringstacks/status verbs: - get - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/finalizers verbs: - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/status verbs: - get - patch - update - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability/finalizers - clusterobservability/status - uiplugins/finalizers - uiplugins/status verbs: - get - update - apiGroups: - observability.openshift.io resources: - uiplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - consoles verbs: - get - list - patch - watch - apiGroups: - perses.dev resources: - perses - persesdashboards - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers - persesdashboards/finalizers - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status - persesdashboards/status - persesdatasources/status verbs: - get - patch - update - apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resourceNames: - nonroot - nonroot-v2 resources: - securitycontextconstraints verbs: - use - apiGroups: - storage.k8s.io resources: - storageclasses - volumeattachments verbs: - get - list - watch - apiGroups: - tempo.grafana.com resources: - tempomonolithics - tempostacks verbs: - list serviceAccountName: observability-operator-sa - rules: - apiGroups: - apps resources: - deployments - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services - configmaps - secrets verbs: - get - patch - update - create - delete - list - watch - apiGroups: - perses.dev resources: - perses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdashboards verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdashboards/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdashboards/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdatasources/status verbs: - get - patch - update serviceAccountName: perses-operator deployments: - label: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 automountServiceAccountToken: true containers: - args: - --prometheus-config-reloader=$(RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER) - --prometheus-instance-selector=app.kubernetes.io/managed-by=observability-operator - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator env: - name: GOGC value: "30" - name: RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER value: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 100m memory: 500Mi requests: cpu: 5m memory: 150Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook creationTimestamp: null labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false containers: - args: - --web.enable-tls=true - --web.cert-file=/tmp/k8s-webhook-server/serving-certs/tls.crt - --web.key-file=/tmp/k8s-webhook-server/serving-certs/tls.key image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator-admission-webhook tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 name: observability-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator strategy: {} template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - args: - --namespace=$(NAMESPACE) - --images=alertmanager=$(RELATED_IMAGE_ALERTMANAGER) - --images=prometheus=$(RELATED_IMAGE_PROMETHEUS) - --images=thanos=$(RELATED_IMAGE_THANOS) - --images=perses=$(RELATED_IMAGE_PERSES) - --images=ui-dashboards=$(RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN) - --images=ui-distributed-tracing=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN) - --images=ui-distributed-tracing-pf5=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5) - --images=ui-distributed-tracing-pf4=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4) - --images=ui-logging=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN) - --images=ui-logging-pf4=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4) - --images=ui-troubleshooting-panel=$(RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN) - --images=ui-monitoring=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN) - --images=ui-monitoring-pf5=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5) - --images=korrel8r=$(RELATED_IMAGE_KORREL8R) - --images=health-analyzer=$(RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER) - --openshift.enabled=true env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_ALERTMANAGER value: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 - name: RELATED_IMAGE_PROMETHEUS value: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 - name: RELATED_IMAGE_THANOS value: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 - name: RELATED_IMAGE_PERSES value: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 - name: RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN value: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 - name: RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN value: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e - name: RELATED_IMAGE_KORREL8R value: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 - name: RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER value: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 name: operator readinessProbe: httpGet: path: /healthz port: 8081 resources: limits: cpu: 400m memory: 512Mi requests: cpu: 100m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /etc/tls/private name: observability-operator-tls readOnly: true securityContext: runAsNonRoot: true serviceAccountName: observability-operator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - name: observability-operator-tls secret: optional: true secretName: observability-operator-tls - label: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator name: perses-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: perses-operator creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: perses-operator readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /ca name: openshift-service-ca readOnly: true serviceAccountName: perses-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt optional: true name: openshift-service-ca strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - observability - monitoring - prometheus - thanos links: - name: GitHub url: https://github.com/rhobs/observability-operator maintainers: - email: jfajersk@redhat.com name: Jan Fajerski - email: spasquie@redhat.com name: Simon Pasquier maturity: alpha provider: name: Red Hat relatedImages: - image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e name: cluster-observability-operator - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 name: prometheus-config-reloader - image: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 name: alertmanager - image: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 name: prometheus - image: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 name: thanos - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator - image: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 name: ui-dashboards - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a name: ui-tracing - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 name: ui-tracing-pf5 - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed name: ui-tracing-pf4 - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf name: ui-logging - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 name: ui-logging-pf4 - image: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad name: ui-troubleshooting - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 name: ui-monitoring - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e name: ui-monitoring-pf5 - image: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 name: korrel8r - image: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd name: cluster-health-analyzer - image: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 name: perses - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c name: perses-operator replaces: cluster-observability-operator.v1.2.1 version: 1.2.2 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: alertmanagerconfigs.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - alertmanagerconfigs scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-alertmanagerconfigs/validate - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: prometheusrules.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - prometheusrules scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-prometheusrules/validate status: certsLastUpdated: "2025-10-11T10:48:15Z" certsRotateAt: "2027-10-10T10:48:14Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:06Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:16Z" message: 'installing: waiting for deployment obo-prometheus-operator to become ready: deployment "obo-prometheus-operator" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: The operator is running in openshift-operators but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagerconfigs.monitoring.rhobs status: Present uuid: 6dbb3562-3502-427f-a8ac-69f5fee677eb version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagers.monitoring.rhobs status: Present uuid: 94358371-764f-469d-bfdf-60918719ad15 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: monitoringstacks.monitoring.rhobs status: Present uuid: eef8c5db-14cc-4b9b-a16a-bb53c9085ad8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: perses.perses.dev status: Present uuid: 699a06b6-6ea1-470b-9396-ea9e74aacbf0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdashboards.perses.dev status: Present uuid: 9fdcb708-f24c-4a68-9e4d-a90cc21b8b2a version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdatasources.perses.dev status: Present uuid: 3367dd1b-8fbf-4ec3-bc6e-5ac723632866 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: podmonitors.monitoring.rhobs status: Present uuid: 119333e4-8acd-4490-89f2-0ab4c2cb69e3 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: probes.monitoring.rhobs status: Present uuid: b6f5743f-53c5-4ef2-ba73-1dfff01529ab version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusagents.monitoring.rhobs status: Present uuid: 9cd94803-872e-48c2-b886-046df0f3ea97 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheuses.monitoring.rhobs status: Present uuid: 63114d9d-5830-4525-a696-f9d5631f50bf version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusrules.monitoring.rhobs status: Present uuid: d001857d-a609-4f31-ac94-103f85059cda version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: scrapeconfigs.monitoring.rhobs status: Present uuid: 54fa29dc-530e-4d4e-9d1f-dddec15c22af version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicemonitors.monitoring.rhobs status: Present uuid: 7f226d56-076c-4493-a434-faf2df2977a1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosqueriers.monitoring.rhobs status: Present uuid: 425ae3fd-53e2-48ba-9e21-ab9fc60cc7b0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosrulers.monitoring.rhobs status: Present uuid: d496ce12-f67c-4cd5-a94f-7da43dbd9c84 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: uiplugins.observability.openshift.io status: Present uuid: be0bccb8-7608-4f4a-b285-faef260080c5 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update","create","delete","list","watch"],"apiGroups":[""],"resources":["services","configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdashboards"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/status"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: perses-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","alertmanagers/finalizers","alertmanagers/status","alertmanagerconfigs","prometheuses","prometheuses/finalizers","prometheuses/status","prometheusagents","prometheusagents/finalizers","prometheusagents/status","thanosrulers","thanosrulers/finalizers","thanosrulers/status","scrapeconfigs","servicemonitors","podmonitors","probes","prometheusrules"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":[""],"resources":["configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","delete"],"apiGroups":[""],"resources":["pods"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["services","services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","create"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["endpoints"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator-admission-webhook status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["configmaps","secrets","serviceaccounts","services"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["endpoints","events","namespaces","nodes","persistentvolumeclaims","persistentvolumes","pods","replicationcontrollers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","update"],"apiGroups":[""],"resources":["services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","replicasets","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["autoscaling"],"resources":["horizontalpodautoscalers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["batch"],"resources":["cronjobs","jobs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusterversions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["console.openshift.io"],"resources":["consoleplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["loki.grafana.com"],"resources":["application","audit","infrastructure","network"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["loki.grafana.com"],"resources":["lokistacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["monitoring.coreos.com"],"resources":["alertmanagers/api"],"resourceNames":["main"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","update"],"apiGroups":["monitoring.coreos.com"],"resources":["prometheuses/api"],"resourceNames":["k8s"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","list","patch","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","prometheuses","servicemonitors","thanosqueriers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","list","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks/finalizers","monitoringstacks/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses","networkpolicies"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability/finalizers","clusterobservability/status","uiplugins/finalizers","uiplugins/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["observability.openshift.io"],"resources":["uiplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","patch","watch"],"apiGroups":["operator.openshift.io"],"resources":["consoles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses","persesdashboards","persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers","persesdashboards/finalizers","persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status","persesdashboards/status","persesdatasources/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["poddisruptionbudgets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterrolebindings","clusterroles","rolebindings","roles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot","nonroot-v2"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses","volumeattachments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":["tempo.grafana.com"],"resources":["tempomonolithics","tempostacks"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: observability-operator-sa status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "MonitoringStack", "metadata": { "labels": { "mso": "example" }, "name": "sample-monitoring-stack" }, "spec": { "logLevel": "debug", "resourceSelector": { "matchLabels": { "app": "demo" } }, "retention": "1d" } }, { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "ThanosQuerier", "metadata": { "name": "example-thanos" }, "spec": { "selector": { "matchLabels": { "mso": "example" } } } } ] capabilities: Basic Install categories: Monitoring certified: "false" containerImage: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e createdAt: "2025-06-24T11:30:26Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. features.operators.openshift.io/cnf: "false" features.operators.openshift.io/cni: "false" features.operators.openshift.io/csi: "false" features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "false" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: global-operators olm.operatorNamespace: openshift-operators olm.skipRange: '>=..0 <1.2.2' operatorframework.io/cluster-monitoring: "true" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Alertmanager","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"AlertmanagerConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"MonitoringStack","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PodMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Probe","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Prometheus","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusAgent","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusRule","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ScrapeConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ServiceMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosQuerier","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosRuler","version":"v1"}},{"type":"olm.gvk","value":{"group":"observability.openshift.io","kind":"UIPlugin","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"Perses","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDashboard","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDatasource","version":"v1alpha1"}},{"type":"olm.package","value":{"packageName":"cluster-observability-operator","version":"1.2.2"}}]}' operatorframework.io/suggested-namespace: openshift-cluster-observability-operator operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/internal-objects: |- [ "prometheuses.monitoring.rhobs", "alertmanagers.monitoring.rhobs", "thanosrulers.monitoring.rhobs", "prometheusagents.monitoring.rhobs", "perses.perses.dev" ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator support: Cluster Observability (https://issues.redhat.com/projects/COO/) creationTimestamp: "2025-10-11T10:48:10Z" generation: 1 labels: olm.copiedFrom: openshift-operators olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.arm64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: cluster-observability-operator.v1.2.2 namespace: cert-manager resourceVersion: "28897" uid: ad06f8c2-defb-427c-bdeb-cbb11da2405c spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems displayName: AlertmanagerConfig kind: AlertmanagerConfig name: alertmanagerconfigs.monitoring.rhobs version: v1alpha1 - description: Alertmanager describes an Alertmanager cluster displayName: Alertmanager kind: Alertmanager name: alertmanagers.monitoring.rhobs version: v1 - description: MonitoringStack is the Schema for the monitoringstacks API displayName: MonitoringStack kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - description: Perses is the Schema for the perses API displayName: Perses kind: Perses name: perses.perses.dev version: v1alpha1 - description: A Perses Dashboard displayName: Perses Dashboard kind: PersesDashboard name: persesdashboards.perses.dev version: v1alpha1 - description: A Perses Datasource displayName: Perses Datasource kind: PersesDatasource name: persesdatasources.perses.dev version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor name: podmonitors.monitoring.rhobs version: v1 - description: Probe defines monitoring for a set of static targets or ingresses displayName: Probe kind: Probe name: probes.monitoring.rhobs version: v1 - description: PrometheusAgent defines a Prometheus agent deployment displayName: PrometheusAgent kind: PrometheusAgent name: prometheusagents.monitoring.rhobs version: v1alpha1 - description: Prometheus defines a Prometheus deployment displayName: Prometheus kind: Prometheus name: prometheuses.monitoring.rhobs version: v1 - description: PrometheusRule defines recording and alerting rules for a Prometheus instance displayName: PrometheusRule kind: PrometheusRule name: prometheusrules.monitoring.rhobs version: v1 - description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration displayName: ScrapeConfig kind: ScrapeConfig name: scrapeconfigs.monitoring.rhobs version: v1alpha1 - description: ServiceMonitor defines monitoring for a set of services displayName: ServiceMonitor kind: ServiceMonitor name: servicemonitors.monitoring.rhobs version: v1 - description: ThanosQuerier outlines the Thanos querier components, managed by this stack displayName: ThanosQuerier kind: ThanosQuerier name: thanosqueriers.monitoring.rhobs version: v1alpha1 - description: ThanosRuler defines a ThanosRuler deployment displayName: ThanosRuler kind: ThanosRuler name: thanosrulers.monitoring.rhobs version: v1 - description: UIPlugin defines a console plugin for observability displayName: UIPlugin kind: UIPlugin name: uiplugins.observability.openshift.io version: v1alpha1 description: |- Cluster Observability Operator is a Go based Kubernetes operator to easily setup and manage various observability tools. ### Supported Features - Setup multiple Highly Available Monitoring stack using Prometheus, Alertmanager and Thanos Querier - Customizable configuration for managing Prometheus deployments - Customizable configuration for managing Alertmanager deployments - Customizable configuration for managing Thanos Querier deployments - Setup console plugins - Setup korrel8r - Setup Perses - Setup Cluster Health Analyzer ### Documentation - **[Documentation](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/cluster_observability_operator/index)** ### License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) displayName: Cluster Observability Operator icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC1kMWI4NDIzOC0wYzgxLTQ5MjctOGQ4Mi03OTcyN2Y5OGZjYWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4IDM4Ij4KPHRpdGxlPkNsdXN0ZXIgb2JzZXJ2YWJpbGl0eTwvdGl0bGU+CjxkZXNjPmNsb3VkPC9kZXNjPgo8bWV0YWRhdGE+PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOC4wLWMwMDEgMS4wMDAwMDAsIDAwMDAvMDAvMDAtMDA6MDA6MDAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8IS0tIG1ldGFkYXRhIGZpZWxkcyAtLT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InciPz48L21ldGFkYXRhPgo8ZGVmcz48c3R5bGU+LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhe2ZpbGw6I2UwZTBlMDt9LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhLC51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCwudXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgsLnV1aWQtNGJlZjgyMGItNTZjOS00N2U3LTgyYTMtMmRiOGQ4YzdiMTEye3N0cm9rZS13aWR0aDowcHg7fS51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMHtmaWxsOiMwMDA7fS51dWlkLWYwMzIxNzhlLWJkNTAtNGRlNy1iNzczLTY2NWJmZDVjNWJiOHtmaWxsOiNlMDA7fS51dWlkLTRiZWY4MjBiLTU2YzktNDdlNy04MmEzLTJkYjhkOGM3YjExMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPgo8cmVjdCBjbGFzcz0idXVpZC00YmVmODIwYi01NmM5LTQ3ZTctODJhMy0yZGI4ZDhjN2IxMTIiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+CjxwYXRoIGNsYXNzPSJ1dWlkLTI0YjBkOTdiLTY4MWUtNGRhNi1hMWM3LTc2NzFhZTU3NTMyYSIgZD0iTTI4LDIuMjVjNC4yNzM0LDAsNy43NSwzLjQ3NjYsNy43NSw3Ljc1djE4YzAsNC4yNzM0LTMuNDc2Niw3Ljc1LTcuNzUsNy43NUgxMGMtNC4yNzM0LDAtNy43NS0zLjQ3NjYtNy43NS03Ljc1VjEwYzAtNC4yNzM0LDMuNDc2Ni03Ljc1LDcuNzUtNy43NWgxOE0yOCwxSDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz4KPHBhdGggY2xhc3M9InV1aWQtZjAzMjE3OGUtYmQ1MC00ZGU3LWI3NzMtNjY1YmZkNWM1YmI4IiBkPSJNMjEuMzc1LDE5YzAsLjM0NTIuMjgwMy42MjUuNjI1LjYyNXMuNjI1LS4yNzk4LjYyNS0uNjI1YzAtMS45OTktMS42MjYtMy42MjUtMy42MjUtMy42MjUtLjM0NDcsMC0uNjI1LjI3OTgtLjYyNS42MjVzLjI4MDMuNjI1LjYyNS42MjVjMS4zMDk2LDAsMi4zNzUsMS4wNjU0LDIuMzc1LDIuMzc1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgiIGQ9Ik0xOSwxMy4zNzVjLS43ODIyLDAtMS41MzkxLjE1NzctMi4yNS40NjgzLS4zMTY0LjEzODItLjQ2MDkuNTA2OC0uMzIyMy44MjMyLjEzNzcuMzE2NC41MDc4LjQ1ODUuODIyMy4zMjIzLjU1MjctLjI0MTIsMS4xNDE2LS4zNjM4LDEuNzUtLjM2MzgsMi40MTIxLDAsNC4zNzUsMS45NjI0LDQuMzc1LDQuMzc1cy0xLjk2MjksNC4zNzUtNC4zNzUsNC4zNzUtNC4zNzUtMS45NjI0LTQuMzc1LTQuMzc1YzAtLjYwODkuMTIyMS0xLjE5NzMuMzYzMy0xLjc0OTUuMTM4Ny0uMzE2NC0uMDA1OS0uNjg1MS0uMzIyMy0uODIzMi0uMzE0NS0uMTM5Mi0uNjgzNi4wMDU0LS44MjIzLjMyMjMtLjMxMTUuNzExNC0uNDY4OCwxLjQ2ODMtLjQ2ODgsMi4yNTA1LDAsMy4xMDE2LDIuNTIzNCw1LjYyNSw1LjYyNSw1LjYyNXM1LjYyNS0yLjUyMzQsNS42MjUtNS42MjUtMi41MjM0LTUuNjI1LTUuNjI1LTUuNjI1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC05N2MxZWM4NC05YjgxLTQ1NmUtOTlhYS03MTM3NTBlYjY5ZTAiIGQ9Ik0zMC40NjY4LDE4LjczODhjLTIuMDU2Ni00LjQ3MzEtNi41NTc2LTcuMzYzOC0xMS40NjY4LTcuMzYzOHMtOS40MTAyLDIuODkwNi0xMS40NjY4LDcuMzYzOGMtLjA3NTIuMTY2LS4wNzUyLjM1NjQsMCwuNTIyNSwyLjA1NjYsNC40NzMxLDYuNTU3Niw3LjM2MzgsMTEuNDY2OCw3LjM2MzhzOS40MTAyLTIuODkwNiwxMS40NjY4LTcuMzYzOGMuMDc1Mi0uMTY2LjA3NTItLjM1NjQsMC0uNTIyNVpNMTksMjUuMzc1Yy00LjMyNjIsMC04LjMwMDgtMi40OTI3LTEwLjIwNjEtNi4zNzUsMS45MDUzLTMuODgyMyw1Ljg3OTktNi4zNzUsMTAuMjA2MS02LjM3NXM4LjMwMDgsMi40OTI3LDEwLjIwNjEsNi4zNzVjLTEuOTA1MywzLjg4MjMtNS44Nzk5LDYuMzc1LTEwLjIwNjEsNi4zNzVaIi8+CjxwYXRoIGNsYXNzPSJ1dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCIgZD0iTTE1LjQ0MjQsMTQuNTU4MWMtLjI0NDEtLjI0NDEtLjY0MDYtLjI0NDEtLjg4NDgsMC0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOGw0LDRjLjEyMjEuMTIyMS4yODIyLjE4MzEuNDQyNC4xODMxcy4zMjAzLS4wNjEuNDQyNC0uMTgzMWMuMjQzMi0uMjQ0MS4yNDMyLS42Mzk2LDAtLjg4MzhsLTQtNFoiLz4KPC9zdmc+Cg== mediatype: image/svg+xml install: spec: clusterPermissions: - rules: - apiGroups: - monitoring.rhobs resources: - alertmanagers - alertmanagers/finalizers - alertmanagers/status - alertmanagerconfigs - prometheuses - prometheuses/finalizers - prometheuses/status - prometheusagents - prometheusagents/finalizers - prometheusagents/status - thanosrulers - thanosrulers/finalizers - thanosrulers/status - scrapeconfigs - servicemonitors - podmonitors - probes - prometheusrules verbs: - '*' - apiGroups: - apps resources: - statefulsets verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets verbs: - '*' - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - "" resources: - endpoints verbs: - get - create - update - delete - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator - rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator-admission-webhook - rules: - apiGroups: - "" resources: - configmaps - secrets - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - endpoints - events - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers verbs: - get - list - watch - apiGroups: - "" resources: - services/finalizers verbs: - patch - update - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusterversions verbs: - get - list - watch - apiGroups: - console.openshift.io resources: - consoleplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - loki.grafana.com resources: - application - audit - infrastructure - network verbs: - get - apiGroups: - loki.grafana.com resources: - lokistacks verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - main resources: - alertmanagers/api verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - k8s resources: - prometheuses/api verbs: - create - get - update - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - alertmanagers - prometheuses - servicemonitors - thanosqueriers verbs: - create - delete - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks verbs: - create - get - list - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks/finalizers - monitoringstacks/status verbs: - get - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/finalizers verbs: - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/status verbs: - get - patch - update - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability/finalizers - clusterobservability/status - uiplugins/finalizers - uiplugins/status verbs: - get - update - apiGroups: - observability.openshift.io resources: - uiplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - consoles verbs: - get - list - patch - watch - apiGroups: - perses.dev resources: - perses - persesdashboards - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers - persesdashboards/finalizers - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status - persesdashboards/status - persesdatasources/status verbs: - get - patch - update - apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resourceNames: - nonroot - nonroot-v2 resources: - securitycontextconstraints verbs: - use - apiGroups: - storage.k8s.io resources: - storageclasses - volumeattachments verbs: - get - list - watch - apiGroups: - tempo.grafana.com resources: - tempomonolithics - tempostacks verbs: - list serviceAccountName: observability-operator-sa - rules: - apiGroups: - apps resources: - deployments - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services - configmaps - secrets verbs: - get - patch - update - create - delete - list - watch - apiGroups: - perses.dev resources: - perses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdashboards verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdashboards/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdashboards/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdatasources/status verbs: - get - patch - update serviceAccountName: perses-operator deployments: - label: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 automountServiceAccountToken: true containers: - args: - --prometheus-config-reloader=$(RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER) - --prometheus-instance-selector=app.kubernetes.io/managed-by=observability-operator - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator env: - name: GOGC value: "30" - name: RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER value: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 100m memory: 500Mi requests: cpu: 5m memory: 150Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook creationTimestamp: null labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false containers: - args: - --web.enable-tls=true - --web.cert-file=/tmp/k8s-webhook-server/serving-certs/tls.crt - --web.key-file=/tmp/k8s-webhook-server/serving-certs/tls.key image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator-admission-webhook tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 name: observability-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator strategy: {} template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - args: - --namespace=$(NAMESPACE) - --images=alertmanager=$(RELATED_IMAGE_ALERTMANAGER) - --images=prometheus=$(RELATED_IMAGE_PROMETHEUS) - --images=thanos=$(RELATED_IMAGE_THANOS) - --images=perses=$(RELATED_IMAGE_PERSES) - --images=ui-dashboards=$(RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN) - --images=ui-distributed-tracing=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN) - --images=ui-distributed-tracing-pf5=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5) - --images=ui-distributed-tracing-pf4=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4) - --images=ui-logging=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN) - --images=ui-logging-pf4=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4) - --images=ui-troubleshooting-panel=$(RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN) - --images=ui-monitoring=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN) - --images=ui-monitoring-pf5=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5) - --images=korrel8r=$(RELATED_IMAGE_KORREL8R) - --images=health-analyzer=$(RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER) - --openshift.enabled=true env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_ALERTMANAGER value: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 - name: RELATED_IMAGE_PROMETHEUS value: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 - name: RELATED_IMAGE_THANOS value: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 - name: RELATED_IMAGE_PERSES value: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 - name: RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN value: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 - name: RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN value: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e - name: RELATED_IMAGE_KORREL8R value: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 - name: RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER value: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 name: operator readinessProbe: httpGet: path: /healthz port: 8081 resources: limits: cpu: 400m memory: 512Mi requests: cpu: 100m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /etc/tls/private name: observability-operator-tls readOnly: true securityContext: runAsNonRoot: true serviceAccountName: observability-operator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - name: observability-operator-tls secret: optional: true secretName: observability-operator-tls - label: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator name: perses-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: perses-operator creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: perses-operator readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /ca name: openshift-service-ca readOnly: true serviceAccountName: perses-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt optional: true name: openshift-service-ca strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - observability - monitoring - prometheus - thanos links: - name: GitHub url: https://github.com/rhobs/observability-operator maintainers: - email: jfajersk@redhat.com name: Jan Fajerski - email: spasquie@redhat.com name: Simon Pasquier maturity: alpha provider: name: Red Hat relatedImages: - image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e name: cluster-observability-operator - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 name: prometheus-config-reloader - image: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 name: alertmanager - image: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 name: prometheus - image: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 name: thanos - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator - image: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 name: ui-dashboards - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a name: ui-tracing - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 name: ui-tracing-pf5 - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed name: ui-tracing-pf4 - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf name: ui-logging - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 name: ui-logging-pf4 - image: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad name: ui-troubleshooting - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 name: ui-monitoring - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e name: ui-monitoring-pf5 - image: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 name: korrel8r - image: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd name: cluster-health-analyzer - image: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 name: perses - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c name: perses-operator replaces: cluster-observability-operator.v1.2.1 version: 1.2.2 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: alertmanagerconfigs.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - alertmanagerconfigs scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-alertmanagerconfigs/validate - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: prometheusrules.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - prometheusrules scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-prometheusrules/validate status: certsLastUpdated: "2025-10-11T10:48:15Z" certsRotateAt: "2027-10-10T10:48:14Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:06Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:16Z" message: 'installing: waiting for deployment obo-prometheus-operator to become ready: deployment "obo-prometheus-operator" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: The operator is running in openshift-operators but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagerconfigs.monitoring.rhobs status: Present uuid: 6dbb3562-3502-427f-a8ac-69f5fee677eb version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagers.monitoring.rhobs status: Present uuid: 94358371-764f-469d-bfdf-60918719ad15 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: monitoringstacks.monitoring.rhobs status: Present uuid: eef8c5db-14cc-4b9b-a16a-bb53c9085ad8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: perses.perses.dev status: Present uuid: 699a06b6-6ea1-470b-9396-ea9e74aacbf0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdashboards.perses.dev status: Present uuid: 9fdcb708-f24c-4a68-9e4d-a90cc21b8b2a version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdatasources.perses.dev status: Present uuid: 3367dd1b-8fbf-4ec3-bc6e-5ac723632866 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: podmonitors.monitoring.rhobs status: Present uuid: 119333e4-8acd-4490-89f2-0ab4c2cb69e3 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: probes.monitoring.rhobs status: Present uuid: b6f5743f-53c5-4ef2-ba73-1dfff01529ab version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusagents.monitoring.rhobs status: Present uuid: 9cd94803-872e-48c2-b886-046df0f3ea97 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheuses.monitoring.rhobs status: Present uuid: 63114d9d-5830-4525-a696-f9d5631f50bf version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusrules.monitoring.rhobs status: Present uuid: d001857d-a609-4f31-ac94-103f85059cda version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: scrapeconfigs.monitoring.rhobs status: Present uuid: 54fa29dc-530e-4d4e-9d1f-dddec15c22af version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicemonitors.monitoring.rhobs status: Present uuid: 7f226d56-076c-4493-a434-faf2df2977a1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosqueriers.monitoring.rhobs status: Present uuid: 425ae3fd-53e2-48ba-9e21-ab9fc60cc7b0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosrulers.monitoring.rhobs status: Present uuid: d496ce12-f67c-4cd5-a94f-7da43dbd9c84 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: uiplugins.observability.openshift.io status: Present uuid: be0bccb8-7608-4f4a-b285-faef260080c5 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update","create","delete","list","watch"],"apiGroups":[""],"resources":["services","configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdashboards"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/status"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: perses-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","alertmanagers/finalizers","alertmanagers/status","alertmanagerconfigs","prometheuses","prometheuses/finalizers","prometheuses/status","prometheusagents","prometheusagents/finalizers","prometheusagents/status","thanosrulers","thanosrulers/finalizers","thanosrulers/status","scrapeconfigs","servicemonitors","podmonitors","probes","prometheusrules"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":[""],"resources":["configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","delete"],"apiGroups":[""],"resources":["pods"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["services","services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","create"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["endpoints"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator-admission-webhook status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["configmaps","secrets","serviceaccounts","services"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["endpoints","events","namespaces","nodes","persistentvolumeclaims","persistentvolumes","pods","replicationcontrollers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","update"],"apiGroups":[""],"resources":["services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","replicasets","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["autoscaling"],"resources":["horizontalpodautoscalers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["batch"],"resources":["cronjobs","jobs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusterversions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["console.openshift.io"],"resources":["consoleplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["loki.grafana.com"],"resources":["application","audit","infrastructure","network"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["loki.grafana.com"],"resources":["lokistacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["monitoring.coreos.com"],"resources":["alertmanagers/api"],"resourceNames":["main"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","update"],"apiGroups":["monitoring.coreos.com"],"resources":["prometheuses/api"],"resourceNames":["k8s"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","list","patch","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","prometheuses","servicemonitors","thanosqueriers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","list","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks/finalizers","monitoringstacks/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses","networkpolicies"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability/finalizers","clusterobservability/status","uiplugins/finalizers","uiplugins/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["observability.openshift.io"],"resources":["uiplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","patch","watch"],"apiGroups":["operator.openshift.io"],"resources":["consoles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses","persesdashboards","persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers","persesdashboards/finalizers","persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status","persesdashboards/status","persesdatasources/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["poddisruptionbudgets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterrolebindings","clusterroles","rolebindings","roles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot","nonroot-v2"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses","volumeattachments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":["tempo.grafana.com"],"resources":["tempomonolithics","tempostacks"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: observability-operator-sa status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "MonitoringStack", "metadata": { "labels": { "mso": "example" }, "name": "sample-monitoring-stack" }, "spec": { "logLevel": "debug", "resourceSelector": { "matchLabels": { "app": "demo" } }, "retention": "1d" } }, { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "ThanosQuerier", "metadata": { "name": "example-thanos" }, "spec": { "selector": { "matchLabels": { "mso": "example" } } } } ] capabilities: Basic Install categories: Monitoring certified: "false" containerImage: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e createdAt: "2025-06-24T11:30:26Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. features.operators.openshift.io/cnf: "false" features.operators.openshift.io/cni: "false" features.operators.openshift.io/csi: "false" features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "false" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: global-operators olm.operatorNamespace: openshift-operators olm.skipRange: '>=..0 <1.2.2' operatorframework.io/cluster-monitoring: "true" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Alertmanager","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"AlertmanagerConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"MonitoringStack","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PodMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Probe","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Prometheus","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusAgent","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusRule","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ScrapeConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ServiceMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosQuerier","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosRuler","version":"v1"}},{"type":"olm.gvk","value":{"group":"observability.openshift.io","kind":"UIPlugin","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"Perses","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDashboard","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDatasource","version":"v1alpha1"}},{"type":"olm.package","value":{"packageName":"cluster-observability-operator","version":"1.2.2"}}]}' operatorframework.io/suggested-namespace: openshift-cluster-observability-operator operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/internal-objects: |- [ "prometheuses.monitoring.rhobs", "alertmanagers.monitoring.rhobs", "thanosrulers.monitoring.rhobs", "prometheusagents.monitoring.rhobs", "perses.perses.dev" ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator support: Cluster Observability (https://issues.redhat.com/projects/COO/) creationTimestamp: "2025-10-11T10:48:14Z" generation: 1 labels: olm.copiedFrom: openshift-operators olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.arm64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: cluster-observability-operator.v1.2.2 namespace: openshift-nmstate resourceVersion: "28685" uid: 1b9813d3-4ff0-4440-9e0a-61537fd6f386 spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems displayName: AlertmanagerConfig kind: AlertmanagerConfig name: alertmanagerconfigs.monitoring.rhobs version: v1alpha1 - description: Alertmanager describes an Alertmanager cluster displayName: Alertmanager kind: Alertmanager name: alertmanagers.monitoring.rhobs version: v1 - description: MonitoringStack is the Schema for the monitoringstacks API displayName: MonitoringStack kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - description: Perses is the Schema for the perses API displayName: Perses kind: Perses name: perses.perses.dev version: v1alpha1 - description: A Perses Dashboard displayName: Perses Dashboard kind: PersesDashboard name: persesdashboards.perses.dev version: v1alpha1 - description: A Perses Datasource displayName: Perses Datasource kind: PersesDatasource name: persesdatasources.perses.dev version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor name: podmonitors.monitoring.rhobs version: v1 - description: Probe defines monitoring for a set of static targets or ingresses displayName: Probe kind: Probe name: probes.monitoring.rhobs version: v1 - description: PrometheusAgent defines a Prometheus agent deployment displayName: PrometheusAgent kind: PrometheusAgent name: prometheusagents.monitoring.rhobs version: v1alpha1 - description: Prometheus defines a Prometheus deployment displayName: Prometheus kind: Prometheus name: prometheuses.monitoring.rhobs version: v1 - description: PrometheusRule defines recording and alerting rules for a Prometheus instance displayName: PrometheusRule kind: PrometheusRule name: prometheusrules.monitoring.rhobs version: v1 - description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration displayName: ScrapeConfig kind: ScrapeConfig name: scrapeconfigs.monitoring.rhobs version: v1alpha1 - description: ServiceMonitor defines monitoring for a set of services displayName: ServiceMonitor kind: ServiceMonitor name: servicemonitors.monitoring.rhobs version: v1 - description: ThanosQuerier outlines the Thanos querier components, managed by this stack displayName: ThanosQuerier kind: ThanosQuerier name: thanosqueriers.monitoring.rhobs version: v1alpha1 - description: ThanosRuler defines a ThanosRuler deployment displayName: ThanosRuler kind: ThanosRuler name: thanosrulers.monitoring.rhobs version: v1 - description: UIPlugin defines a console plugin for observability displayName: UIPlugin kind: UIPlugin name: uiplugins.observability.openshift.io version: v1alpha1 description: |- Cluster Observability Operator is a Go based Kubernetes operator to easily setup and manage various observability tools. ### Supported Features - Setup multiple Highly Available Monitoring stack using Prometheus, Alertmanager and Thanos Querier - Customizable configuration for managing Prometheus deployments - Customizable configuration for managing Alertmanager deployments - Customizable configuration for managing Thanos Querier deployments - Setup console plugins - Setup korrel8r - Setup Perses - Setup Cluster Health Analyzer ### Documentation - **[Documentation](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/cluster_observability_operator/index)** ### License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) displayName: Cluster Observability Operator icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC1kMWI4NDIzOC0wYzgxLTQ5MjctOGQ4Mi03OTcyN2Y5OGZjYWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4IDM4Ij4KPHRpdGxlPkNsdXN0ZXIgb2JzZXJ2YWJpbGl0eTwvdGl0bGU+CjxkZXNjPmNsb3VkPC9kZXNjPgo8bWV0YWRhdGE+PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOC4wLWMwMDEgMS4wMDAwMDAsIDAwMDAvMDAvMDAtMDA6MDA6MDAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8IS0tIG1ldGFkYXRhIGZpZWxkcyAtLT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InciPz48L21ldGFkYXRhPgo8ZGVmcz48c3R5bGU+LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhe2ZpbGw6I2UwZTBlMDt9LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhLC51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCwudXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgsLnV1aWQtNGJlZjgyMGItNTZjOS00N2U3LTgyYTMtMmRiOGQ4YzdiMTEye3N0cm9rZS13aWR0aDowcHg7fS51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMHtmaWxsOiMwMDA7fS51dWlkLWYwMzIxNzhlLWJkNTAtNGRlNy1iNzczLTY2NWJmZDVjNWJiOHtmaWxsOiNlMDA7fS51dWlkLTRiZWY4MjBiLTU2YzktNDdlNy04MmEzLTJkYjhkOGM3YjExMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPgo8cmVjdCBjbGFzcz0idXVpZC00YmVmODIwYi01NmM5LTQ3ZTctODJhMy0yZGI4ZDhjN2IxMTIiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+CjxwYXRoIGNsYXNzPSJ1dWlkLTI0YjBkOTdiLTY4MWUtNGRhNi1hMWM3LTc2NzFhZTU3NTMyYSIgZD0iTTI4LDIuMjVjNC4yNzM0LDAsNy43NSwzLjQ3NjYsNy43NSw3Ljc1djE4YzAsNC4yNzM0LTMuNDc2Niw3Ljc1LTcuNzUsNy43NUgxMGMtNC4yNzM0LDAtNy43NS0zLjQ3NjYtNy43NS03Ljc1VjEwYzAtNC4yNzM0LDMuNDc2Ni03Ljc1LDcuNzUtNy43NWgxOE0yOCwxSDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz4KPHBhdGggY2xhc3M9InV1aWQtZjAzMjE3OGUtYmQ1MC00ZGU3LWI3NzMtNjY1YmZkNWM1YmI4IiBkPSJNMjEuMzc1LDE5YzAsLjM0NTIuMjgwMy42MjUuNjI1LjYyNXMuNjI1LS4yNzk4LjYyNS0uNjI1YzAtMS45OTktMS42MjYtMy42MjUtMy42MjUtMy42MjUtLjM0NDcsMC0uNjI1LjI3OTgtLjYyNS42MjVzLjI4MDMuNjI1LjYyNS42MjVjMS4zMDk2LDAsMi4zNzUsMS4wNjU0LDIuMzc1LDIuMzc1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgiIGQ9Ik0xOSwxMy4zNzVjLS43ODIyLDAtMS41MzkxLjE1NzctMi4yNS40NjgzLS4zMTY0LjEzODItLjQ2MDkuNTA2OC0uMzIyMy44MjMyLjEzNzcuMzE2NC41MDc4LjQ1ODUuODIyMy4zMjIzLjU1MjctLjI0MTIsMS4xNDE2LS4zNjM4LDEuNzUtLjM2MzgsMi40MTIxLDAsNC4zNzUsMS45NjI0LDQuMzc1LDQuMzc1cy0xLjk2MjksNC4zNzUtNC4zNzUsNC4zNzUtNC4zNzUtMS45NjI0LTQuMzc1LTQuMzc1YzAtLjYwODkuMTIyMS0xLjE5NzMuMzYzMy0xLjc0OTUuMTM4Ny0uMzE2NC0uMDA1OS0uNjg1MS0uMzIyMy0uODIzMi0uMzE0NS0uMTM5Mi0uNjgzNi4wMDU0LS44MjIzLjMyMjMtLjMxMTUuNzExNC0uNDY4OCwxLjQ2ODMtLjQ2ODgsMi4yNTA1LDAsMy4xMDE2LDIuNTIzNCw1LjYyNSw1LjYyNSw1LjYyNXM1LjYyNS0yLjUyMzQsNS42MjUtNS42MjUtMi41MjM0LTUuNjI1LTUuNjI1LTUuNjI1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC05N2MxZWM4NC05YjgxLTQ1NmUtOTlhYS03MTM3NTBlYjY5ZTAiIGQ9Ik0zMC40NjY4LDE4LjczODhjLTIuMDU2Ni00LjQ3MzEtNi41NTc2LTcuMzYzOC0xMS40NjY4LTcuMzYzOHMtOS40MTAyLDIuODkwNi0xMS40NjY4LDcuMzYzOGMtLjA3NTIuMTY2LS4wNzUyLjM1NjQsMCwuNTIyNSwyLjA1NjYsNC40NzMxLDYuNTU3Niw3LjM2MzgsMTEuNDY2OCw3LjM2MzhzOS40MTAyLTIuODkwNiwxMS40NjY4LTcuMzYzOGMuMDc1Mi0uMTY2LjA3NTItLjM1NjQsMC0uNTIyNVpNMTksMjUuMzc1Yy00LjMyNjIsMC04LjMwMDgtMi40OTI3LTEwLjIwNjEtNi4zNzUsMS45MDUzLTMuODgyMyw1Ljg3OTktNi4zNzUsMTAuMjA2MS02LjM3NXM4LjMwMDgsMi40OTI3LDEwLjIwNjEsNi4zNzVjLTEuOTA1MywzLjg4MjMtNS44Nzk5LDYuMzc1LTEwLjIwNjEsNi4zNzVaIi8+CjxwYXRoIGNsYXNzPSJ1dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCIgZD0iTTE1LjQ0MjQsMTQuNTU4MWMtLjI0NDEtLjI0NDEtLjY0MDYtLjI0NDEtLjg4NDgsMC0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOGw0LDRjLjEyMjEuMTIyMS4yODIyLjE4MzEuNDQyNC4xODMxcy4zMjAzLS4wNjEuNDQyNC0uMTgzMWMuMjQzMi0uMjQ0MS4yNDMyLS42Mzk2LDAtLjg4MzhsLTQtNFoiLz4KPC9zdmc+Cg== mediatype: image/svg+xml install: spec: clusterPermissions: - rules: - apiGroups: - monitoring.rhobs resources: - alertmanagers - alertmanagers/finalizers - alertmanagers/status - alertmanagerconfigs - prometheuses - prometheuses/finalizers - prometheuses/status - prometheusagents - prometheusagents/finalizers - prometheusagents/status - thanosrulers - thanosrulers/finalizers - thanosrulers/status - scrapeconfigs - servicemonitors - podmonitors - probes - prometheusrules verbs: - '*' - apiGroups: - apps resources: - statefulsets verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets verbs: - '*' - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - "" resources: - endpoints verbs: - get - create - update - delete - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator - rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator-admission-webhook - rules: - apiGroups: - "" resources: - configmaps - secrets - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - endpoints - events - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers verbs: - get - list - watch - apiGroups: - "" resources: - services/finalizers verbs: - patch - update - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusterversions verbs: - get - list - watch - apiGroups: - console.openshift.io resources: - consoleplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - loki.grafana.com resources: - application - audit - infrastructure - network verbs: - get - apiGroups: - loki.grafana.com resources: - lokistacks verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - main resources: - alertmanagers/api verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - k8s resources: - prometheuses/api verbs: - create - get - update - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - alertmanagers - prometheuses - servicemonitors - thanosqueriers verbs: - create - delete - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks verbs: - create - get - list - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks/finalizers - monitoringstacks/status verbs: - get - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/finalizers verbs: - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/status verbs: - get - patch - update - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability/finalizers - clusterobservability/status - uiplugins/finalizers - uiplugins/status verbs: - get - update - apiGroups: - observability.openshift.io resources: - uiplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - consoles verbs: - get - list - patch - watch - apiGroups: - perses.dev resources: - perses - persesdashboards - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers - persesdashboards/finalizers - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status - persesdashboards/status - persesdatasources/status verbs: - get - patch - update - apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resourceNames: - nonroot - nonroot-v2 resources: - securitycontextconstraints verbs: - use - apiGroups: - storage.k8s.io resources: - storageclasses - volumeattachments verbs: - get - list - watch - apiGroups: - tempo.grafana.com resources: - tempomonolithics - tempostacks verbs: - list serviceAccountName: observability-operator-sa - rules: - apiGroups: - apps resources: - deployments - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services - configmaps - secrets verbs: - get - patch - update - create - delete - list - watch - apiGroups: - perses.dev resources: - perses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdashboards verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdashboards/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdashboards/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdatasources/status verbs: - get - patch - update serviceAccountName: perses-operator deployments: - label: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 automountServiceAccountToken: true containers: - args: - --prometheus-config-reloader=$(RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER) - --prometheus-instance-selector=app.kubernetes.io/managed-by=observability-operator - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator env: - name: GOGC value: "30" - name: RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER value: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 100m memory: 500Mi requests: cpu: 5m memory: 150Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook creationTimestamp: null labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false containers: - args: - --web.enable-tls=true - --web.cert-file=/tmp/k8s-webhook-server/serving-certs/tls.crt - --web.key-file=/tmp/k8s-webhook-server/serving-certs/tls.key image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator-admission-webhook tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 name: observability-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator strategy: {} template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - args: - --namespace=$(NAMESPACE) - --images=alertmanager=$(RELATED_IMAGE_ALERTMANAGER) - --images=prometheus=$(RELATED_IMAGE_PROMETHEUS) - --images=thanos=$(RELATED_IMAGE_THANOS) - --images=perses=$(RELATED_IMAGE_PERSES) - --images=ui-dashboards=$(RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN) - --images=ui-distributed-tracing=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN) - --images=ui-distributed-tracing-pf5=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5) - --images=ui-distributed-tracing-pf4=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4) - --images=ui-logging=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN) - --images=ui-logging-pf4=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4) - --images=ui-troubleshooting-panel=$(RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN) - --images=ui-monitoring=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN) - --images=ui-monitoring-pf5=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5) - --images=korrel8r=$(RELATED_IMAGE_KORREL8R) - --images=health-analyzer=$(RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER) - --openshift.enabled=true env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_ALERTMANAGER value: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 - name: RELATED_IMAGE_PROMETHEUS value: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 - name: RELATED_IMAGE_THANOS value: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 - name: RELATED_IMAGE_PERSES value: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 - name: RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN value: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 - name: RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN value: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e - name: RELATED_IMAGE_KORREL8R value: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 - name: RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER value: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 name: operator readinessProbe: httpGet: path: /healthz port: 8081 resources: limits: cpu: 400m memory: 512Mi requests: cpu: 100m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /etc/tls/private name: observability-operator-tls readOnly: true securityContext: runAsNonRoot: true serviceAccountName: observability-operator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - name: observability-operator-tls secret: optional: true secretName: observability-operator-tls - label: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator name: perses-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: perses-operator creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: perses-operator readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /ca name: openshift-service-ca readOnly: true serviceAccountName: perses-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt optional: true name: openshift-service-ca strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - observability - monitoring - prometheus - thanos links: - name: GitHub url: https://github.com/rhobs/observability-operator maintainers: - email: jfajersk@redhat.com name: Jan Fajerski - email: spasquie@redhat.com name: Simon Pasquier maturity: alpha provider: name: Red Hat relatedImages: - image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e name: cluster-observability-operator - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 name: prometheus-config-reloader - image: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 name: alertmanager - image: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 name: prometheus - image: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 name: thanos - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator - image: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 name: ui-dashboards - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a name: ui-tracing - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 name: ui-tracing-pf5 - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed name: ui-tracing-pf4 - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf name: ui-logging - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 name: ui-logging-pf4 - image: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad name: ui-troubleshooting - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 name: ui-monitoring - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e name: ui-monitoring-pf5 - image: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 name: korrel8r - image: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd name: cluster-health-analyzer - image: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 name: perses - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c name: perses-operator replaces: cluster-observability-operator.v1.2.1 version: 1.2.2 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: alertmanagerconfigs.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - alertmanagerconfigs scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-alertmanagerconfigs/validate - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: prometheusrules.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - prometheusrules scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-prometheusrules/validate status: certsLastUpdated: "2025-10-11T10:48:15Z" certsRotateAt: "2027-10-10T10:48:14Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:06Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:16Z" message: 'installing: waiting for deployment obo-prometheus-operator to become ready: deployment "obo-prometheus-operator" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: The operator is running in openshift-operators but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagerconfigs.monitoring.rhobs status: Present uuid: 6dbb3562-3502-427f-a8ac-69f5fee677eb version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagers.monitoring.rhobs status: Present uuid: 94358371-764f-469d-bfdf-60918719ad15 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: monitoringstacks.monitoring.rhobs status: Present uuid: eef8c5db-14cc-4b9b-a16a-bb53c9085ad8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: perses.perses.dev status: Present uuid: 699a06b6-6ea1-470b-9396-ea9e74aacbf0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdashboards.perses.dev status: Present uuid: 9fdcb708-f24c-4a68-9e4d-a90cc21b8b2a version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdatasources.perses.dev status: Present uuid: 3367dd1b-8fbf-4ec3-bc6e-5ac723632866 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: podmonitors.monitoring.rhobs status: Present uuid: 119333e4-8acd-4490-89f2-0ab4c2cb69e3 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: probes.monitoring.rhobs status: Present uuid: b6f5743f-53c5-4ef2-ba73-1dfff01529ab version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusagents.monitoring.rhobs status: Present uuid: 9cd94803-872e-48c2-b886-046df0f3ea97 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheuses.monitoring.rhobs status: Present uuid: 63114d9d-5830-4525-a696-f9d5631f50bf version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusrules.monitoring.rhobs status: Present uuid: d001857d-a609-4f31-ac94-103f85059cda version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: scrapeconfigs.monitoring.rhobs status: Present uuid: 54fa29dc-530e-4d4e-9d1f-dddec15c22af version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicemonitors.monitoring.rhobs status: Present uuid: 7f226d56-076c-4493-a434-faf2df2977a1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosqueriers.monitoring.rhobs status: Present uuid: 425ae3fd-53e2-48ba-9e21-ab9fc60cc7b0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosrulers.monitoring.rhobs status: Present uuid: d496ce12-f67c-4cd5-a94f-7da43dbd9c84 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: uiplugins.observability.openshift.io status: Present uuid: be0bccb8-7608-4f4a-b285-faef260080c5 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update","create","delete","list","watch"],"apiGroups":[""],"resources":["services","configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdashboards"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/status"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: perses-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","alertmanagers/finalizers","alertmanagers/status","alertmanagerconfigs","prometheuses","prometheuses/finalizers","prometheuses/status","prometheusagents","prometheusagents/finalizers","prometheusagents/status","thanosrulers","thanosrulers/finalizers","thanosrulers/status","scrapeconfigs","servicemonitors","podmonitors","probes","prometheusrules"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":[""],"resources":["configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","delete"],"apiGroups":[""],"resources":["pods"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["services","services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","create"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["endpoints"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator-admission-webhook status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["configmaps","secrets","serviceaccounts","services"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["endpoints","events","namespaces","nodes","persistentvolumeclaims","persistentvolumes","pods","replicationcontrollers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","update"],"apiGroups":[""],"resources":["services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","replicasets","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["autoscaling"],"resources":["horizontalpodautoscalers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["batch"],"resources":["cronjobs","jobs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusterversions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["console.openshift.io"],"resources":["consoleplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["loki.grafana.com"],"resources":["application","audit","infrastructure","network"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["loki.grafana.com"],"resources":["lokistacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["monitoring.coreos.com"],"resources":["alertmanagers/api"],"resourceNames":["main"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","update"],"apiGroups":["monitoring.coreos.com"],"resources":["prometheuses/api"],"resourceNames":["k8s"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","list","patch","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","prometheuses","servicemonitors","thanosqueriers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","list","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks/finalizers","monitoringstacks/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses","networkpolicies"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability/finalizers","clusterobservability/status","uiplugins/finalizers","uiplugins/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["observability.openshift.io"],"resources":["uiplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","patch","watch"],"apiGroups":["operator.openshift.io"],"resources":["consoles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses","persesdashboards","persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers","persesdashboards/finalizers","persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status","persesdashboards/status","persesdatasources/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["poddisruptionbudgets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterrolebindings","clusterroles","rolebindings","roles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot","nonroot-v2"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses","volumeattachments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":["tempo.grafana.com"],"resources":["tempomonolithics","tempostacks"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: observability-operator-sa status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "MonitoringStack", "metadata": { "labels": { "mso": "example" }, "name": "sample-monitoring-stack" }, "spec": { "logLevel": "debug", "resourceSelector": { "matchLabels": { "app": "demo" } }, "retention": "1d" } }, { "apiVersion": "monitoring.rhobs/v1alpha1", "kind": "ThanosQuerier", "metadata": { "name": "example-thanos" }, "spec": { "selector": { "matchLabels": { "mso": "example" } } } } ] capabilities: Basic Install categories: Monitoring certified: "false" containerImage: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e createdAt: "2025-06-24T11:30:26Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. features.operators.openshift.io/cnf: "false" features.operators.openshift.io/cni: "false" features.operators.openshift.io/csi: "false" features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "false" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: global-operators olm.operatorNamespace: openshift-operators olm.skipRange: '>=..0 <1.2.2' operatorframework.io/cluster-monitoring: "true" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Alertmanager","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"AlertmanagerConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"MonitoringStack","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PodMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Probe","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"Prometheus","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusAgent","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"PrometheusRule","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ScrapeConfig","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ServiceMonitor","version":"v1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosQuerier","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"monitoring.rhobs","kind":"ThanosRuler","version":"v1"}},{"type":"olm.gvk","value":{"group":"observability.openshift.io","kind":"UIPlugin","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"Perses","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDashboard","version":"v1alpha1"}},{"type":"olm.gvk","value":{"group":"perses.dev","kind":"PersesDatasource","version":"v1alpha1"}},{"type":"olm.package","value":{"packageName":"cluster-observability-operator","version":"1.2.2"}}]}' operatorframework.io/suggested-namespace: openshift-cluster-observability-operator operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/internal-objects: |- [ "prometheuses.monitoring.rhobs", "alertmanagers.monitoring.rhobs", "thanosrulers.monitoring.rhobs", "prometheusagents.monitoring.rhobs", "perses.perses.dev" ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator support: Cluster Observability (https://issues.redhat.com/projects/COO/) creationTimestamp: "2025-10-11T10:48:15Z" generation: 1 labels: olm.copiedFrom: openshift-operators olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.arm64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: cluster-observability-operator.v1.2.2 namespace: metallb-system resourceVersion: "28697" uid: 0bf8e55d-d032-47c2-9078-ce3f4378eef1 spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: AlertmanagerConfig configures the Prometheus Alertmanager, specifying how alerts should be grouped, inhibited and notified to external systems displayName: AlertmanagerConfig kind: AlertmanagerConfig name: alertmanagerconfigs.monitoring.rhobs version: v1alpha1 - description: Alertmanager describes an Alertmanager cluster displayName: Alertmanager kind: Alertmanager name: alertmanagers.monitoring.rhobs version: v1 - description: MonitoringStack is the Schema for the monitoringstacks API displayName: MonitoringStack kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - description: Perses is the Schema for the perses API displayName: Perses kind: Perses name: perses.perses.dev version: v1alpha1 - description: A Perses Dashboard displayName: Perses Dashboard kind: PersesDashboard name: persesdashboards.perses.dev version: v1alpha1 - description: A Perses Datasource displayName: Perses Datasource kind: PersesDatasource name: persesdatasources.perses.dev version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor name: podmonitors.monitoring.rhobs version: v1 - description: Probe defines monitoring for a set of static targets or ingresses displayName: Probe kind: Probe name: probes.monitoring.rhobs version: v1 - description: PrometheusAgent defines a Prometheus agent deployment displayName: PrometheusAgent kind: PrometheusAgent name: prometheusagents.monitoring.rhobs version: v1alpha1 - description: Prometheus defines a Prometheus deployment displayName: Prometheus kind: Prometheus name: prometheuses.monitoring.rhobs version: v1 - description: PrometheusRule defines recording and alerting rules for a Prometheus instance displayName: PrometheusRule kind: PrometheusRule name: prometheusrules.monitoring.rhobs version: v1 - description: ScrapeConfig defines a namespaced Prometheus scrape_config to be aggregated across multiple namespaces into the Prometheus configuration displayName: ScrapeConfig kind: ScrapeConfig name: scrapeconfigs.monitoring.rhobs version: v1alpha1 - description: ServiceMonitor defines monitoring for a set of services displayName: ServiceMonitor kind: ServiceMonitor name: servicemonitors.monitoring.rhobs version: v1 - description: ThanosQuerier outlines the Thanos querier components, managed by this stack displayName: ThanosQuerier kind: ThanosQuerier name: thanosqueriers.monitoring.rhobs version: v1alpha1 - description: ThanosRuler defines a ThanosRuler deployment displayName: ThanosRuler kind: ThanosRuler name: thanosrulers.monitoring.rhobs version: v1 - description: UIPlugin defines a console plugin for observability displayName: UIPlugin kind: UIPlugin name: uiplugins.observability.openshift.io version: v1alpha1 description: |- Cluster Observability Operator is a Go based Kubernetes operator to easily setup and manage various observability tools. ### Supported Features - Setup multiple Highly Available Monitoring stack using Prometheus, Alertmanager and Thanos Querier - Customizable configuration for managing Prometheus deployments - Customizable configuration for managing Alertmanager deployments - Customizable configuration for managing Thanos Querier deployments - Setup console plugins - Setup korrel8r - Setup Perses - Setup Cluster Health Analyzer ### Documentation - **[Documentation](https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/cluster_observability_operator/index)** ### License Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) displayName: Cluster Observability Operator icon: - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC1kMWI4NDIzOC0wYzgxLTQ5MjctOGQ4Mi03OTcyN2Y5OGZjYWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDM4IDM4Ij4KPHRpdGxlPkNsdXN0ZXIgb2JzZXJ2YWJpbGl0eTwvdGl0bGU+CjxkZXNjPmNsb3VkPC9kZXNjPgo8bWV0YWRhdGE+PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOC4wLWMwMDEgMS4wMDAwMDAsIDAwMDAvMDAvMDAtMDA6MDA6MDAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8IS0tIG1ldGFkYXRhIGZpZWxkcyAtLT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InciPz48L21ldGFkYXRhPgo8ZGVmcz48c3R5bGU+LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhe2ZpbGw6I2UwZTBlMDt9LnV1aWQtMjRiMGQ5N2ItNjgxZS00ZGE2LWExYzctNzY3MWFlNTc1MzJhLC51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCwudXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgsLnV1aWQtNGJlZjgyMGItNTZjOS00N2U3LTgyYTMtMmRiOGQ4YzdiMTEye3N0cm9rZS13aWR0aDowcHg7fS51dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMHtmaWxsOiMwMDA7fS51dWlkLWYwMzIxNzhlLWJkNTAtNGRlNy1iNzczLTY2NWJmZDVjNWJiOHtmaWxsOiNlMDA7fS51dWlkLTRiZWY4MjBiLTU2YzktNDdlNy04MmEzLTJkYjhkOGM3YjExMntmaWxsOiNmZmY7fTwvc3R5bGU+PC9kZWZzPgo8cmVjdCBjbGFzcz0idXVpZC00YmVmODIwYi01NmM5LTQ3ZTctODJhMy0yZGI4ZDhjN2IxMTIiIHg9IjEiIHk9IjEiIHdpZHRoPSIzNiIgaGVpZ2h0PSIzNiIgcng9IjkiIHJ5PSI5Ii8+CjxwYXRoIGNsYXNzPSJ1dWlkLTI0YjBkOTdiLTY4MWUtNGRhNi1hMWM3LTc2NzFhZTU3NTMyYSIgZD0iTTI4LDIuMjVjNC4yNzM0LDAsNy43NSwzLjQ3NjYsNy43NSw3Ljc1djE4YzAsNC4yNzM0LTMuNDc2Niw3Ljc1LTcuNzUsNy43NUgxMGMtNC4yNzM0LDAtNy43NS0zLjQ3NjYtNy43NS03Ljc1VjEwYzAtNC4yNzM0LDMuNDc2Ni03Ljc1LDcuNzUtNy43NWgxOE0yOCwxSDEwQzUuMDI5NCwxLDEsNS4wMjk0LDEsMTB2MThjMCw0Ljk3MDYsNC4wMjk0LDksOSw5aDE4YzQuOTcwNiwwLDktNC4wMjk0LDktOVYxMGMwLTQuOTcwNi00LjAyOTQtOS05LTloMFoiLz4KPHBhdGggY2xhc3M9InV1aWQtZjAzMjE3OGUtYmQ1MC00ZGU3LWI3NzMtNjY1YmZkNWM1YmI4IiBkPSJNMjEuMzc1LDE5YzAsLjM0NTIuMjgwMy42MjUuNjI1LjYyNXMuNjI1LS4yNzk4LjYyNS0uNjI1YzAtMS45OTktMS42MjYtMy42MjUtMy42MjUtMy42MjUtLjM0NDcsMC0uNjI1LjI3OTgtLjYyNS42MjVzLjI4MDMuNjI1LjYyNS42MjVjMS4zMDk2LDAsMi4zNzUsMS4wNjU0LDIuMzc1LDIuMzc1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC1mMDMyMTc4ZS1iZDUwLTRkZTctYjc3My02NjViZmQ1YzViYjgiIGQ9Ik0xOSwxMy4zNzVjLS43ODIyLDAtMS41MzkxLjE1NzctMi4yNS40NjgzLS4zMTY0LjEzODItLjQ2MDkuNTA2OC0uMzIyMy44MjMyLjEzNzcuMzE2NC41MDc4LjQ1ODUuODIyMy4zMjIzLjU1MjctLjI0MTIsMS4xNDE2LS4zNjM4LDEuNzUtLjM2MzgsMi40MTIxLDAsNC4zNzUsMS45NjI0LDQuMzc1LDQuMzc1cy0xLjk2MjksNC4zNzUtNC4zNzUsNC4zNzUtNC4zNzUtMS45NjI0LTQuMzc1LTQuMzc1YzAtLjYwODkuMTIyMS0xLjE5NzMuMzYzMy0xLjc0OTUuMTM4Ny0uMzE2NC0uMDA1OS0uNjg1MS0uMzIyMy0uODIzMi0uMzE0NS0uMTM5Mi0uNjgzNi4wMDU0LS44MjIzLjMyMjMtLjMxMTUuNzExNC0uNDY4OCwxLjQ2ODMtLjQ2ODgsMi4yNTA1LDAsMy4xMDE2LDIuNTIzNCw1LjYyNSw1LjYyNSw1LjYyNXM1LjYyNS0yLjUyMzQsNS42MjUtNS42MjUtMi41MjM0LTUuNjI1LTUuNjI1LTUuNjI1WiIvPgo8cGF0aCBjbGFzcz0idXVpZC05N2MxZWM4NC05YjgxLTQ1NmUtOTlhYS03MTM3NTBlYjY5ZTAiIGQ9Ik0zMC40NjY4LDE4LjczODhjLTIuMDU2Ni00LjQ3MzEtNi41NTc2LTcuMzYzOC0xMS40NjY4LTcuMzYzOHMtOS40MTAyLDIuODkwNi0xMS40NjY4LDcuMzYzOGMtLjA3NTIuMTY2LS4wNzUyLjM1NjQsMCwuNTIyNSwyLjA1NjYsNC40NzMxLDYuNTU3Niw3LjM2MzgsMTEuNDY2OCw3LjM2MzhzOS40MTAyLTIuODkwNiwxMS40NjY4LTcuMzYzOGMuMDc1Mi0uMTY2LjA3NTItLjM1NjQsMC0uNTIyNVpNMTksMjUuMzc1Yy00LjMyNjIsMC04LjMwMDgtMi40OTI3LTEwLjIwNjEtNi4zNzUsMS45MDUzLTMuODgyMyw1Ljg3OTktNi4zNzUsMTAuMjA2MS02LjM3NXM4LjMwMDgsMi40OTI3LDEwLjIwNjEsNi4zNzVjLTEuOTA1MywzLjg4MjMtNS44Nzk5LDYuMzc1LTEwLjIwNjEsNi4zNzVaIi8+CjxwYXRoIGNsYXNzPSJ1dWlkLTk3YzFlYzg0LTliODEtNDU2ZS05OWFhLTcxMzc1MGViNjllMCIgZD0iTTE1LjQ0MjQsMTQuNTU4MWMtLjI0NDEtLjI0NDEtLjY0MDYtLjI0NDEtLjg4NDgsMC0uMjQzMi4yNDQxLS4yNDMyLjYzOTYsMCwuODgzOGw0LDRjLjEyMjEuMTIyMS4yODIyLjE4MzEuNDQyNC4xODMxcy4zMjAzLS4wNjEuNDQyNC0uMTgzMWMuMjQzMi0uMjQ0MS4yNDMyLS42Mzk2LDAtLjg4MzhsLTQtNFoiLz4KPC9zdmc+Cg== mediatype: image/svg+xml install: spec: clusterPermissions: - rules: - apiGroups: - monitoring.rhobs resources: - alertmanagers - alertmanagers/finalizers - alertmanagers/status - alertmanagerconfigs - prometheuses - prometheuses/finalizers - prometheuses/status - prometheusagents - prometheusagents/finalizers - prometheusagents/status - thanosrulers - thanosrulers/finalizers - thanosrulers/status - scrapeconfigs - servicemonitors - podmonitors - probes - prometheusrules verbs: - '*' - apiGroups: - apps resources: - statefulsets verbs: - '*' - apiGroups: - "" resources: - configmaps - secrets verbs: - '*' - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resources: - services - services/finalizers verbs: - get - create - update - delete - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - patch - create - apiGroups: - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - apiGroups: - "" resources: - endpoints verbs: - get - create - update - delete - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator - rules: - apiGroups: - security.openshift.io resourceNames: - nonroot-v2 - nonroot resources: - securitycontextconstraints verbs: - use serviceAccountName: obo-prometheus-operator-admission-webhook - rules: - apiGroups: - "" resources: - configmaps - secrets - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - endpoints - events - namespaces - nodes - persistentvolumeclaims - persistentvolumes - pods - replicationcontrollers verbs: - get - list - watch - apiGroups: - "" resources: - services/finalizers verbs: - patch - update - apiGroups: - apps resources: - daemonsets - replicasets - statefulsets verbs: - get - list - watch - apiGroups: - apps resources: - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusterversions verbs: - get - list - watch - apiGroups: - console.openshift.io resources: - consoleplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - get - list - watch - apiGroups: - loki.grafana.com resources: - application - audit - infrastructure - network verbs: - get - apiGroups: - loki.grafana.com resources: - lokistacks verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - main resources: - alertmanagers/api verbs: - get - list - apiGroups: - monitoring.coreos.com resourceNames: - k8s resources: - prometheuses/api verbs: - create - get - update - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - alertmanagers - prometheuses - servicemonitors - thanosqueriers verbs: - create - delete - list - patch - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks verbs: - create - get - list - update - watch - apiGroups: - monitoring.rhobs resources: - monitoringstacks/finalizers - monitoringstacks/status verbs: - get - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/finalizers verbs: - update - apiGroups: - monitoring.rhobs resources: - thanosqueriers/status verbs: - get - patch - update - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability verbs: - get - list - watch - apiGroups: - observability.openshift.io resources: - clusterobservability/finalizers - clusterobservability/status - uiplugins/finalizers - uiplugins/status verbs: - get - update - apiGroups: - observability.openshift.io resources: - uiplugins verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - consoles verbs: - get - list - patch - watch - apiGroups: - perses.dev resources: - perses - persesdashboards - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers - persesdashboards/finalizers - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status - persesdashboards/status - persesdatasources/status verbs: - get - patch - update - apiGroups: - policy resources: - poddisruptionbudgets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resourceNames: - nonroot - nonroot-v2 resources: - securitycontextconstraints verbs: - use - apiGroups: - storage.k8s.io resources: - storageclasses - volumeattachments verbs: - get - list - watch - apiGroups: - tempo.grafana.com resources: - tempomonolithics - tempostacks verbs: - list serviceAccountName: observability-operator-sa - rules: - apiGroups: - apps resources: - deployments - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services - configmaps - secrets verbs: - get - patch - update - create - delete - list - watch - apiGroups: - perses.dev resources: - perses verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - perses/finalizers verbs: - update - apiGroups: - perses.dev resources: - perses/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdashboards verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdashboards/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdashboards/status verbs: - get - patch - update - apiGroups: - perses.dev resources: - persesdatasources verbs: - create - delete - get - list - patch - update - watch - apiGroups: - perses.dev resources: - persesdatasources/finalizers verbs: - update - apiGroups: - perses.dev resources: - persesdatasources/status verbs: - get - patch - update serviceAccountName: perses-operator deployments: - label: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator target.workload.openshift.io/management: '{"effect": "PreferredDuringScheduling"}' creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 automountServiceAccountToken: true containers: - args: - --prometheus-config-reloader=$(RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER) - --prometheus-instance-selector=app.kubernetes.io/managed-by=observability-operator - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator env: - name: GOGC value: "30" - name: RELATED_IMAGE_PROMETHEUS_CONFIG_RELOADER value: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator ports: - containerPort: 8080 name: http protocol: TCP resources: limits: cpu: 100m memory: 500Mi requests: cpu: 5m memory: 150Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 selector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator strategy: rollingUpdate: maxUnavailable: 1 template: metadata: annotations: kubectl.kubernetes.io/default-container: prometheus-operator-admission-webhook creationTimestamp: null labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator app.kubernetes.io/version: 0.80.1-rhobs1 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator namespaces: - default topologyKey: kubernetes.io/hostname automountServiceAccountToken: false containers: - args: - --web.enable-tls=true - --web.cert-file=/tmp/k8s-webhook-server/serving-certs/tls.crt - --web.key-file=/tmp/k8s-webhook-server/serving-certs/tls.key image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook ports: - containerPort: 8443 name: https protocol: TCP resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePolicy: FallbackToLogsOnError securityContext: runAsNonRoot: true runAsUser: 65534 serviceAccountName: obo-prometheus-operator-admission-webhook tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists - label: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 name: observability-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator strategy: {} template: metadata: creationTimestamp: null labels: app.kubernetes.io/component: operator app.kubernetes.io/name: observability-operator app.kubernetes.io/version: 1.2.2 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - args: - --namespace=$(NAMESPACE) - --images=alertmanager=$(RELATED_IMAGE_ALERTMANAGER) - --images=prometheus=$(RELATED_IMAGE_PROMETHEUS) - --images=thanos=$(RELATED_IMAGE_THANOS) - --images=perses=$(RELATED_IMAGE_PERSES) - --images=ui-dashboards=$(RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN) - --images=ui-distributed-tracing=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN) - --images=ui-distributed-tracing-pf5=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5) - --images=ui-distributed-tracing-pf4=$(RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4) - --images=ui-logging=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN) - --images=ui-logging-pf4=$(RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4) - --images=ui-troubleshooting-panel=$(RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN) - --images=ui-monitoring=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN) - --images=ui-monitoring-pf5=$(RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5) - --images=korrel8r=$(RELATED_IMAGE_KORREL8R) - --images=health-analyzer=$(RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER) - --openshift.enabled=true env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: RELATED_IMAGE_ALERTMANAGER value: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 - name: RELATED_IMAGE_PROMETHEUS value: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 - name: RELATED_IMAGE_THANOS value: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 - name: RELATED_IMAGE_PERSES value: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 - name: RELATED_IMAGE_CONSOLE_DASHBOARDS_PLUGIN value: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 - name: RELATED_IMAGE_CONSOLE_DISTRIBUTED_TRACING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf - name: RELATED_IMAGE_CONSOLE_LOGGING_PLUGIN_PF4 value: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 - name: RELATED_IMAGE_CONSOLE_TROUBLESHOOTING_PANEL_PLUGIN value: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 - name: RELATED_IMAGE_CONSOLE_MONITORING_PLUGIN_PF5 value: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e - name: RELATED_IMAGE_KORREL8R value: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 - name: RELATED_IMAGE_CLUSTER_HEALTH_ANALYZER value: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 name: operator readinessProbe: httpGet: path: /healthz port: 8081 resources: limits: cpu: 400m memory: 512Mi requests: cpu: 100m memory: 256Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /etc/tls/private name: observability-operator-tls readOnly: true securityContext: runAsNonRoot: true serviceAccountName: observability-operator-sa terminationGracePeriodSeconds: 30 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - name: observability-operator-tls secret: optional: true secretName: observability-operator-tls - label: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator name: perses-operator spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator strategy: {} template: metadata: annotations: kubectl.kubernetes.io/default-container: perses-operator creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: perses-operator app.kubernetes.io/part-of: observability-operator spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/infra operator: Exists weight: 1 containers: - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: perses-operator readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 500m memory: 512Mi requests: cpu: 100m memory: 128Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumeMounts: - mountPath: /ca name: openshift-service-ca readOnly: true serviceAccountName: perses-operator tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists volumes: - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt optional: true name: openshift-service-ca strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - observability - monitoring - prometheus - thanos links: - name: GitHub url: https://github.com/rhobs/observability-operator maintainers: - email: jfajersk@redhat.com name: Jan Fajerski - email: spasquie@redhat.com name: Simon Pasquier maturity: alpha provider: name: Red Hat relatedImages: - image: registry.redhat.io/cluster-observability-operator/cluster-observability-rhel9-operator@sha256:27ffe36aad6e606e6d0a211f48f3cdb58a53aa0d5e8ead6a444427231261ab9e name: cluster-observability-operator - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-prometheus-config-reloader-rhel9@sha256:8597c48fc71fc6ec8e87dbe40dace4dbb7b817c1039db608af76a0d90f7ac2d0 name: prometheus-config-reloader - image: registry.redhat.io/cluster-observability-operator/alertmanager-rhel9@sha256:4d25b0e31549d780928d2dd3eed7defd9c6d460deb92dcff0fe72c5023029404 name: alertmanager - image: registry.redhat.io/cluster-observability-operator/prometheus-rhel9@sha256:a0a1d0e39de54c5b2786c2b82d0104f358b479135c069075ddd4f7cd76826c00 name: prometheus - image: registry.redhat.io/cluster-observability-operator/thanos-rhel9@sha256:f3806c97420ec8ba91895ce7627df7612cccb927c05d7854377f45cdd6c924a8 name: thanos - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-operator-admission-webhook-rhel9@sha256:e54c1e1301be66933f3ecb01d5a0ca27f58aabfd905b18b7d057bbf23bdb7b0d name: prometheus-operator-admission-webhook - image: registry.redhat.io/cluster-observability-operator/obo-prometheus-rhel9-operator@sha256:e2681bce57dc9c15701f5591532c2dfe8f19778606661339553a28dc003dbca5 name: prometheus-operator - image: registry.redhat.io/cluster-observability-operator/dashboards-console-plugin-0-4-rhel9@sha256:53125bddbefca2ba2b57c3fd74bd4b376da803e420201220548878f557bd6610 name: ui-dashboards - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-1-0-rhel9@sha256:1dbe9a684271e00c8f36d8b96c9b22f6ee3c6f907ea6ad20980901bd533f9a3a name: ui-tracing - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-4-rhel9@sha256:6aafab2c90bcbc6702f2d63d585a764baa8de8207e6af7afa60f3976ddfa9bd3 name: ui-tracing-pf5 - image: registry.redhat.io/cluster-observability-operator/distributed-tracing-console-plugin-0-3-rhel9@sha256:9f80851e8137c2c5e5c2aee13fc663f6c7124d9524d88c06c1507748ce84e1ed name: ui-tracing-pf4 - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-1-rhel9@sha256:2c9b2be12f15f06a24393dbab6a31682cee399d42e2cc04b0dcf03b2b598d5cf name: ui-logging - image: registry.redhat.io/cluster-observability-operator/logging-console-plugin-6-0-rhel9@sha256:e9042d93f624790c450724158a8323277e4dd136530c763fec8db31f51fd8552 name: ui-logging-pf4 - image: registry.redhat.io/cluster-observability-operator/troubleshooting-panel-console-plugin-0-4-rhel9@sha256:456d45001816b9adc38745e0ad8705bdc0150d03d0f65e0dfa9caf3fb8980fad name: ui-troubleshooting - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-5-rhel9@sha256:f3446969c67c18b44bee38ac946091fe9397a2117cb5b7aacb39406461c1efe1 name: ui-monitoring - image: registry.redhat.io/cluster-observability-operator/monitoring-console-plugin-0-4-rhel9@sha256:ade84f8be7d23bd4b9c80e07462dc947280f0bcf6071e6edd927fef54c254b7e name: ui-monitoring-pf5 - image: registry.redhat.io/cluster-observability-operator/korrel8r-rhel9@sha256:039e139cf9217bbe72248674df76cbe4baf4bef9f8dc367d2cb51eae9c4aa9d7 name: korrel8r - image: registry.redhat.io/cluster-observability-operator/cluster-health-analyzer-rhel9@sha256:142180f277f0221ef2d4176f9af6dcdb4e7ab434a68f0dfad2ee5bee0e667ddd name: cluster-health-analyzer - image: registry.redhat.io/cluster-observability-operator/perses-0-50-rhel9@sha256:4b5e53d226733237fc5abd0476eb3c96162cf3d8da7aeba8deda631fa8987223 name: perses - image: registry.redhat.io/cluster-observability-operator/perses-0-1-rhel9-operator@sha256:bfed9f442aea6e8165644f1dc615beea06ec7fd84ea3f8ca393a63d3627c6a7c name: perses-operator replaces: cluster-observability-operator.v1.2.1 version: 1.2.2 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: alertmanagerconfigs.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - alertmanagerconfigs scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-alertmanagerconfigs/validate - admissionReviewVersions: - v1 containerPort: 443 deploymentName: obo-prometheus-operator-admission-webhook failurePolicy: Ignore generateName: prometheusrules.monitoring.rhobs rules: - apiGroups: - monitoring.rhobs apiVersions: - '*' operations: - CREATE - UPDATE resources: - prometheusrules scope: Namespaced sideEffects: None targetPort: https timeoutSeconds: 5 type: ValidatingAdmissionWebhook webhookPath: /admission-prometheusrules/validate status: certsLastUpdated: "2025-10-11T10:48:15Z" certsRotateAt: "2027-10-10T10:48:14Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:48:05Z" lastUpdateTime: "2025-10-11T10:48:06Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:16Z" message: 'installing: waiting for deployment obo-prometheus-operator to become ready: deployment "obo-prometheus-operator" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:26Z" lastUpdateTime: "2025-10-11T10:48:26Z" message: The operator is running in openshift-operators but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagerconfigs.monitoring.rhobs status: Present uuid: 6dbb3562-3502-427f-a8ac-69f5fee677eb version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: alertmanagers.monitoring.rhobs status: Present uuid: 94358371-764f-469d-bfdf-60918719ad15 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: monitoringstacks.monitoring.rhobs status: Present uuid: eef8c5db-14cc-4b9b-a16a-bb53c9085ad8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: perses.perses.dev status: Present uuid: 699a06b6-6ea1-470b-9396-ea9e74aacbf0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdashboards.perses.dev status: Present uuid: 9fdcb708-f24c-4a68-9e4d-a90cc21b8b2a version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: persesdatasources.perses.dev status: Present uuid: 3367dd1b-8fbf-4ec3-bc6e-5ac723632866 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: podmonitors.monitoring.rhobs status: Present uuid: 119333e4-8acd-4490-89f2-0ab4c2cb69e3 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: probes.monitoring.rhobs status: Present uuid: b6f5743f-53c5-4ef2-ba73-1dfff01529ab version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusagents.monitoring.rhobs status: Present uuid: 9cd94803-872e-48c2-b886-046df0f3ea97 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheuses.monitoring.rhobs status: Present uuid: 63114d9d-5830-4525-a696-f9d5631f50bf version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: prometheusrules.monitoring.rhobs status: Present uuid: d001857d-a609-4f31-ac94-103f85059cda version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: scrapeconfigs.monitoring.rhobs status: Present uuid: 54fa29dc-530e-4d4e-9d1f-dddec15c22af version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicemonitors.monitoring.rhobs status: Present uuid: 7f226d56-076c-4493-a434-faf2df2977a1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosqueriers.monitoring.rhobs status: Present uuid: 425ae3fd-53e2-48ba-9e21-ab9fc60cc7b0 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: thanosrulers.monitoring.rhobs status: Present uuid: d496ce12-f67c-4cd5-a94f-7da43dbd9c84 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: uiplugins.observability.openshift.io status: Present uuid: be0bccb8-7608-4f4a-b285-faef260080c5 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update","create","delete","list","watch"],"apiGroups":[""],"resources":["services","configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdashboards"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdashboards/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["persesdatasources/status"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: perses-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","alertmanagers/finalizers","alertmanagers/status","alertmanagerconfigs","prometheuses","prometheuses/finalizers","prometheuses/status","prometheusagents","prometheusagents/finalizers","prometheusagents/status","thanosrulers","thanosrulers/finalizers","thanosrulers/status","scrapeconfigs","servicemonitors","podmonitors","probes","prometheusrules"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["apps"],"resources":["statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":[""],"resources":["configmaps","secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","delete"],"apiGroups":[""],"resources":["pods"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["services","services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","create"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","create","update","delete"],"apiGroups":[""],"resources":["endpoints"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot-v2","nonroot"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: obo-prometheus-operator-admission-webhook status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["configmaps","secrets","serviceaccounts","services"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["endpoints","events","namespaces","nodes","persistentvolumeclaims","persistentvolumes","pods","replicationcontrollers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["patch","update"],"apiGroups":[""],"resources":["services/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apps"],"resources":["daemonsets","replicasets","statefulsets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apps"],"resources":["deployments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["autoscaling"],"resources":["horizontalpodautoscalers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["batch"],"resources":["cronjobs","jobs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusterversions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["console.openshift.io"],"resources":["consoleplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["extensions","networking.k8s.io"],"resources":["ingresses"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get"],"apiGroups":["loki.grafana.com"],"resources":["application","audit","infrastructure","network"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["loki.grafana.com"],"resources":["lokistacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list"],"apiGroups":["monitoring.coreos.com"],"resources":["alertmanagers/api"],"resourceNames":["main"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","update"],"apiGroups":["monitoring.coreos.com"],"resources":["prometheuses/api"],"resourceNames":["k8s"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","list","patch","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["alertmanagers","prometheuses","servicemonitors","thanosqueriers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","get","list","update","watch"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["monitoring.rhobs"],"resources":["monitoringstacks/finalizers","monitoringstacks/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["monitoring.rhobs"],"resources":["thanosqueriers/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["networking.k8s.io"],"resources":["ingresses","networkpolicies"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","update"],"apiGroups":["observability.openshift.io"],"resources":["clusterobservability/finalizers","clusterobservability/status","uiplugins/finalizers","uiplugins/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["observability.openshift.io"],"resources":["uiplugins"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","patch","watch"],"apiGroups":["operator.openshift.io"],"resources":["consoles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["perses.dev"],"resources":["perses","persesdashboards","persesdatasources"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["perses.dev"],"resources":["perses/finalizers","persesdashboards/finalizers","persesdatasources/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["perses.dev"],"resources":["perses/status","persesdashboards/status","persesdatasources/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["poddisruptionbudgets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["rbac.authorization.k8s.io"],"resources":["clusterrolebindings","clusterroles","rolebindings","roles"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"resourceNames":["nonroot","nonroot-v2"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["storage.k8s.io"],"resources":["storageclasses","volumeattachments"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":["tempo.grafana.com"],"resources":["tempomonolithics","tempostacks"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: observability-operator-sa status: Present version: v1