From 670f2d9dcf7ba7eeff8fac722eb0919c262567b2 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Wed, 29 Oct 2025 13:14:33 +0100 Subject: [PATCH 01/32] fix: fix linter issues and add CI check for linter changes (#887) Since we call `golang-lint --fix` we should check if the linter has fixed anything. Signed-off-by: Jan Fajerski --- .github/workflows/pr-checks.yaml | 3 +++ Makefile | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr-checks.yaml b/.github/workflows/pr-checks.yaml index 168e76091..f5b7a778e 100644 --- a/.github/workflows/pr-checks.yaml +++ b/.github/workflows/pr-checks.yaml @@ -43,6 +43,9 @@ jobs: - name: Lint Shell scripts run: make lint-shell + - name: Check for linter changes + run: git diff --exit-code + generate: name: Verify generated code runs-on: ubuntu-latest diff --git a/Makefile b/Makefile index edd63c143..78b6f62c2 100644 --- a/Makefile +++ b/Makefile @@ -31,10 +31,6 @@ lint: lint-golang lint-shell lint-golang: $(GOLANGCI_LINT) $(GOLANGCI_LINT) run ./... --fix -# TODO(simonpasquier): remove this after #629 merges. -.PHONY: lint-jsonnet fmt-jsonnet -lint-jsonnet fmt-jsonnet: - .PHONY: lint-shell lint-shell: $(SHELLCHECK) find -name "*.sh" -print0 | xargs --null $(SHELLCHECK) From 497478a3afe791994a482baba4b16f3cab28d9a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:29:55 +0000 Subject: [PATCH 02/32] build(deps): bump github.com/grafana/tempo-operator (#915) Bumps [github.com/grafana/tempo-operator](https://github.com/grafana/tempo-operator) from 0.16.0 to 0.18.0. - [Release notes](https://github.com/grafana/tempo-operator/releases) - [Changelog](https://github.com/grafana/tempo-operator/blob/main/CHANGELOG.md) - [Commits](https://github.com/grafana/tempo-operator/compare/v0.16.0...v0.18.0) --- updated-dependencies: - dependency-name: github.com/grafana/tempo-operator dependency-version: 0.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 919e58795..d380b8bb5 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-logr/logr v1.4.3 github.com/goccy/go-yaml v1.18.0 github.com/google/go-cmp v0.7.0 - github.com/grafana/tempo-operator v0.16.0 + github.com/grafana/tempo-operator v0.18.0 github.com/open-telemetry/opentelemetry-operator v0.135.0 github.com/openshift/api v3.9.0+incompatible // PINNED: newer versions remove console/v1alpha1 API needed for OpenShift <4.17 compatibility github.com/operator-framework/api v0.34.0 diff --git a/go.sum b/go.sum index 0c2d5c3f0..4a58e641c 100644 --- a/go.sum +++ b/go.sum @@ -253,8 +253,8 @@ github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5T github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 h1:cLN4IBkmkYZNnk7EAJ0BHIethd+J6LqxFNw5mSiI2bM= github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= -github.com/grafana/tempo-operator v0.16.0 h1:/HLVmdC1mnEZMFjWCo1GJWS3DxzTdfjvyXAvq/dXURU= -github.com/grafana/tempo-operator v0.16.0/go.mod h1:h3hQBqqiohdYhqltyj0DqLtkAbvEnkwo9Lp323zl3Bo= +github.com/grafana/tempo-operator v0.18.0 h1:ihXddVx2/I9EbMTkPBnbnN0Uc19sjxAFDx2BqublXqQ= +github.com/grafana/tempo-operator v0.18.0/go.mod h1:xt66ENn9wlMOqj0OAtoiNm3w+JIah4LAeX/XZgdsLsU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= From d41cb224349ac54aaaa089920578a81ff65c05d5 Mon Sep 17 00:00:00 2001 From: Peter Yurkovich <47438010+PeterYurkovich@users.noreply.github.com> Date: Thu, 30 Oct 2025 11:11:57 -0400 Subject: [PATCH 03/32] OU-964: update incidents and TP to GA (#912) * feat: update min version for incident feature to 4.20 * feat: update incidents and tp to GA in matrix * fix: re-enable incidents on 4.19 --------- Co-authored-by: Alberto Falossi --- docs/user-guides/observability-ui-plugins.md | 19 ++++---- .../uiplugin/compatibility_matrix.go | 14 +++++- .../uiplugin/compatibility_matrix_test.go | 43 +++++++++++++++++++ pkg/controllers/uiplugin/monitoring_test.go | 6 +++ 4 files changed, 71 insertions(+), 11 deletions(-) diff --git a/docs/user-guides/observability-ui-plugins.md b/docs/user-guides/observability-ui-plugins.md index b2aa589fd..77e12e7d1 100644 --- a/docs/user-guides/observability-ui-plugins.md +++ b/docs/user-guides/observability-ui-plugins.md @@ -146,9 +146,9 @@ The plugin adds monitoring related UI features to the OpenShift web console, rel To deploy ACM related features the `acm-alerting` configuration must be enabled. In the UIPlugin Custom Resource (CR) you must pass the Alertmanager and ThanosQuerier Service endpoint (e.g. `https://alertmanager.open-cluster-management-observability.svc:9095` and `https://rbac-query-proxy.open-cluster-management-observability.svc:8443`). See the example in the next section `Plugin Creation.` -To deploy the Incidents feature, the `incidents` configuration must be enabled. See the example in the next section, `Plugin Creation.` +To deploy the Incidents feature, the `incidents` configuration must be enabled. See the example in the next section, `Plugin Creation.` -To deploy the Perses dashboard feature, the `perses-dashboards` configuration must be enabled. In the UIPlugin CR, you can optionally pass the service name and namespace of your Perses instance (e.g., `serviceName: perses-api-http` and `namespace: perses`). If these fields are left blank and `spec.monitoring.perses.enabled: true`, then default values will be assigned. These default values are `serviceName: perses-api-http` and `namespace: perses`. See the example in the next section, `Plugin Creation.` +To deploy the Perses dashboard feature, the `perses-dashboards` configuration must be enabled. In the UIPlugin CR, you can optionally pass the service name and namespace of your Perses instance (e.g., `serviceName: perses-api-http` and `namespace: perses`). If these fields are left blank and `spec.monitoring.perses.enabled: true`, then default values will be assigned. These default values are `serviceName: perses-api-http` and `namespace: perses`. See the example in the next section, `Plugin Creation.` Besides, when `spec.monitoring.perses.enabled: true`, Accelerator Perses dashboard and Accelerator Perses datasource are both created. ObO/COO operator creates the following roles: @@ -219,7 +219,7 @@ roleRef: kind: ClusterRole name: persesdatasource-editor-role ``` - + Other pages which are typically distributed with the monitoring-plugin, such as `Admin > Observe > Dashboards`, are only available in the monitoring-plugin when deployed through [CMO](https://github.com/openshift/cluster-monitoring-operator). #### Plugin Creation @@ -248,11 +248,11 @@ spec: #### Feature List -| __Feature__ | __Description__ | __Support Level__ | -| ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------- | -| `acm-alerting` | Adds alerting UI to multi-cluster view. Configures proxies to connect with any alertmanager and thanos-querier. | Dev Preview | -| `incidents` | Adds incidents UI to `Observe` section of OpenShift Console Platform. Deploys the [Cluster Health Analyzer](https://github.com/openshift/cluster-health-analyzer) and configures proxies in the plugin to connect with it. | Tech Preview | -| `perses-dashboards` | Adds perses UI to `Observe` section of OpenShift Console Platform. Configures proxies to connect with a Perses instance. Installs Accelerator Perses Dashboard and Accelerator Perses Datasource. See details [here](./perses-dashboards.md) | Dev Preview | +| __Feature__ | __Description__ | __Support Level__ | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------- | +| `acm-alerting` | Adds alerting UI to multi-cluster view. Configures proxies to connect with any alertmanager and thanos-querier. | Dev Preview | +| `incidents` | Adds incidents UI to `Observe` section of OpenShift Console Platform. Deploys the [Cluster Health Analyzer](https://github.com/openshift/cluster-health-analyzer) and configures proxies in the plugin to connect with it. | General Availability (OCP 4.20+), Tech Preview (OCP 4.19) | +| `perses-dashboards` | Adds perses UI to `Observe` section of OpenShift Console Platform. Configures proxies to connect with a Perses instance. Installs Accelerator Perses Dashboard and Accelerator Perses Datasource. See details [here](./perses-dashboards.md) | Dev Preview | #### Feature Matrix @@ -261,4 +261,5 @@ spec: | --------------- | ------------------- | --------------------------------- | | 1.0.0+ | 4.14+ | `acm-alerting` | | 1.1.0+ | 4.15+ | `acm-alerting, perses-dashboards` | -| 1.2.0+ | 4.19+ | `acm-alerting, perses-dashboards, incidents` | +| 1.2.0+ | 4.19 | `acm-alerting, perses-dashboards, incidents (Tech Preview)` | +| 1.3.0+ | 4.20+ | `acm-alerting, perses-dashboards, incidents (General Availability)` | diff --git a/pkg/controllers/uiplugin/compatibility_matrix.go b/pkg/controllers/uiplugin/compatibility_matrix.go index 98ce6abe2..c1335c04a 100644 --- a/pkg/controllers/uiplugin/compatibility_matrix.go +++ b/pkg/controllers/uiplugin/compatibility_matrix.go @@ -50,7 +50,7 @@ var compatibilityMatrix = []CompatibilityEntry{ MinClusterVersion: "v4.16", MaxClusterVersion: "", ImageKey: "ui-troubleshooting-panel", - SupportLevel: TechPreview, + SupportLevel: GeneralAvailability, Features: []string{}, }, { @@ -143,13 +143,23 @@ var compatibilityMatrix = []CompatibilityEntry{ { PluginType: uiv1alpha1.TypeMonitoring, MinClusterVersion: "v4.19", - MaxClusterVersion: "", + MaxClusterVersion: "v4.20", ImageKey: "ui-monitoring", SupportLevel: TechPreview, // feature flags for montioring are dynamically injected // based on the cluster version and and UIPlugin CR configurations Features: []string{}, }, + { + PluginType: uiv1alpha1.TypeMonitoring, + MinClusterVersion: "v4.20", + MaxClusterVersion: "", + ImageKey: "ui-monitoring", + SupportLevel: GeneralAvailability, + // feature flags for montioring are dynamically injected + // based on the cluster version and and UIPlugin CR configurations + Features: []string{}, + }, } func lookupImageAndFeatures(pluginType uiv1alpha1.UIPluginType, clusterVersion string) (CompatibilityEntry, error) { diff --git a/pkg/controllers/uiplugin/compatibility_matrix_test.go b/pkg/controllers/uiplugin/compatibility_matrix_test.go index 6bdec8cc6..723d0edc6 100644 --- a/pkg/controllers/uiplugin/compatibility_matrix_test.go +++ b/pkg/controllers/uiplugin/compatibility_matrix_test.go @@ -50,24 +50,28 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey string expectedErr error expectedFeatures []string + supportLevel SupportLevel }{ { pluginType: uiv1alpha1.TypeDashboards, clusterVersion: "4.10", expectedKey: "", expectedErr: fmt.Errorf("dynamic plugins not supported before 4.11"), + supportLevel: "", }, { pluginType: uiv1alpha1.TypeDashboards, clusterVersion: "4.11", expectedKey: "ui-dashboards", expectedErr: nil, + supportLevel: DevPreview, }, { pluginType: uiv1alpha1.TypeDashboards, clusterVersion: "4.24.0-0.nightly-2024-03-11-200348", expectedKey: "ui-dashboards", expectedErr: nil, + supportLevel: DevPreview, }, { pluginType: uiv1alpha1.TypeLogging, @@ -78,6 +82,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "dev-console", "alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -88,6 +93,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "dev-console", "alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -99,6 +105,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "alerts", "dev-alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -110,6 +117,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "alerts", "dev-alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -121,6 +129,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "alerts", "dev-alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -132,6 +141,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "alerts", "dev-alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -143,6 +153,7 @@ func TestLookupImageAndFeatures(t *testing.T) { "alerts", "dev-alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, @@ -154,12 +165,14 @@ func TestLookupImageAndFeatures(t *testing.T) { "alerts", "dev-alerts", }, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeLogging, clusterVersion: "4.11", expectedKey: "ui-logging-pf4", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeTroubleshootingPanel, @@ -168,96 +181,112 @@ func TestLookupImageAndFeatures(t *testing.T) { clusterVersion: "4.15", expectedKey: "", expectedErr: fmt.Errorf("plugin %q: no compatible image found for cluster version %q", uiv1alpha1.TypeTroubleshootingPanel, "v4.15"), + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeTroubleshootingPanel, clusterVersion: "4.16", expectedKey: "ui-troubleshooting-panel", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeTroubleshootingPanel, clusterVersion: "4.24.0-0.nightly-2024-03-11-200348", expectedKey: "ui-troubleshooting-panel", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.10", expectedKey: "", expectedErr: fmt.Errorf("dynamic plugins not supported before 4.11"), + supportLevel: "", }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.11", expectedKey: "ui-distributed-tracing-pf4", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.14", expectedKey: "ui-distributed-tracing-pf4", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.15", expectedKey: "ui-distributed-tracing-pf5", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "v4.15.0-0.nightly-2024-06-06-064349", expectedKey: "ui-distributed-tracing-pf5", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "v4.15.46", expectedKey: "ui-distributed-tracing-pf5", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.18", expectedKey: "ui-distributed-tracing-pf5", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.19", expectedKey: "ui-distributed-tracing", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.24.0-0.nightly-2024-03-11-200348", expectedKey: "ui-distributed-tracing", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeDistributedTracing, clusterVersion: "4.16.0-rc.3", expectedKey: "ui-distributed-tracing-pf5", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: "non-existent-plugin", clusterVersion: "4.24.0-0.nightly-2024-03-11-200348", expectedKey: "", expectedErr: fmt.Errorf(`plugin "non-existent-plugin": no compatible image found for cluster version "v4.24.0-0.nightly-2024-03-11-200348"`), + supportLevel: "", }, { pluginType: uiv1alpha1.TypeTroubleshootingPanel, clusterVersion: "v4.16.0-0.nightly-2024-06-06-064349", expectedKey: "ui-troubleshooting-panel", expectedErr: nil, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeMonitoring, clusterVersion: "v4.14", expectedKey: "ui-monitoring", expectedErr: fmt.Errorf("plugin %q: no compatible image found for cluster version %q", uiv1alpha1.TypeMonitoring, "v4.14"), + supportLevel: TechPreview, }, { pluginType: uiv1alpha1.TypeMonitoring, @@ -265,6 +294,7 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey: "ui-monitoring-pf5", expectedFeatures: []string{}, expectedErr: nil, + supportLevel: TechPreview, }, { pluginType: uiv1alpha1.TypeMonitoring, @@ -272,6 +302,7 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey: "ui-monitoring-pf5", expectedFeatures: []string{}, expectedErr: nil, + supportLevel: TechPreview, }, { pluginType: uiv1alpha1.TypeMonitoring, @@ -279,6 +310,7 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey: "ui-monitoring", expectedFeatures: []string{}, expectedErr: nil, + supportLevel: TechPreview, }, { pluginType: uiv1alpha1.TypeMonitoring, @@ -286,6 +318,15 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey: "ui-monitoring", expectedFeatures: []string{}, expectedErr: nil, + supportLevel: TechPreview, + }, + { + pluginType: uiv1alpha1.TypeMonitoring, + clusterVersion: "v4.20", + expectedKey: "ui-monitoring", + expectedFeatures: []string{}, + expectedErr: nil, + supportLevel: GeneralAvailability, }, } { t.Run(fmt.Sprintf("%s/%s", tc.pluginType, tc.clusterVersion), func(t *testing.T) { @@ -301,6 +342,8 @@ func TestLookupImageAndFeatures(t *testing.T) { t.Logf("%s == %s", tc.expectedKey, info.ImageKey) assert.Equal(t, tc.expectedKey, info.ImageKey) + assert.Equal(t, tc.supportLevel, info.SupportLevel) + if tc.expectedFeatures != nil { assert.DeepEqual(t, tc.expectedFeatures, info.Features) } diff --git a/pkg/controllers/uiplugin/monitoring_test.go b/pkg/controllers/uiplugin/monitoring_test.go index b593b69c9..a29e8c3ff 100644 --- a/pkg/controllers/uiplugin/monitoring_test.go +++ b/pkg/controllers/uiplugin/monitoring_test.go @@ -485,6 +485,12 @@ func TestCreateMonitoringPluginInfo(t *testing.T) { t.Run("Test validateIncidentsConfig() with valid and invalid clusterVersion formats", func(t *testing.T) { // should not throw an error because all these are valid formats for clusterVersion + assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "v4.21.0-0.nightly-2024-06-06-064349") == true) + assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "4.21.0-0.nightly-2024-06-06-064349") == true) + assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "v4.21") == true) + assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "v4.21.0") == true) + assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "4.21.0") == true) + assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "v4.20.0-0.nightly-2024-06-06-064349") == true) assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "4.20.0-0.nightly-2024-06-06-064349") == true) assert.Assert(t, validateIncidentsConfig(pluginConfigIncidents.Spec.Monitoring, "v4.20") == true) From 51d44085f28b698e1e47facdb2961e93506c4113 Mon Sep 17 00:00:00 2001 From: Peter Yurkovich <47438010+PeterYurkovich@users.noreply.github.com> Date: Thu, 30 Oct 2025 12:17:43 -0400 Subject: [PATCH 04/32] fix: set 4.19 as GA for incidents (#917) --- docs/user-guides/observability-ui-plugins.md | 6 +++--- pkg/controllers/uiplugin/compatibility_matrix.go | 10 ---------- pkg/controllers/uiplugin/compatibility_matrix_test.go | 10 +--------- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/docs/user-guides/observability-ui-plugins.md b/docs/user-guides/observability-ui-plugins.md index 77e12e7d1..8d30fe4c3 100644 --- a/docs/user-guides/observability-ui-plugins.md +++ b/docs/user-guides/observability-ui-plugins.md @@ -251,7 +251,7 @@ spec: | __Feature__ | __Description__ | __Support Level__ | | ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------- | | `acm-alerting` | Adds alerting UI to multi-cluster view. Configures proxies to connect with any alertmanager and thanos-querier. | Dev Preview | -| `incidents` | Adds incidents UI to `Observe` section of OpenShift Console Platform. Deploys the [Cluster Health Analyzer](https://github.com/openshift/cluster-health-analyzer) and configures proxies in the plugin to connect with it. | General Availability (OCP 4.20+), Tech Preview (OCP 4.19) | +| `incidents` | Adds incidents UI to `Observe` section of OpenShift Console Platform. Deploys the [Cluster Health Analyzer](https://github.com/openshift/cluster-health-analyzer) and configures proxies in the plugin to connect with it. | General Availability | | `perses-dashboards` | Adds perses UI to `Observe` section of OpenShift Console Platform. Configures proxies to connect with a Perses instance. Installs Accelerator Perses Dashboard and Accelerator Perses Datasource. See details [here](./perses-dashboards.md) | Dev Preview | @@ -261,5 +261,5 @@ spec: | --------------- | ------------------- | --------------------------------- | | 1.0.0+ | 4.14+ | `acm-alerting` | | 1.1.0+ | 4.15+ | `acm-alerting, perses-dashboards` | -| 1.2.0+ | 4.19 | `acm-alerting, perses-dashboards, incidents (Tech Preview)` | -| 1.3.0+ | 4.20+ | `acm-alerting, perses-dashboards, incidents (General Availability)` | +| 1.2.0 | 4.19+ | `acm-alerting, perses-dashboards, incidents (Tech Preview)` | +| 1.3.0+ | 4.19+ | `acm-alerting, perses-dashboards, incidents (General Availability)` | diff --git a/pkg/controllers/uiplugin/compatibility_matrix.go b/pkg/controllers/uiplugin/compatibility_matrix.go index c1335c04a..ef608a9c4 100644 --- a/pkg/controllers/uiplugin/compatibility_matrix.go +++ b/pkg/controllers/uiplugin/compatibility_matrix.go @@ -143,16 +143,6 @@ var compatibilityMatrix = []CompatibilityEntry{ { PluginType: uiv1alpha1.TypeMonitoring, MinClusterVersion: "v4.19", - MaxClusterVersion: "v4.20", - ImageKey: "ui-monitoring", - SupportLevel: TechPreview, - // feature flags for montioring are dynamically injected - // based on the cluster version and and UIPlugin CR configurations - Features: []string{}, - }, - { - PluginType: uiv1alpha1.TypeMonitoring, - MinClusterVersion: "v4.20", MaxClusterVersion: "", ImageKey: "ui-monitoring", SupportLevel: GeneralAvailability, diff --git a/pkg/controllers/uiplugin/compatibility_matrix_test.go b/pkg/controllers/uiplugin/compatibility_matrix_test.go index 723d0edc6..c28f5a992 100644 --- a/pkg/controllers/uiplugin/compatibility_matrix_test.go +++ b/pkg/controllers/uiplugin/compatibility_matrix_test.go @@ -310,7 +310,7 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey: "ui-monitoring", expectedFeatures: []string{}, expectedErr: nil, - supportLevel: TechPreview, + supportLevel: GeneralAvailability, }, { pluginType: uiv1alpha1.TypeMonitoring, @@ -318,14 +318,6 @@ func TestLookupImageAndFeatures(t *testing.T) { expectedKey: "ui-monitoring", expectedFeatures: []string{}, expectedErr: nil, - supportLevel: TechPreview, - }, - { - pluginType: uiv1alpha1.TypeMonitoring, - clusterVersion: "v4.20", - expectedKey: "ui-monitoring", - expectedFeatures: []string{}, - expectedErr: nil, supportLevel: GeneralAvailability, }, } { From eeaf79fc0ddc1542ad81c7151406c3e69a00004e Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 30 Oct 2025 15:49:51 -0400 Subject: [PATCH 05/32] chore: update korrel8r image to 0.8.4 for COO 1.3 (#908) --- cmd/operator/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/operator/main.go b/cmd/operator/main.go index 2196a1fba..d31ad6f90 100644 --- a/cmd/operator/main.go +++ b/cmd/operator/main.go @@ -46,7 +46,7 @@ var defaultImages = map[string]string{ "ui-distributed-tracing": "quay.io/openshift-observability-ui/distributed-tracing-console-plugin:v1.0.1", "ui-logging-pf4": "quay.io/openshift-observability-ui/logging-view-plugin:v6.0.1", "ui-logging": "quay.io/openshift-observability-ui/logging-view-plugin:v6.1.2", - "korrel8r": "quay.io/korrel8r/korrel8r:release-coo-1.2", + "korrel8r": "quay.io/korrel8r/korrel8r:0.8.4", "health-analyzer": "quay.io/openshiftanalytics/cluster-health-analyzer:v1.0.0", "ui-monitoring-pf5": "quay.io/openshift-observability-ui/monitoring-console-plugin:v0.4.3", "ui-monitoring": "quay.io/openshift-observability-ui/monitoring-console-plugin:v0.5.2", From 9a4dc0f833db756fec4c5080b4ed9f22e1d4ab58 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Tue, 4 Nov 2025 14:49:35 +0100 Subject: [PATCH 06/32] chore(release): 1.3.0 (#920) --- CHANGELOG.md | 43 +++++++++++++++++++ VERSION | 2 +- ...bility-operator.clusterserviceversion.yaml | 10 ++--- deploy/olm/kustomization.yaml | 2 +- .../operator/kustomization.yaml | 2 +- 5 files changed, 51 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c7c62c4d..acbb7fb80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,49 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.3.0](https://github.com/rhobs/monitoring-stack-operator/commit/) (2025-11-03) + + +### Features + +* add cluster-health-analyzer v0.5.1 ([#785](https://github.com/rhobs/monitoring-stack-operator/issues/785)) ([315b436](https://github.com/rhobs/monitoring-stack-operator/commit/315b43660968fe0e4a8e66e33a1fc4eb4643f9ea)) +* add clusterobservability spec for tracing and opentelemetry ([#754](https://github.com/rhobs/monitoring-stack-operator/issues/754)) ([84abac4](https://github.com/rhobs/monitoring-stack-operator/commit/84abac4afca3c5bf24f2874d15298ff81f44b0b0)) +* add controller for clusterobservability ([#793](https://github.com/rhobs/monitoring-stack-operator/issues/793)) ([#836](https://github.com/rhobs/monitoring-stack-operator/issues/836)) ([2aa3284](https://github.com/rhobs/monitoring-stack-operator/commit/2aa32846c0591dabf68795eddcc5747ebe2d67f5)) +* add CRD scaffolding for cluster observability / signal manager ([#748](https://github.com/rhobs/monitoring-stack-operator/issues/748)) ([a942029](https://github.com/rhobs/monitoring-stack-operator/commit/a9420299b75cc9a48dea3aaa3ebb671e92117af7)) +* add monitoring-plugin stream 0.4 and 0.5 ([#747](https://github.com/rhobs/monitoring-stack-operator/issues/747)) ([a3d2d47](https://github.com/rhobs/monitoring-stack-operator/commit/a3d2d4754de1f3c69a52479287d3ec4f13d9ddd0)) +* create ClusterRoleBIndings based on API field ([#888](https://github.com/rhobs/monitoring-stack-operator/issues/888)) ([01ad960](https://github.com/rhobs/monitoring-stack-operator/commit/01ad96036f8df6004b0981fcaf42bfa62e45a780)) +* deploying COO in place of OBO on MC clusters ([#792](https://github.com/rhobs/monitoring-stack-operator/issues/792)) ([99aa26d](https://github.com/rhobs/monitoring-stack-operator/commit/99aa26d20846925a10cbe25efe6be0665c3e245a)) +* enable deployment of common accelerator perses dashboard ([#744](https://github.com/rhobs/monitoring-stack-operator/issues/744)) ([f9a161e](https://github.com/rhobs/monitoring-stack-operator/commit/f9a161e531043f61b792adbeedede8c63522884c)) +* new Go module for the API ([#801](https://github.com/rhobs/monitoring-stack-operator/issues/801)) ([32736be](https://github.com/rhobs/monitoring-stack-operator/commit/32736be06093ceec8c926508557f578ffbe7df4d)) +* remove unnecessary API dependency ([#797](https://github.com/rhobs/monitoring-stack-operator/issues/797)) ([932eb15](https://github.com/rhobs/monitoring-stack-operator/commit/932eb1598c4407d5c10b58eeee50fb694ad16b3d)) +* TRACING-5214: Add APM dashboard ([#837](https://github.com/rhobs/monitoring-stack-operator/issues/837)) ([ed8af0f](https://github.com/rhobs/monitoring-stack-operator/commit/ed8af0fe8b525fc42d08a8289a2767c32cde5bf3)) +* update components for new health-analyzer version ([#896](https://github.com/rhobs/monitoring-stack-operator/issues/896)) ([aadd616](https://github.com/rhobs/monitoring-stack-operator/commit/aadd6167e6445b2c50f4cf6a83003d3987350104)) +* update image versions ([#913](https://github.com/rhobs/monitoring-stack-operator/issues/913)) ([db9ad5c](https://github.com/rhobs/monitoring-stack-operator/commit/db9ad5c840bcf4366b638251f3443b369f1ef54c)) + + +### Bug Fixes + +* Update main.go korrel8r tag to release-coo-1.2 ([#746](https://github.com/rhobs/monitoring-stack-operator/issues/746)) ([053872d](https://github.com/rhobs/monitoring-stack-operator/commit/053872d2632999e8b1ce9bbffae92e8d693e4c6c)) +* add CreateClusterRoleBindings field to MonitoringStack ([#886](https://github.com/rhobs/monitoring-stack-operator/issues/886)) ([149f81e](https://github.com/rhobs/monitoring-stack-operator/commit/149f81e7d08eff4e8d4048bcf8496ffd15c26fc9)) +* add datasource variable ([#883](https://github.com/rhobs/monitoring-stack-operator/issues/883)) ([e6c0ecb](https://github.com/rhobs/monitoring-stack-operator/commit/e6c0ecb9b315c0e104f30450d489e70b06b4c294)) +* add default value to logs schema ([#751](https://github.com/rhobs/monitoring-stack-operator/issues/751)) ([f0448d8](https://github.com/rhobs/monitoring-stack-operator/commit/f0448d800bbfbc2b852c375a16492a7ed4e2dc46)) +* allow to create a logging plugin without a loki stack ([#743](https://github.com/rhobs/monitoring-stack-operator/issues/743)) ([9bf3c3e](https://github.com/rhobs/monitoring-stack-operator/commit/9bf3c3e9cc9be6c415c9b196ca624c2754072e27)) +* check lokistack value on lokistack discovery ([#753](https://github.com/rhobs/monitoring-stack-operator/issues/753)) ([cfb7a04](https://github.com/rhobs/monitoring-stack-operator/commit/cfb7a043d4be1b8f7367b439f83030205583c39a)) +* fix linter issues and add CI check for linter changes ([#887](https://github.com/rhobs/monitoring-stack-operator/issues/887)) ([670f2d9](https://github.com/rhobs/monitoring-stack-operator/commit/670f2d9dcf7ba7eeff8fac722eb0919c262567b2)) +* fix version of prometheus-operator client ([#875](https://github.com/rhobs/monitoring-stack-operator/issues/875)) ([ca66822](https://github.com/rhobs/monitoring-stack-operator/commit/ca668229e74bf68c09e3503b32eb35044f1788c8)) +* further fix github action olm publish failure ([#742](https://github.com/rhobs/monitoring-stack-operator/issues/742)) ([e2e2383](https://github.com/rhobs/monitoring-stack-operator/commit/e2e23834a650f7b2e83045620f8a5dffe203e248)) +* improve obsinstaller validation ([#905](https://github.com/rhobs/monitoring-stack-operator/issues/905)) ([6e9572d](https://github.com/rhobs/monitoring-stack-operator/commit/6e9572d91cddb0e60cff54787f2d367b072cd299)) +* logging plugin korrel8r proxy for missing service ([#898](https://github.com/rhobs/monitoring-stack-operator/issues/898)) ([ef8d92a](https://github.com/rhobs/monitoring-stack-operator/commit/ef8d92a6924f9760a06451b26416e2422e031926)) +* observabilityinstaller fix AWS STS config ([#903](https://github.com/rhobs/monitoring-stack-operator/issues/903)) ([1ea0b6b](https://github.com/rhobs/monitoring-stack-operator/commit/1ea0b6b4b78aab7e9c5acf2465d865db26d0e61f)) +* remove replace command after introducing API module ([#806](https://github.com/rhobs/monitoring-stack-operator/issues/806)) ([e41d1d3](https://github.com/rhobs/monitoring-stack-operator/commit/e41d1d386c9347fea0d6548c06eebc4ed8551e5c)) +* reverting - add cluster-health-analyzer v0.5.1 ([#785](https://github.com/rhobs/monitoring-stack-operator/issues/785)) ([#812](https://github.com/rhobs/monitoring-stack-operator/issues/812)) ([#834](https://github.com/rhobs/monitoring-stack-operator/issues/834)) ([0eb65b6](https://github.com/rhobs/monitoring-stack-operator/commit/0eb65b688a2d75a0fb16c97543be1428c0ffbc63)) +* server conflict error when enable OCP in test script ([#822](https://github.com/rhobs/monitoring-stack-operator/issues/822)) ([51591f3](https://github.com/rhobs/monitoring-stack-operator/commit/51591f316536444e92fdc40aa33d2076cebf03e4)) +* set 4.19 as GA for incidents ([#917](https://github.com/rhobs/monitoring-stack-operator/issues/917)) ([51d4408](https://github.com/rhobs/monitoring-stack-operator/commit/51d44085f28b698e1e47facdb2961e93506c4113)) +* sync Perses CRD with perses-operator ([#884](https://github.com/rhobs/monitoring-stack-operator/issues/884)) ([6bf1ec9](https://github.com/rhobs/monitoring-stack-operator/commit/6bf1ec98fbe831c0738ce287de78d9190244ce69)) +* test script for ocp ([#860](https://github.com/rhobs/monitoring-stack-operator/issues/860)) ([3abbf21](https://github.com/rhobs/monitoring-stack-operator/commit/3abbf21cc560d8f2c87ed0499796b850081f119b)) +* update uiplugin status errors and handle resource clean-up ([#873](https://github.com/rhobs/monitoring-stack-operator/issues/873)) ([aaea154](https://github.com/rhobs/monitoring-stack-operator/commit/aaea1548d53ac1de608d3fb784af411dffb477d8)) +* use apiReader for correct ui plugin registration ([#889](https://github.com/rhobs/monitoring-stack-operator/issues/889)) ([0545b00](https://github.com/rhobs/monitoring-stack-operator/commit/0545b0060570be10cc96573de339141c5c25d521)) + ## [1.0.0](https://github.com/rhobs/monitoring-stack-operator/commit/) (2024-12-11) diff --git a/VERSION b/VERSION index 867e52437..589268e6f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.0 \ No newline at end of file +1.3.0 \ No newline at end of file diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index ac53ab95c..c993f3673 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -41,8 +41,8 @@ metadata: capabilities: Basic Install categories: Monitoring certified: "false" - containerImage: observability-operator:1.2.0 - createdAt: "2025-10-16T07:15:08Z" + containerImage: observability-operator:1.3.0 + createdAt: "2025-11-03T09:23:49Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -58,7 +58,7 @@ metadata: ] operators.operatorframework.io/project_layout: unknown repository: https://github.com/rhobs/observability-operator - name: observability-operator.v1.2.0 + name: observability-operator.v1.3.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -1000,7 +1000,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: observability-operator:1.2.0 + image: observability-operator:1.3.0 imagePullPolicy: Always livenessProbe: httpGet: @@ -1140,7 +1140,7 @@ spec: maturity: alpha provider: name: Red Hat - version: 1.2.0 + version: 1.3.0 webhookdefinitions: - admissionReviewVersions: - v1 diff --git a/deploy/olm/kustomization.yaml b/deploy/olm/kustomization.yaml index 43623ded1..4d990fbd6 100644 --- a/deploy/olm/kustomization.yaml +++ b/deploy/olm/kustomization.yaml @@ -13,7 +13,7 @@ resources: images: - name: observability-operator newName: observability-operator - newTag: 1.2.0 + newTag: 1.3.0 patches: - patch: |- diff --git a/deploy/package-operator/operator/kustomization.yaml b/deploy/package-operator/operator/kustomization.yaml index d2d548d0e..a7607e393 100644 --- a/deploy/package-operator/operator/kustomization.yaml +++ b/deploy/package-operator/operator/kustomization.yaml @@ -4,7 +4,7 @@ namespace: observability-operator images: - name: observability-operator newName: observability-operator - newTag: 1.2.0 + newTag: 1.3.0 commonAnnotations: package-operator.run/phase: operator resources: From 33582461e25a4db06504c410d7c2adbd95b7844b Mon Sep 17 00:00:00 2001 From: "Vitaly E." Date: Thu, 6 Nov 2025 16:53:45 +0200 Subject: [PATCH 07/32] fix: [COO-1304] Fix misspelled labels of accelerator metrics (#925) Fix misspelled labels in the common accelerator metrics dashboard. --- pkg/controllers/uiplugin/accelerators.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/controllers/uiplugin/accelerators.go b/pkg/controllers/uiplugin/accelerators.go index 7587918b2..64b3ae4eb 100644 --- a/pkg/controllers/uiplugin/accelerators.go +++ b/pkg/controllers/uiplugin/accelerators.go @@ -106,10 +106,10 @@ func newAcceleratorsDashboard(namespace string) *persesv1alpha1.PersesDashboard "0_0": getPanel("GPU Utilization", "accelerator_gpu_utilization"), "0_1": getPanel("Memory Used Bytes", "accelerator_memory_used_bytes"), "0_2": getPanel("Memory Total Bytes", "accelerator_memory_total_bytes"), - "0_3": getPanel("Power Usage (watts)", "accelerator_power_usage_watts"), - "0_4": getPanel("Temperature (celcius)", "accelerator_temperature_celcius"), - "0_5": getPanel("SM Clock(hertz)", "accelerator_sm_clock_hertz"), - "0_6": getPanel("Memory Clock(hertz)", "accelerator_memory_clock_hertz"), + "0_3": getPanel("Power Usage (Watts)", "accelerator_power_usage_watts"), + "0_4": getPanel("Temperature (Celsius)", "accelerator_temperature_celcius"), + "0_5": getPanel("SM Clock (Hertz)", "accelerator_sm_clock_hertz"), + "0_6": getPanel("Memory Clock (Hertz)", "accelerator_memory_clock_hertz"), }, Layouts: []dashboard.Layout{ { From e38a3f63edaafeec57d575fe9cfe85892994ea2e Mon Sep 17 00:00:00 2001 From: "Vitaly E." Date: Thu, 6 Nov 2025 18:14:10 +0200 Subject: [PATCH 08/32] fix: [COO-1305] Fix misspelled metric name in accelerators (#926) Fix the spelling of units of the accellerator temperature. --- pkg/controllers/uiplugin/accelerators.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/controllers/uiplugin/accelerators.go b/pkg/controllers/uiplugin/accelerators.go index 64b3ae4eb..97fb315c8 100644 --- a/pkg/controllers/uiplugin/accelerators.go +++ b/pkg/controllers/uiplugin/accelerators.go @@ -107,7 +107,7 @@ func newAcceleratorsDashboard(namespace string) *persesv1alpha1.PersesDashboard "0_1": getPanel("Memory Used Bytes", "accelerator_memory_used_bytes"), "0_2": getPanel("Memory Total Bytes", "accelerator_memory_total_bytes"), "0_3": getPanel("Power Usage (Watts)", "accelerator_power_usage_watts"), - "0_4": getPanel("Temperature (Celsius)", "accelerator_temperature_celcius"), + "0_4": getPanel("Temperature (Celsius)", "accelerator_temperature_celsius"), "0_5": getPanel("SM Clock (Hertz)", "accelerator_sm_clock_hertz"), "0_6": getPanel("Memory Clock (Hertz)", "accelerator_memory_clock_hertz"), }, From d2b4b9d790021f900d3e03d8168b41b13ff17f9b Mon Sep 17 00:00:00 2001 From: Ishwar Kanse Date: Mon, 10 Nov 2025 22:07:39 +0530 Subject: [PATCH 09/32] fix: [COO-1313] Add missing description for ObservabilityInstaller in OpenShift console (#928) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Assisted by Claude Code --- ...bility-operator.clusterserviceversion.yaml | 7 +++- ...bility-operator.clusterserviceversion.yaml | 37 ++++++++++++++++++- deploy/samples/observability-installer.yaml | 18 +++++++++ pkg/apis/observability/v1alpha1/types.go | 1 + 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 deploy/samples/observability-installer.yaml diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index c993f3673..ec6f1b010 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-11-03T09:23:49Z" + createdAt: "2025-11-07T04:13:59Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -80,7 +80,10 @@ spec: kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 - - kind: ObservabilityInstaller + - description: Provides end-to-end observability capabilities with minimal configuration. + Simplifies deployment and management of observability components such as tracing. + displayName: Observability Installer + kind: ObservabilityInstaller name: observabilityinstallers.observability.openshift.io version: v1alpha1 - description: Perses is the Schema for the perses API diff --git a/deploy/olm/bases/observability-operator.clusterserviceversion.yaml b/deploy/olm/bases/observability-operator.clusterserviceversion.yaml index 92bf4ae66..453fd7515 100644 --- a/deploy/olm/bases/observability-operator.clusterserviceversion.yaml +++ b/deploy/olm/bases/observability-operator.clusterserviceversion.yaml @@ -2,7 +2,37 @@ apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: - alm-examples: "[]" + alm-examples: |- + [ + { + "apiVersion": "observability.openshift.io/v1alpha1", + "kind": "ObservabilityInstaller", + "metadata": { + "name": "sample-observability", + "namespace": "observability" + }, + "spec": { + "capabilities": { + "tracing": { + "enabled": true, + "storage": { + "objectStorage": { + "s3": { + "bucket": "tempo", + "endpoint": "http://minio.minio.svc:9000", + "accessKeyID": "tempo", + "accessKeySecret": { + "name": "minio-secret", + "key": "access_key_secret" + } + } + } + } + } + } + } + } + ] capabilities: Basic Install categories: Monitoring certified: "false" @@ -45,6 +75,11 @@ spec: kind: MonitoringStack name: monitoringstacks.monitoring.rhobs version: v1alpha1 + - description: Provides end-to-end observability capabilities with minimal configuration. Simplifies deployment and management of observability components such as tracing. + displayName: Observability Installer + kind: ObservabilityInstaller + name: observabilityinstallers.observability.openshift.io + version: v1alpha1 - description: PodMonitor defines monitoring for a set of pods displayName: PodMonitor kind: PodMonitor diff --git a/deploy/samples/observability-installer.yaml b/deploy/samples/observability-installer.yaml new file mode 100644 index 000000000..5336832ff --- /dev/null +++ b/deploy/samples/observability-installer.yaml @@ -0,0 +1,18 @@ +apiVersion: observability.openshift.io/v1alpha1 +kind: ObservabilityInstaller +metadata: + name: sample-observability + namespace: observability +spec: + capabilities: + tracing: + enabled: true + storage: + objectStorage: + s3: + bucket: tempo + endpoint: http://minio.minio.svc:9000 + accessKeyID: tempo + accessKeySecret: + name: minio-secret + key: access_key_secret \ No newline at end of file diff --git a/pkg/apis/observability/v1alpha1/types.go b/pkg/apis/observability/v1alpha1/types.go index c4957b5cb..d5ba0d737 100644 --- a/pkg/apis/observability/v1alpha1/types.go +++ b/pkg/apis/observability/v1alpha1/types.go @@ -16,6 +16,7 @@ import ( // +kubebuilder:printcolumn:name="OpenTelemetry",type="string",JSONPath=".status.opentelemetry" // +kubebuilder:printcolumn:name="Tempo",type="string",JSONPath=".status.tempo" // +operator-sdk:csv:customresourcedefinitions:displayName="Observability Installer" +// +operator-sdk:csv:customresourcedefinitions:description="Provides end-to-end observability capabilities with minimal configuration. Simplifies deployment and management of observability components such as tracing." // +kubebuilder:metadata:annotations="observability.openshift.io/api-support=TechPreview" type ObservabilityInstaller struct { metav1.TypeMeta `json:",inline"` From cb47218daac576d8c16ef28278e4875612335723 Mon Sep 17 00:00:00 2001 From: Tomas Remes Date: Thu, 20 Nov 2025 14:30:37 +0100 Subject: [PATCH 10/32] sync 1.3 to main (#935) * sync code changes from main to release-1.3 (#918) * fix: fix linter issues and add CI check for linter changes (#887) Since we call `golang-lint --fix` we should check if the linter has fixed anything. Signed-off-by: Jan Fajerski * build(deps): bump github.com/grafana/tempo-operator (#915) Bumps [github.com/grafana/tempo-operator](https://github.com/grafana/tempo-operator) from 0.16.0 to 0.18.0. - [Release notes](https://github.com/grafana/tempo-operator/releases) - [Changelog](https://github.com/grafana/tempo-operator/blob/main/CHANGELOG.md) - [Commits](https://github.com/grafana/tempo-operator/compare/v0.16.0...v0.18.0) --- updated-dependencies: - dependency-name: github.com/grafana/tempo-operator dependency-version: 0.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * OU-964: update incidents and TP to GA (#912) * feat: update min version for incident feature to 4.20 * feat: update incidents and tp to GA in matrix * fix: re-enable incidents on 4.19 --------- Co-authored-by: Alberto Falossi * fix: set 4.19 as GA for incidents (#917) * chore: update korrel8r image to 0.8.4 for COO 1.3 (#908) --------- Signed-off-by: Jan Fajerski Signed-off-by: dependabot[bot] Co-authored-by: Jan Fajerski Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Peter Yurkovich <47438010+PeterYurkovich@users.noreply.github.com> Co-authored-by: Alberto Falossi Co-authored-by: Alan Conway * fix: reconcile incident related resources only in 4.19+ (#921) * fix: reconcile korrel8r backend only for troubleshooting plugin (#922) Signed-off-by: Gabriel Bernal * feat: drop korrel8r and troubleshooting panel support before 4.19 (#929) Signed-off-by: Gabriel Bernal * Sync accelerators fixes (#930) * fix: [COO-1304] Fix misspelled labels of accelerator metrics (#925) Fix misspelled labels in the common accelerator metrics dashboard. * fix: [COO-1305] Fix misspelled metric name in accelerators (#926) Fix the spelling of units of the accellerator temperature. --------- Co-authored-by: Vitaly E. * fix: rename clusterrolebinding used for monitoring plugin to avoid clash (#931) * Sync release tag (#927) * fix: fix linter issues and add CI check for linter changes (#887) Since we call `golang-lint --fix` we should check if the linter has fixed anything. Signed-off-by: Jan Fajerski * build(deps): bump github.com/grafana/tempo-operator (#915) Bumps [github.com/grafana/tempo-operator](https://github.com/grafana/tempo-operator) from 0.16.0 to 0.18.0. - [Release notes](https://github.com/grafana/tempo-operator/releases) - [Changelog](https://github.com/grafana/tempo-operator/blob/main/CHANGELOG.md) - [Commits](https://github.com/grafana/tempo-operator/compare/v0.16.0...v0.18.0) --- updated-dependencies: - dependency-name: github.com/grafana/tempo-operator dependency-version: 0.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * OU-964: update incidents and TP to GA (#912) * feat: update min version for incident feature to 4.20 * feat: update incidents and tp to GA in matrix * fix: re-enable incidents on 4.19 --------- Co-authored-by: Alberto Falossi * fix: set 4.19 as GA for incidents (#917) * chore: update korrel8r image to 0.8.4 for COO 1.3 (#908) * chore(release): 1.3.0 (#920) --------- Signed-off-by: Jan Fajerski Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Peter Yurkovich <47438010+PeterYurkovich@users.noreply.github.com> Co-authored-by: Alberto Falossi Co-authored-by: Alan Conway * chore: bumpt to prometheus-operator 0.86.2 (#933) Signed-off-by: Jan Fajerski --------- Signed-off-by: Jan Fajerski Signed-off-by: dependabot[bot] Signed-off-by: Gabriel Bernal Co-authored-by: lihongyan1 Co-authored-by: Jan Fajerski Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Peter Yurkovich <47438010+PeterYurkovich@users.noreply.github.com> Co-authored-by: Alberto Falossi Co-authored-by: Alan Conway Co-authored-by: Gabriel Bernal Co-authored-by: Vitaly E. --- .../monitoring.rhobs_alertmanagerconfigs.yaml | 2 +- .../monitoring.rhobs_alertmanagers.yaml | 2 +- .../monitoring.rhobs_podmonitors.yaml | 2 +- bundle/manifests/monitoring.rhobs_probes.yaml | 2 +- .../monitoring.rhobs_prometheusagents.yaml | 2 +- .../monitoring.rhobs_prometheuses.yaml | 2 +- .../monitoring.rhobs_prometheusrules.yaml | 2 +- .../monitoring.rhobs_scrapeconfigs.yaml | 2 +- .../monitoring.rhobs_servicemonitors.yaml | 2 +- .../monitoring.rhobs_thanosrulers.yaml | 2 +- ...webhook_policy_v1_poddisruptionbudget.yaml | 2 +- ...operator-admission-webhook_v1_service.yaml | 2 +- .../obo-prometheus-operator_v1_service.yaml | 2 +- ...bility-operator.clusterserviceversion.yaml | 14 +++---- deploy/dependencies/kustomization.yaml | 38 +++++++++---------- docs/user-guides/observability-ui-plugins.md | 10 ++--- go.mod | 8 ++-- go.sum | 16 ++++---- .../uiplugin/compatibility_matrix.go | 7 +--- .../uiplugin/compatibility_matrix_test.go | 9 ++++- pkg/controllers/uiplugin/components.go | 9 +++-- 21 files changed, 71 insertions(+), 66 deletions(-) diff --git a/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml b/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml index fcfcb0d44..211db3627 100644 --- a/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml +++ b/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_alertmanagers.yaml b/bundle/manifests/monitoring.rhobs_alertmanagers.yaml index e585fbf51..f83ea462e 100644 --- a/bundle/manifests/monitoring.rhobs_alertmanagers.yaml +++ b/bundle/manifests/monitoring.rhobs_alertmanagers.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: Experimental-SSA - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_podmonitors.yaml b/bundle/manifests/monitoring.rhobs_podmonitors.yaml index a4948d324..af3a2ef83 100644 --- a/bundle/manifests/monitoring.rhobs_podmonitors.yaml +++ b/bundle/manifests/monitoring.rhobs_podmonitors.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_probes.yaml b/bundle/manifests/monitoring.rhobs_probes.yaml index 4a82ec88e..da952c197 100644 --- a/bundle/manifests/monitoring.rhobs_probes.yaml +++ b/bundle/manifests/monitoring.rhobs_probes.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_prometheusagents.yaml b/bundle/manifests/monitoring.rhobs_prometheusagents.yaml index 9124df4bf..9bc80e6b8 100644 --- a/bundle/manifests/monitoring.rhobs_prometheusagents.yaml +++ b/bundle/manifests/monitoring.rhobs_prometheusagents.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_prometheuses.yaml b/bundle/manifests/monitoring.rhobs_prometheuses.yaml index 2925f81a0..b9997e151 100644 --- a/bundle/manifests/monitoring.rhobs_prometheuses.yaml +++ b/bundle/manifests/monitoring.rhobs_prometheuses.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: Experimental-SSA - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_prometheusrules.yaml b/bundle/manifests/monitoring.rhobs_prometheusrules.yaml index 890d41a07..667fc4242 100644 --- a/bundle/manifests/monitoring.rhobs_prometheusrules.yaml +++ b/bundle/manifests/monitoring.rhobs_prometheusrules.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml b/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml index 2dc7e63d0..749a1fcd7 100644 --- a/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml +++ b/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_servicemonitors.yaml b/bundle/manifests/monitoring.rhobs_servicemonitors.yaml index 08c310114..8b9bd273a 100644 --- a/bundle/manifests/monitoring.rhobs_servicemonitors.yaml +++ b/bundle/manifests/monitoring.rhobs_servicemonitors.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_thanosrulers.yaml b/bundle/manifests/monitoring.rhobs_thanosrulers.yaml index 8482c842b..c2b1b8133 100644 --- a/bundle/manifests/monitoring.rhobs_thanosrulers.yaml +++ b/bundle/manifests/monitoring.rhobs_thanosrulers.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.1-rhobs1 + operator.prometheus.io/version: 0.86.2-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml b/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml index 2db1a3a43..daa326649 100644 --- a/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml +++ b/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 name: obo-prometheus-operator-admission-webhook spec: minAvailable: 1 diff --git a/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml b/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml index 25b1a3cb0..2d8caaad8 100644 --- a/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml +++ b/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml @@ -5,7 +5,7 @@ metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 name: obo-prometheus-operator-admission-webhook spec: ports: diff --git a/bundle/manifests/obo-prometheus-operator_v1_service.yaml b/bundle/manifests/obo-prometheus-operator_v1_service.yaml index 4ccb865eb..baf691655 100644 --- a/bundle/manifests/obo-prometheus-operator_v1_service.yaml +++ b/bundle/manifests/obo-prometheus-operator_v1_service.yaml @@ -6,7 +6,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 name: obo-prometheus-operator spec: clusterIP: None diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index ec6f1b010..e47334fa5 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-11-07T04:13:59Z" + createdAt: "2025-11-14T10:13:10Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -254,7 +254,7 @@ spec: - list - watch - apiGroups: - - "" + - events.k8s.io resources: - events verbs: @@ -828,7 +828,7 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 name: obo-prometheus-operator spec: replicas: 1 @@ -847,7 +847,7 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 spec: affinity: nodeAffinity: @@ -897,7 +897,7 @@ spec: - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 @@ -915,7 +915,7 @@ spec: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.1-rhobs1 + app.kubernetes.io/version: 0.86.2-rhobs1 spec: affinity: nodeAffinity: @@ -940,7 +940,7 @@ spec: - --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: quay.io/rhobs/obo-admission-webhook:v0.86.1-rhobs1 + image: quay.io/rhobs/obo-admission-webhook:v0.86.2-rhobs1 name: prometheus-operator-admission-webhook ports: - containerPort: 8443 diff --git a/deploy/dependencies/kustomization.yaml b/deploy/dependencies/kustomization.yaml index 57064f05a..c98995453 100644 --- a/deploy/dependencies/kustomization.yaml +++ b/deploy/dependencies/kustomization.yaml @@ -3,25 +3,25 @@ kind: Kustomization resources: -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagers.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_podmonitors.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_probes.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheuses.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusrules.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_servicemonitors.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_thanosrulers.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusagents.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagerconfigs.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_scrapeconfigs.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/admission-webhook/deployment.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/admission-webhook/service-account.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/admission-webhook/service.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.1-rhobs1/example/admission-webhook/pod-disruption-budget.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagers.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_podmonitors.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_probes.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheuses.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusrules.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_servicemonitors.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_thanosrulers.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusagents.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagerconfigs.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_scrapeconfigs.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/deployment.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/service-account.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/service.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/pod-disruption-budget.yaml # NOTE: a service although automatically created by OLM for webhooks still # requires admission-webhook/service as the port generated by OLM uses 443 # but assumes targetPort to be 443 as opposed to "https" port of webhook - 8443 diff --git a/docs/user-guides/observability-ui-plugins.md b/docs/user-guides/observability-ui-plugins.md index 8d30fe4c3..ac9e07c86 100644 --- a/docs/user-guides/observability-ui-plugins.md +++ b/docs/user-guides/observability-ui-plugins.md @@ -11,12 +11,10 @@ Using the Observability UI, you can install and manage plugins that extend the o | __COO Version__ | __OCP Versions__ | __Dashboards__ | __Distributed Tracing__ | __Logging__ | __Troubleshooting Panel__ | __Monitoring__ | | --------------- | ------------------- | -------------- | ----------------------- | ----------- | ------------------------- | ---------------| -| 0.2.0 | 4.11 | ✔ | ✘ | ✘ | ✘ | ✘ | -| 0.3.0 - 0.4.0 | 4.11 - 4.15 | ✔ | ✔ | ✔ | ✘ | ✘ | -| 0.3.0 - 0.4.0 | 4.16+ | ✔ | ✔ | ✔ | ✔ | ✘ | -| 1.0.0+ | 4.11 - 4.14 | ✔ | ✔ | ✔ | ✘ | ✘ | +| 0.2.0 | 4.12 | ✔ | ✘ | ✘ | ✘ | ✘ | +| 0.3.0+ | 4.12 - 4.14 | ✔ | ✔ | ✔ | ✘ | ✘ | | 1.0.0+ | 4.15 | ✔ | ✔ | ✔ | ✘ | ✔ | -| 1.0.0+ | 4.16+ | ✔ | ✔ | ✔ | ✔ | ✔ | +| 1.3.0+ | 4.19+ | ✔ | ✔ | ✔ | ✔ | ✔ | Some plugin offer additional features that are available dependant on the cluster version. COO will always deploy all features available for the cluster it is running on. @@ -66,7 +64,7 @@ spec: | __COO Version__ | __OCP Versions__ | __Features__ | | --------------- | ------------------- | ----------------------------------------------------- | -| 0.3.0+ | 4.16+ | _No features configuration, just core functionality_ | +| 1.3.0+ | 4.19+ | _No features configuration, just core functionality_ | ### Distributed Tracing diff --git a/go.mod b/go.mod index d380b8bb5..46fff224b 100644 --- a/go.mod +++ b/go.mod @@ -12,10 +12,10 @@ require ( github.com/openshift/api v3.9.0+incompatible // PINNED: newer versions remove console/v1alpha1 API needed for OpenShift <4.17 compatibility github.com/operator-framework/api v0.34.0 github.com/pkg/errors v0.9.1 - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.1 + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2 github.com/prometheus/common v0.67.1 - github.com/rhobs/obo-prometheus-operator v0.86.1-rhobs1 - github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.1-rhobs1 + github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1 + github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 golang.org/x/mod v0.28.0 @@ -129,7 +129,7 @@ require ( github.com/prometheus/otlptranslator v0.0.2 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/prometheus v0.305.1-0.20250818080900-0a40df33fb4e // indirect - github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.1-rhobs1 // indirect + github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.10.1 // indirect diff --git a/go.sum b/go.sum index 4a58e641c..6f0fc0b14 100644 --- a/go.sum +++ b/go.sum @@ -403,8 +403,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus-community/prom-label-proxy v0.12.1 h1:vJ6tGz4NMge140Ua3T/zh3HO0CA3bmnCsfkWK/cujG0= github.com/prometheus-community/prom-label-proxy v0.12.1/go.mod h1:/tZNtOMcbPbE1VFcY8b48mPqT1bb2jVpXx2WdjjM8TY= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.1 h1:j/GvU9UxlK5nuUKOWYOY0LRqcfHZl1ffTOa46+00Cys= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.1/go.mod h1:nPk0OteXBkbT0CRCa2oZQL1jRLW6RJ2fuIijHypeJdk= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2 h1:VRXUgbGmpmjZgFYiUnTwlC+JjfCUs5KKFsorJhI1ZKQ= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2/go.mod h1:nPk0OteXBkbT0CRCa2oZQL1jRLW6RJ2fuIijHypeJdk= github.com/prometheus/alertmanager v0.28.1 h1:BK5pCoAtaKg01BYRUJhEDV1tqJMEtYBGzPw8QdvnnvA= github.com/prometheus/alertmanager v0.28.1/go.mod h1:0StpPUDDHi1VXeM7p2yYfeZgLVi/PPlt39vo9LQUHxM= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -432,12 +432,12 @@ github.com/prometheus/prometheus v0.305.1-0.20250818080900-0a40df33fb4e h1:HcaG1 github.com/prometheus/prometheus v0.305.1-0.20250818080900-0a40df33fb4e/go.mod h1:uxFMhGI+u8QK+W7Zr/oZGvf2lkHgnjbBmAEEnoymLyg= github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= -github.com/rhobs/obo-prometheus-operator v0.86.1-rhobs1 h1:HGxed6HguZl8zDtBYh0j33aEcRMHg2pdJEwQWI4JoK0= -github.com/rhobs/obo-prometheus-operator v0.86.1-rhobs1/go.mod h1:llR/jE81G/P+dPkKjNmTrkgJ26eA9fPHLhLRxsQ3FCo= -github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.1-rhobs1 h1:TRSAAEQ8xZgBYnq7GY1WpfToU3OjBv/hDuzmI8IRF38= -github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.1-rhobs1/go.mod h1:l986kUrEUzfrbYEsqRvSAJThNbF4SUKkM5eZR+L3uf0= -github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.1-rhobs1 h1:hKGd+NRtZkrTBFcoApy/3IkKJJprjwE3zsF4bZZxG7Y= -github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.1-rhobs1/go.mod h1:Ad3ru/JHiOZNEwAsaPMxzUq5Ft/qRs2kzBQXhw/9yJc= +github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1 h1:QGR5xr9DJO4StwEvzorhbie2nnRHPcWloJMdJyTzmM8= +github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1/go.mod h1:QFDNkYTYaR2NlRr7PoM2kH8tp1xUxI3fElU4hpceQLA= +github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 h1:4VkQnCtdwBzrMP7x5+7KhViipa2ARmEOHip6ULVm14U= +github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1/go.mod h1:l986kUrEUzfrbYEsqRvSAJThNbF4SUKkM5eZR+L3uf0= +github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1 h1:xHFPnhTfQ1JNtHfqveI3MRdk7FREgkY3s2pTjoFL3Bw= +github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1/go.mod h1:a2jQ6UDlAqTT573SpRc548JwIK1rvMh6RKvSI/749HA= github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6 h1:f+J6l48RMDomN9YrDxd0cZVo7+L+a/TCzH6ycat5tMI= github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6/go.mod h1:bNP815/mCv8ydNQ2Q3a9gqlx9b2XouWa6hws9vthq78= github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 h1:IxpxGJ/fbnRkZZYFm17NMedFyEuOKuf4TS23g+6jMvU= diff --git a/pkg/controllers/uiplugin/compatibility_matrix.go b/pkg/controllers/uiplugin/compatibility_matrix.go index ef608a9c4..c4714acc9 100644 --- a/pkg/controllers/uiplugin/compatibility_matrix.go +++ b/pkg/controllers/uiplugin/compatibility_matrix.go @@ -43,11 +43,8 @@ var compatibilityMatrix = []CompatibilityEntry{ SupportLevel: DevPreview, }, { - PluginType: uiv1alpha1.TypeTroubleshootingPanel, - // This plugin requires the monitoring-plugin from OpenShift 4.16 (at - // least) to render the "Troubleshooting Panel" button on the alert - // details page. - MinClusterVersion: "v4.16", + PluginType: uiv1alpha1.TypeTroubleshootingPanel, + MinClusterVersion: "v4.19", MaxClusterVersion: "", ImageKey: "ui-troubleshooting-panel", SupportLevel: GeneralAvailability, diff --git a/pkg/controllers/uiplugin/compatibility_matrix_test.go b/pkg/controllers/uiplugin/compatibility_matrix_test.go index c28f5a992..329508002 100644 --- a/pkg/controllers/uiplugin/compatibility_matrix_test.go +++ b/pkg/controllers/uiplugin/compatibility_matrix_test.go @@ -187,6 +187,13 @@ func TestLookupImageAndFeatures(t *testing.T) { pluginType: uiv1alpha1.TypeTroubleshootingPanel, clusterVersion: "4.16", expectedKey: "ui-troubleshooting-panel", + expectedErr: fmt.Errorf(`plugin "TroubleshootingPanel": no compatible image found for cluster version "v4.16"`), + supportLevel: GeneralAvailability, + }, + { + pluginType: uiv1alpha1.TypeTroubleshootingPanel, + clusterVersion: "4.19", + expectedKey: "ui-troubleshooting-panel", expectedErr: nil, supportLevel: GeneralAvailability, }, @@ -276,7 +283,7 @@ func TestLookupImageAndFeatures(t *testing.T) { }, { pluginType: uiv1alpha1.TypeTroubleshootingPanel, - clusterVersion: "v4.16.0-0.nightly-2024-06-06-064349", + clusterVersion: "v4.19.0-0.nightly-2024-06-06-064349", expectedKey: "ui-troubleshooting-panel", expectedErr: nil, supportLevel: GeneralAvailability, diff --git a/pkg/controllers/uiplugin/components.go b/pkg/controllers/uiplugin/components.go index b42299ff8..7e15354da 100644 --- a/pkg/controllers/uiplugin/components.go +++ b/pkg/controllers/uiplugin/components.go @@ -102,7 +102,7 @@ func pluginComponentReconcilers(plugin *uiv1alpha1.UIPlugin, pluginInfo UIPlugin } } - if pluginInfo.Korrel8rImage != "" { + if plugin.Spec.Type == uiv1alpha1.TypeTroubleshootingPanel && pluginInfo.Korrel8rImage != "" { components = append(components, reconciler.NewUpdater(newKorrel8rService(korrel8rName, namespace), plugin)) korrel8rCm, err := newKorrel8rConfigMap(korrel8rName, namespace, pluginInfo) if err == nil && korrel8rCm != nil { @@ -116,9 +116,12 @@ func pluginComponentReconcilers(plugin *uiv1alpha1.UIPlugin, pluginInfo UIPlugin if plugin.Spec.Type == uiv1alpha1.TypeMonitoring { monitoringConfig := plugin.Spec.Monitoring serviceAccountName := plugin.Name + serviceAccountSuffix - incidentsEnabled := monitoringConfig != nil && monitoringConfig.Incidents != nil && monitoringConfig.Incidents.Enabled + incidentsEnabled := monitoringConfig != nil && + monitoringConfig.Incidents != nil && + monitoringConfig.Incidents.Enabled && + pluginInfo.HealthAnalyzerImage != "" components = append(components, - reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, serviceAccountName, "cluster-monitoring-view", "cluster-monitoring-view"), plugin, incidentsEnabled), + reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, serviceAccountName, "cluster-monitoring-view", plugin.Name+"cluster-monitoring-view"), plugin, incidentsEnabled), reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, serviceAccountName, "system:auth-delegator", serviceAccountName+"-system-auth-delegator"), plugin, incidentsEnabled), reconciler.NewOptionalUpdater(newAlertManagerViewRoleBinding(serviceAccountName, namespace), plugin, incidentsEnabled), reconciler.NewOptionalUpdater(newHealthAnalyzerPrometheusRole(namespace), plugin, incidentsEnabled), From 210528d31821e0e0e69be15c8e43fbb98368dc10 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 14:39:01 +0000 Subject: [PATCH 11/32] build(deps): bump golang.org/x/crypto from 0.42.0 to 0.45.0 (#934) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.42.0 to 0.45.0. - [Commits](https://github.com/golang/crypto/compare/v0.42.0...v0.45.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.45.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index 46fff224b..434c071c7 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 - golang.org/x/mod v0.28.0 + golang.org/x/mod v0.29.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.5.2 k8s.io/api v0.34.1 @@ -168,13 +168,13 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/net v0.44.0 // indirect + golang.org/x/crypto v0.45.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.31.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect diff --git a/go.sum b/go.sum index 6f0fc0b14..ae6737aed 100644 --- a/go.sum +++ b/go.sum @@ -563,22 +563,22 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= -golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= -golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= +golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= +golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= -golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -586,8 +586,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -597,22 +597,22 @@ golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= -golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= -golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= +golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= +golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From c25cf24d4fe36612c5af52aa4f4934c9d0a2b164 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Fri, 21 Nov 2025 18:19:57 +0100 Subject: [PATCH 12/32] docs: fix a few typos in the Thanos Querier guide (#936) Signed-off-by: Simon Pasquier --- docs/user-guides/README.md | 2 +- docs/user-guides/thanos_querier.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/user-guides/README.md b/docs/user-guides/README.md index dd5d74589..391f4ee69 100644 --- a/docs/user-guides/README.md +++ b/docs/user-guides/README.md @@ -2,4 +2,4 @@ * [Using SSA to customize Prometheus](server-side-apply.md) * [Federating OpenShift In-Cluster Prometheus](federation.md) - +* [Deploying ThanosQuerier for multiple MonitoringStacks](thanos_querier.md) diff --git a/docs/user-guides/thanos_querier.md b/docs/user-guides/thanos_querier.md index 5ffc720fc..0f6a7dc30 100644 --- a/docs/user-guides/thanos_querier.md +++ b/docs/user-guides/thanos_querier.md @@ -27,7 +27,7 @@ We are going to create To install the example, run: ```shell -kubectl apply -f docs/user-guides/thanos-querier/install +kubectl apply -f docs/user-guides/thanos_querier/install ``` To verify the installation, run: @@ -50,7 +50,7 @@ Then open `http://localhost:10902` in your browser. To install the example dashboard (+datasource), run: ```shell -kubectl apply -f thanos_querier/dashboard/ +kubectl apply -f docs/user-guides/thanos_querier/dashboard ``` To verify the installation, run: From 42301f7b4051fb025eaa32c106238cf6c529f230 Mon Sep 17 00:00:00 2001 From: Tomas Remes Date: Tue, 25 Nov 2025 09:43:37 +0100 Subject: [PATCH 13/32] fix: fix & rename health-analyzer and korrel8r clusterrolebindings (#937) --- pkg/controllers/uiplugin/components.go | 3 +- .../uiplugin/troubleshooting_panel.go | 38 +++---------------- 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/pkg/controllers/uiplugin/components.go b/pkg/controllers/uiplugin/components.go index 7e15354da..0d6625df4 100644 --- a/pkg/controllers/uiplugin/components.go +++ b/pkg/controllers/uiplugin/components.go @@ -35,6 +35,7 @@ const ( OpenshiftLoggingNs = "openshift-logging" OpenshiftNetobservNs = "netobserv" OpenshiftTracingNs = "openshift-tracing" + monitorClusterroleName = "cluster-monitoring-view" annotationPrefix = "observability.openshift.io/ui-plugin-" ) @@ -121,7 +122,7 @@ func pluginComponentReconcilers(plugin *uiv1alpha1.UIPlugin, pluginInfo UIPlugin monitoringConfig.Incidents.Enabled && pluginInfo.HealthAnalyzerImage != "" components = append(components, - reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, serviceAccountName, "cluster-monitoring-view", plugin.Name+"cluster-monitoring-view"), plugin, incidentsEnabled), + reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, serviceAccountName, monitorClusterroleName, plugin.Name+"-"+monitorClusterroleName), plugin, incidentsEnabled), reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, serviceAccountName, "system:auth-delegator", serviceAccountName+"-system-auth-delegator"), plugin, incidentsEnabled), reconciler.NewOptionalUpdater(newAlertManagerViewRoleBinding(serviceAccountName, namespace), plugin, incidentsEnabled), reconciler.NewOptionalUpdater(newHealthAnalyzerPrometheusRole(namespace), plugin, incidentsEnabled), diff --git a/pkg/controllers/uiplugin/troubleshooting_panel.go b/pkg/controllers/uiplugin/troubleshooting_panel.go index de3dc72fb..58f6decf7 100644 --- a/pkg/controllers/uiplugin/troubleshooting_panel.go +++ b/pkg/controllers/uiplugin/troubleshooting_panel.go @@ -19,9 +19,8 @@ import ( ) const ( - korrel8rSvcName = "korrel8r" - monitorClusterroleName = "cluster-monitoring" - alertmanagerRoleName = "monitoring-alertmanager-view" + korrel8rSvcName = "korrel8r" + alertmanagerRoleName = "monitoring-alertmanager-view" ) func createTroubleshootingPanelPluginInfo(plugin *uiv1alpha1.UIPlugin, namespace, name, image string, features []string) (*UIPluginInfo, error) { @@ -40,6 +39,7 @@ func createTroubleshootingPanelPluginInfo(plugin *uiv1alpha1.UIPlugin, namespace extraArgs = append(extraArgs, fmt.Sprintf("-features=%s", strings.Join(features, ","))) } + serviceAccountName := plugin.Name + serviceAccountSuffix pluginInfo := &UIPluginInfo{ Image: image, Name: plugin.Name, @@ -101,7 +101,7 @@ func createTroubleshootingPanelPluginInfo(plugin *uiv1alpha1.UIPlugin, namespace { APIGroup: corev1.SchemeGroupVersion.Group, Kind: "ServiceAccount", - Name: plugin.Name + "-sa", + Name: serviceAccountName, Namespace: namespace, }, }, @@ -115,8 +115,8 @@ func createTroubleshootingPanelPluginInfo(plugin *uiv1alpha1.UIPlugin, namespace korrel8rClusterRole(korrel8rSvcName), }, ClusterRoleBindings: []*rbacv1.ClusterRoleBinding{ - korrel8rClusterRoleBinding(monitorClusterroleName, plugin.Name, namespace), - korrel8rClusterRoleBinding(korrel8rSvcName, plugin.Name, namespace), + newClusterRoleBinding(namespace, serviceAccountName, monitorClusterroleName, plugin.Name+"-"+monitorClusterroleName), + newClusterRoleBinding(namespace, serviceAccountName, korrel8rSvcName+"-view", plugin.Name+"-"+korrel8rSvcName), }, } @@ -237,29 +237,3 @@ func korrel8rClusterRole(name string) *rbacv1.ClusterRole { }, } } - -func korrel8rClusterRoleBinding(name string, serviceAccountName string, namespace string) *rbacv1.ClusterRoleBinding { - korrel8rClusterroleBindingName := name + "-view" - return &rbacv1.ClusterRoleBinding{ - TypeMeta: metav1.TypeMeta{ - APIVersion: rbacv1.SchemeGroupVersion.String(), - Kind: "ClusterRoleBinding", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: korrel8rClusterroleBindingName, - }, - Subjects: []rbacv1.Subject{ - { - APIGroup: corev1.SchemeGroupVersion.Group, - Kind: "ServiceAccount", - Name: serviceAccountName + "-sa", - Namespace: namespace, - }, - }, - RoleRef: rbacv1.RoleRef{ - APIGroup: rbacv1.SchemeGroupVersion.Group, - Kind: "ClusterRole", - Name: korrel8rClusterroleBindingName, - }, - } -} From 1d6245b9347a213c1ae70b671b0f62ccb9694e06 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Wed, 26 Nov 2025 11:09:19 +0100 Subject: [PATCH 14/32] docs: update UI plugins documentation (#940) --- docs/user-guides/README.md | 1 + docs/user-guides/observability-ui-plugins.md | 30 +++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/user-guides/README.md b/docs/user-guides/README.md index 391f4ee69..1bac9d359 100644 --- a/docs/user-guides/README.md +++ b/docs/user-guides/README.md @@ -2,4 +2,5 @@ * [Using SSA to customize Prometheus](server-side-apply.md) * [Federating OpenShift In-Cluster Prometheus](federation.md) +* [User interface plugins](observability-ui-plugins.md) * [Deploying ThanosQuerier for multiple MonitoringStacks](thanos_querier.md) diff --git a/docs/user-guides/observability-ui-plugins.md b/docs/user-guides/observability-ui-plugins.md index ac9e07c86..ee7af793d 100644 --- a/docs/user-guides/observability-ui-plugins.md +++ b/docs/user-guides/observability-ui-plugins.md @@ -135,6 +135,8 @@ spec: ### Monitoring +#### Overview + The plugin adds monitoring related UI features to the OpenShift web console, related to the Advance Cluster Management (ACM) perspective, incidents (cluster health analysis), and [Perses](https://github.com/perses/perses). A number of new pages and features are enabled through this plugin. Including, but not limited to: - `ACM > Observe > Alerting` - `ACM > Observe > Alerting > Silences` @@ -142,23 +144,29 @@ The plugin adds monitoring related UI features to the OpenShift web console, rel - `OCP > Observe > Dashboards (Perses)` - `OCP > Observe > Incidents` +##### ACM + To deploy ACM related features the `acm-alerting` configuration must be enabled. In the UIPlugin Custom Resource (CR) you must pass the Alertmanager and ThanosQuerier Service endpoint (e.g. `https://alertmanager.open-cluster-management-observability.svc:9095` and `https://rbac-query-proxy.open-cluster-management-observability.svc:8443`). See the example in the next section `Plugin Creation.` +##### Incident detection + To deploy the Incidents feature, the `incidents` configuration must be enabled. See the example in the next section, `Plugin Creation.` +##### Perses + To deploy the Perses dashboard feature, the `perses-dashboards` configuration must be enabled. In the UIPlugin CR, you can optionally pass the service name and namespace of your Perses instance (e.g., `serviceName: perses-api-http` and `namespace: perses`). If these fields are left blank and `spec.monitoring.perses.enabled: true`, then default values will be assigned. These default values are `serviceName: perses-api-http` and `namespace: perses`. See the example in the next section, `Plugin Creation.` Besides, when `spec.monitoring.perses.enabled: true`, Accelerator Perses dashboard and Accelerator Perses datasource are both created. -ObO/COO operator creates the following roles: -- persesdashboard-editor-role - ability to create, read, update and delete perses dashboards CRD instance presented on ObO/COO operator under PersesDashboards tab, and view perses dashboards presentation in Dashboards (Perses) -- persesdashboard-viewer-role - ability to only read/view perses dashboards CRD instance presented on ObO/COO operator under PersesDashboards tab, and view perses dashboards presentation in Dashboards (Perses) -- persesdatasource-editor-role - ability to create, read, update and delete perses datasources CRD instance presented on ObO/COO operator under PersesDatasources tab, and view perses dashboards with data being loaded from perses datasource in Dashboards (Perses) -- persesdatasource-viewer-role - ability to only read/view perses datasources CRD instance presented on ObO/COO operator under PersesDatasources tab, and view perses dashboards with data being loaded from perses datasource in Dashboards (Perses) +The Cluster Observability Operator creates the following roles: +- `persesdashboard-editor-role` - ability to create, read, update and delete `PersesDashboard` Custom Resources under the PersesDashboards tab, and view Perses dashboards presentation in Dashboards (Perses). +- `persesdashboard-viewer-role` - ability to read `PersesDashboard` Custom Resources under the PersesDashboards tab, and view Perses dashboards presentation in Dashboards (Perses). +- `persesdatasource-editor-role` - ability to create, read, update and delete `PersesDatasource` Custom Resources under the PersesDatasources tab, and view Perses dashboards with data being loaded from Perses datasource in Dashboards (Perses). +- `persesdatasource-viewer-role` - ability to read `PersesDatasource` Custom Resources under the PersesDatasources tab, and view Perses dashboards with data being loaded from Perses datasource in Dashboards (Perses). -When assigned via ClusterRoleBinding, user has access to all perses dashboards and perses datasources presented in all namespaces/projects. When assigned via RoleBinding, user has access to all perses dashboards and perses datasources presented in a given namespace/project. +When assigned via `ClusterRoleBinding`, a user has access to all Perses dashboards and datasources in all namespaces/projects. When assigned via `RoleBinding`, user has access to all Perses dashboards and datasources in the given namespace/project. Examples: -- user1 RoleBinding as persesdashboard-viewer-role and persesdatasource-viewer-role in openshift-cluster-observability-operator namespace: +- Granting `user1` the `persesdashboard-viewer-role` and `persesdatasource-viewer-role` permissions in the `openshift-cluster-observability-operator`namespace via `RoleBinding`: ```yaml kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -189,7 +197,7 @@ roleRef: name: persesdatasource-viewer-role ``` -- user1 ClusterRoleBinding as persesdashboard-editor-role and persesdatasource-editor-role: +- Granting `user1` the `persesdashboard-editor-role` and `persesdatasource-editor-role` permissions via `ClusterRoleBinding`: ```yaml kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -218,11 +226,11 @@ roleRef: name: persesdatasource-editor-role ``` -Other pages which are typically distributed with the monitoring-plugin, such as `Admin > Observe > Dashboards`, are only available in the monitoring-plugin when deployed through [CMO](https://github.com/openshift/cluster-monitoring-operator). +Other pages which are typically distributed by the [monitoring-plugin](https://github.com/openshift/monitoring-plugin), such as `Admin > Observe > Dashboards`, are only available when deployed through [CMO](https://github.com/openshift/cluster-monitoring-operator). #### Plugin Creation -To enable to monitoring console plugin, create a `UIPlugin` CR. The following example shows how to create a CR to enable the monitoring console plugin: +To enable to the monitoring console plugin, create a `UIPlugin` resource: ```yaml apiVersion: observability.openshift.io/v1alpha1 @@ -248,7 +256,7 @@ spec: | __Feature__ | __Description__ | __Support Level__ | | ------------------- | ------------------------------------------------------------------------------------------------------------------------ | ----------------- | -| `acm-alerting` | Adds alerting UI to multi-cluster view. Configures proxies to connect with any alertmanager and thanos-querier. | Dev Preview | +| `acm-alerting` | Adds alerting UI to multi-cluster view. Configures proxies to connect with any Alertmanager and Thanos Query API. | Dev Preview | | `incidents` | Adds incidents UI to `Observe` section of OpenShift Console Platform. Deploys the [Cluster Health Analyzer](https://github.com/openshift/cluster-health-analyzer) and configures proxies in the plugin to connect with it. | General Availability | | `perses-dashboards` | Adds perses UI to `Observe` section of OpenShift Console Platform. Configures proxies to connect with a Perses instance. Installs Accelerator Perses Dashboard and Accelerator Perses Datasource. See details [here](./perses-dashboards.md) | Dev Preview | From e7a45ee644d40b9deccffc52d4779b41f5bb8894 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Wed, 26 Nov 2025 15:39:21 +0100 Subject: [PATCH 15/32] feat: allow to set replicas number for Alertmanager (#941) This commit introduces a new `replicas` field in the Alertmanager configuration to the `MonitoringStack` CRD. This makes it consistent with the Prometheus configuration and allows to run Alertmanager on single-node clusters. It also adds a `replace` directive in `go.mod` to use the local copy of `github.com/rhobs/observability-operator/pkg/apis` which simplifies the development of API changes. Signed-off-by: Simon Pasquier --- build/Dockerfile | 1 + .../monitoring.rhobs_monitoringstacks.yaml | 6 +++ ...bility-operator.clusterserviceversion.yaml | 2 +- .../monitoring.rhobs_monitoringstacks.yaml | 6 +++ docs/api.md | 11 +++++ go.mod | 22 ++++----- go.sum | 2 - pkg/apis/monitoring/v1alpha1/types.go | 7 +++ .../v1alpha1/zz_generated.deepcopy.go | 5 +++ .../monitoring-stack/alertmanager.go | 3 +- .../monitoring/monitoring-stack/components.go | 2 +- test/Dockerfile | 1 + test/e2e/framework/monitoring_stack.go | 6 +++ test/e2e/monitoring_stack_controller_test.go | 45 ++++++++++++++++--- 14 files changed, 97 insertions(+), 22 deletions(-) diff --git a/build/Dockerfile b/build/Dockerfile index 58440be5d..565beba5c 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -5,6 +5,7 @@ WORKDIR /workspace # Copy the Go Modules manifests COPY go.mod go.mod COPY go.sum go.sum +COPY pkg/apis/ pkg/apis/ # cache deps before building and copying source so that we don't need to re-download as much # and so that source changes don't invalidate our downloaded layer RUN go mod download diff --git a/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml b/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml index 5ee332657..92a732d17 100644 --- a/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml +++ b/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml @@ -50,6 +50,12 @@ spec: default: false description: Disables the deployment of Alertmanager. type: boolean + replicas: + default: 2 + description: Number of replicas/pods to deploy for Alertmanager. + format: int32 + minimum: 0 + type: integer webTLSConfig: description: Configure TLS options for the Alertmanager web server. properties: diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index e47334fa5..3ec3f3933 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-11-14T10:13:10Z" + createdAt: "2025-11-26T07:19:50Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" diff --git a/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml b/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml index 7139bec53..2de6fd70e 100644 --- a/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml +++ b/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml @@ -50,6 +50,12 @@ spec: default: false description: Disables the deployment of Alertmanager. type: boolean + replicas: + default: 2 + description: Number of replicas/pods to deploy for Alertmanager. + format: int32 + minimum: 0 + type: integer webTLSConfig: description: Configure TLS options for the Alertmanager web server. properties: diff --git a/docs/api.md b/docs/api.md index fad6179ef..502afbb0c 100644 --- a/docs/api.md +++ b/docs/api.md @@ -215,6 +215,17 @@ Define Alertmanager config Default: false
false + + replicas + integer + + Number of replicas/pods to deploy for Alertmanager.
+
+ Format: int32
+ Default: 2
+ Minimum: 0
+ + false webTLSConfig object diff --git a/go.mod b/go.mod index 434c071c7..523c29a18 100644 --- a/go.mod +++ b/go.mod @@ -11,11 +11,19 @@ require ( github.com/open-telemetry/opentelemetry-operator v0.135.0 github.com/openshift/api v3.9.0+incompatible // PINNED: newer versions remove console/v1alpha1 API needed for OpenShift <4.17 compatibility github.com/operator-framework/api v0.34.0 + github.com/perses/perses v0.51.1 + github.com/perses/plugins/prometheus v0.52.1 + github.com/perses/plugins/table v0.0.0-20250709083656-34e29fed0083 + github.com/perses/plugins/timeserieschart v0.9.1 github.com/pkg/errors v0.9.1 github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2 github.com/prometheus/common v0.67.1 github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1 github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 + github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6 + github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 + github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df + github.com/stretchr/testify v1.11.1 go.uber.org/zap v1.27.0 golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 golang.org/x/mod v0.29.0 @@ -31,17 +39,9 @@ require ( sigs.k8s.io/controller-runtime v0.22.3 ) -replace github.com/openshift/api => github.com/openshift/api v0.0.0-20240404200104-96ed2d49b255 - -require ( - github.com/perses/perses v0.51.1 - github.com/perses/plugins/prometheus v0.52.1 - github.com/perses/plugins/table v0.0.0-20250709083656-34e29fed0083 - github.com/perses/plugins/timeserieschart v0.9.1 - github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6 - github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 - github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df - github.com/stretchr/testify v1.11.1 +replace ( + github.com/openshift/api => github.com/openshift/api v0.0.0-20240404200104-96ed2d49b255 + github.com/rhobs/observability-operator/pkg/apis => ./pkg/apis ) require ( diff --git a/go.sum b/go.sum index ae6737aed..c67699099 100644 --- a/go.sum +++ b/go.sum @@ -438,8 +438,6 @@ github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 h1:4 github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1/go.mod h1:l986kUrEUzfrbYEsqRvSAJThNbF4SUKkM5eZR+L3uf0= github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1 h1:xHFPnhTfQ1JNtHfqveI3MRdk7FREgkY3s2pTjoFL3Bw= github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1/go.mod h1:a2jQ6UDlAqTT573SpRc548JwIK1rvMh6RKvSI/749HA= -github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6 h1:f+J6l48RMDomN9YrDxd0cZVo7+L+a/TCzH6ycat5tMI= -github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6/go.mod h1:bNP815/mCv8ydNQ2Q3a9gqlx9b2XouWa6hws9vthq78= github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 h1:IxpxGJ/fbnRkZZYFm17NMedFyEuOKuf4TS23g+6jMvU= github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4/go.mod h1:Mxs4sXawWiV50qokKG1UZCV9NJEdJWsALY71/z38NKA= github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df h1:rwtqpvrowEF6EjSiO3PPcqC6s2jo7NU3VsGU6yrpxTg= diff --git a/pkg/apis/monitoring/v1alpha1/types.go b/pkg/apis/monitoring/v1alpha1/types.go index ce7a1f303..0133faa3b 100644 --- a/pkg/apis/monitoring/v1alpha1/types.go +++ b/pkg/apis/monitoring/v1alpha1/types.go @@ -243,6 +243,13 @@ type AlertmanagerConfig struct { // +optional // +kubebuilder:default=false Disabled bool `json:"disabled,omitempty"` + + // Number of replicas/pods to deploy for Alertmanager. + // +optional + // +kubebuilder:default=2 + // +kubebuilder:validation:Minimum=0 + Replicas *int32 `json:"replicas,omitempty"` + // Configure TLS options for the Alertmanager web server. // +optional WebTLSConfig *WebTLSConfig `json:"webTLSConfig,omitempty"` diff --git a/pkg/apis/monitoring/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/monitoring/v1alpha1/zz_generated.deepcopy.go index 68bb48e40..04bfc0e67 100644 --- a/pkg/apis/monitoring/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/monitoring/v1alpha1/zz_generated.deepcopy.go @@ -30,6 +30,11 @@ import ( // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AlertmanagerConfig) DeepCopyInto(out *AlertmanagerConfig) { *out = *in + if in.Replicas != nil { + in, out := &in.Replicas, &out.Replicas + *out = new(int32) + **out = **in + } if in.WebTLSConfig != nil { in, out := &in.WebTLSConfig, &out.WebTLSConfig *out = new(WebTLSConfig) diff --git a/pkg/controllers/monitoring/monitoring-stack/alertmanager.go b/pkg/controllers/monitoring/monitoring-stack/alertmanager.go index dd8d58f7d..3f512e468 100644 --- a/pkg/controllers/monitoring/monitoring-stack/alertmanager.go +++ b/pkg/controllers/monitoring/monitoring-stack/alertmanager.go @@ -21,7 +21,6 @@ func newAlertmanager( if resourceSelector == nil { resourceSelector = &metav1.LabelSelector{} } - replicas := int32(2) am := &monv1.Alertmanager{ TypeMeta: metav1.TypeMeta{ @@ -36,7 +35,7 @@ func newAlertmanager( PodMetadata: &monv1.EmbeddedObjectMetadata{ Labels: podLabels("alertmanager", ms.Name), }, - Replicas: &replicas, + Replicas: ms.Spec.AlertmanagerConfig.Replicas, ServiceAccountName: rbacResourceName, AlertmanagerConfigSelector: resourceSelector, NodeSelector: ms.Spec.NodeSelector, diff --git a/pkg/controllers/monitoring/monitoring-stack/components.go b/pkg/controllers/monitoring/monitoring-stack/components.go index 97cee0c3c..199af73cd 100644 --- a/pkg/controllers/monitoring/monitoring-stack/components.go +++ b/pkg/controllers/monitoring/monitoring-stack/components.go @@ -82,7 +82,7 @@ func stackComponentReconcilers( reconciler.NewOptionalUpdater(newAlertmanager(ms, alertmanagerName, alertmanager), ms, deployAlertmanager), reconciler.NewOptionalUpdater(newAlertmanagerService(ms), ms, deployAlertmanager), - reconciler.NewOptionalUpdater(newAlertmanagerPDB(ms), ms, deployAlertmanager), + reconciler.NewOptionalUpdater(newAlertmanagerPDB(ms), ms, deployAlertmanager && *ms.Spec.AlertmanagerConfig.Replicas > 1), } } diff --git a/test/Dockerfile b/test/Dockerfile index 52ac20eec..06bd23c2a 100644 --- a/test/Dockerfile +++ b/test/Dockerfile @@ -6,6 +6,7 @@ WORKDIR ${PKG} COPY go.mod go.mod COPY go.sum go.sum +COPY pkg/apis/ pkg/apis/ # # cache deps before building and copying source so that we don't need to re-download as much # and so that source changes don't invalidate our downloaded layer diff --git a/test/e2e/framework/monitoring_stack.go b/test/e2e/framework/monitoring_stack.go index a05992987..b61eb474d 100644 --- a/test/e2e/framework/monitoring_stack.go +++ b/test/e2e/framework/monitoring_stack.go @@ -32,6 +32,12 @@ func SetAlertmanagerDisabled(disabled bool) MonitoringStackConfig { } } +func SetAlertmanagerReplicas(replicas int32) MonitoringStackConfig { + return func(ms *stack.MonitoringStack) { + ms.Spec.AlertmanagerConfig.Replicas = &replicas + } +} + // UpdateWithRetry updates monitoringstack with retry func (f *Framework) UpdateWithRetry(t *testing.T, ms *stack.MonitoringStack, fns ...MonitoringStackConfig) error { err := retry.RetryOnConflict(retry.DefaultRetry, func() error { diff --git a/test/e2e/monitoring_stack_controller_test.go b/test/e2e/monitoring_stack_controller_test.go index 521f84ef4..2a756acff 100644 --- a/test/e2e/monitoring_stack_controller_test.go +++ b/test/e2e/monitoring_stack_controller_test.go @@ -104,11 +104,17 @@ func TestMonitoringStackController(t *testing.T) { assertAlertmanagersAreResilientToDisruption(t, pods) }, }, { - name: "invalid Prometheus replicas numbers", + name: "invalid number of replicas for Prometheus", scenario: validatePrometheusConfig, }, { name: "Alertmanager disabled", scenario: assertAlertmanagerNotDeployed, + }, { + name: "single Alertmanager has no PDB", + scenario: singleAlertmanagerReplicaHasNoPDB, + }, { + name: "invalid number of replicas for Alertmanagers", + scenario: validateAlertmanagerConfig, }, { name: "Alertmanager deployed and removed", scenario: assertAlertmanagerDeployedAndRemoved, @@ -374,11 +380,16 @@ func validatePrometheusConfig(t *testing.T) { } err := f.K8sClient.Create(context.Background(), ms) assert.ErrorContains(t, err, `invalid: spec.prometheusConfig.replicas`) +} - validN := int32(1) - ms.Spec.PrometheusConfig.Replicas = &validN - err = f.K8sClient.Create(context.Background(), ms) - assert.NilError(t, err, `1 is a valid replica count`) +func validateAlertmanagerConfig(t *testing.T) { + invalidN := int32(-1) + ms := newMonitoringStack(t, "invalid-alertmanager-config") + ms.Spec.AlertmanagerConfig = stack.AlertmanagerConfig{ + Replicas: &invalidN, + } + err := f.K8sClient.Create(context.Background(), ms) + assert.ErrorContains(t, err, `invalid: spec.alertmanagerConfig.replicas`) } func singlePrometheusReplicaHasNoPDB(t *testing.T) { @@ -404,6 +415,30 @@ func singlePrometheusReplicaHasNoPDB(t *testing.T) { f.AssertResourceAbsent(pdbName, ms.Namespace, &pdb)(t) } +func singleAlertmanagerReplicaHasNoPDB(t *testing.T) { + // asserts that no Alertmanager pdb is created for stacks with replicas set + // to 1 (otherwise upgrades are impossible). + + // Initially, ensure that pdb is created by default for the default stack. + // This should later be removed when replicas is set to 1. + ms := newMonitoringStack(t, "single-replica") + + err := f.K8sClient.Create(context.Background(), ms) + assert.NilError(t, err, "failed to create a monitoring stack") + + // ensure pdb is created for default stack. + pdb := policyv1.PodDisruptionBudget{} + pdbName := ms.Name + "-alertmanager" + f.AssertResourceEventuallyExists(pdbName, ms.Namespace, &pdb)(t) + + // Update replica count to 1 + err = f.UpdateWithRetry(t, ms, framework.SetAlertmanagerReplicas(1)) + assert.NilError(t, err, "failed to update monitoring stack") + + // ensure there is no pdb + f.AssertResourceAbsent(pdbName, ms.Namespace, &pdb)(t) +} + func assertPrometheusScrapesItselfAndWebUI(t *testing.T) { ms := newMonitoringStack(t, "self-scrape") err := f.K8sClient.Create(context.Background(), ms) From 8627d46e67bf24ae7f86159f6ee4a174a05c895e Mon Sep 17 00:00:00 2001 From: Gabriel Bernal Date: Thu, 27 Nov 2025 11:41:04 +0100 Subject: [PATCH 16/32] fix: set correct references for perses CR for correct cleanup (#942) Signed-off-by: Gabriel Bernal --- pkg/controllers/uiplugin/components.go | 2 +- pkg/controllers/uiplugin/controller.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/controllers/uiplugin/components.go b/pkg/controllers/uiplugin/components.go index 0d6625df4..e46aac4df 100644 --- a/pkg/controllers/uiplugin/components.go +++ b/pkg/controllers/uiplugin/components.go @@ -139,7 +139,7 @@ func pluginComponentReconcilers(plugin *uiv1alpha1.UIPlugin, pluginInfo UIPlugin reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, persesServiceAccountName, "system:auth-delegator", persesServiceAccountName+"-system-auth-delegator"), plugin, persesEnabled), reconciler.NewOptionalUpdater(newPersesClusterRole(), plugin, persesEnabled), reconciler.NewOptionalUpdater(newClusterRoleBinding(namespace, persesServiceAccountName, "perses-cr", persesServiceAccountName+"-perses-cr"), plugin, persesEnabled), - reconciler.NewOptionalUnmanagedUpdater(newPerses(namespace, pluginInfo.PersesImage), plugin, persesEnabled), + reconciler.NewOptionalUpdater(newPerses(namespace, pluginInfo.PersesImage), plugin, persesEnabled), reconciler.NewOptionalUpdater(newAcceleratorsDatasource(namespace), plugin, persesEnabled), reconciler.NewOptionalUpdater(newAcceleratorsDashboard(namespace), plugin, persesEnabled), ) diff --git a/pkg/controllers/uiplugin/controller.go b/pkg/controllers/uiplugin/controller.go index 04c0eb074..e7ade3227 100644 --- a/pkg/controllers/uiplugin/controller.go +++ b/pkg/controllers/uiplugin/controller.go @@ -142,6 +142,7 @@ func RegisterWithManager(mgr ctrl.Manager, opts Options) error { Owns(&v1.ServiceAccount{}, generationChanged). Owns(&rbacv1.Role{}, generationChanged). Owns(&rbacv1.RoleBinding{}, generationChanged). + Owns(&persesv1alpha1.Perses{}, generationChanged). Owns(&persesv1alpha1.PersesDashboard{}, generationChanged). Owns(&persesv1alpha1.PersesDatasource{}, generationChanged) From 46ccb5496ab8d51131fff454d95816d9b54b6c4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:58:15 +0000 Subject: [PATCH 17/32] build(deps): bump actions/checkout from 5 to 6 (#939) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/olm-stable.yaml | 2 +- .github/workflows/package-operator-stable.yaml | 2 +- .github/workflows/pr-checks.yaml | 14 +++++++------- .github/workflows/release.yaml | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/olm-stable.yaml b/.github/workflows/olm-stable.yaml index 715633640..90e6f53c8 100644 --- a/.github/workflows/olm-stable.yaml +++ b/.github/workflows/olm-stable.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest environment: quay steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: fetch-depth: 0 diff --git a/.github/workflows/package-operator-stable.yaml b/.github/workflows/package-operator-stable.yaml index b73b73309..008911e09 100644 --- a/.github/workflows/package-operator-stable.yaml +++ b/.github/workflows/package-operator-stable.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest environment: quay steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: fetch-depth: 0 diff --git a/.github/workflows/pr-checks.yaml b/.github/workflows/pr-checks.yaml index f5b7a778e..da7b53f88 100644 --- a/.github/workflows/pr-checks.yaml +++ b/.github/workflows/pr-checks.yaml @@ -8,7 +8,7 @@ jobs: name: Lint the commit messages runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: fetch-depth: 0 - uses: wagoid/commitlint-github-action@v6 @@ -17,14 +17,14 @@ jobs: name: Lint Github Action runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: reviewdog/action-actionlint@v1 lint: name: Lint code runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: @@ -50,7 +50,7 @@ jobs: name: Verify generated code runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: @@ -63,7 +63,7 @@ jobs: runs-on: ubuntu-latest name: Validate tools cache steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: @@ -79,7 +79,7 @@ jobs: name: Build bundle image runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Setup Go environment uses: actions/setup-go@v6 @@ -98,7 +98,7 @@ jobs: name: Run end-to-end tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: e2e tests through OLM uses: ./.github/e2e-tests-olm diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 792ea5215..a8e39493f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -8,7 +8,7 @@ jobs: e2e-tests-olm: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: e2e tests through OLM uses: ./.github/e2e-tests-olm @@ -20,7 +20,7 @@ jobs: needs: - e2e-tests-olm steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: fetch-depth: 0 @@ -83,7 +83,7 @@ jobs: if: "startsWith(github.event.head_commit.message, 'chore(release):')" steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 token: ${{ secrets.REPOSITORY_PUSH_TOKEN }} @@ -130,7 +130,7 @@ jobs: environment: quay steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 token: ${{ secrets.REPOSITORY_PUSH_TOKEN }} From 340137c0e892d33205bd095e02ded20ba7a9c40c Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Fri, 28 Nov 2025 10:41:19 +0100 Subject: [PATCH 18/32] feat: enable watch-referenced-objects-in-all-namespaces in Prometheus operator (#945) This commit enables the `--watch-referenced-objects-in-all-namespaces` flag in the Prometheus operator deployment to ensure that the operator reconciles configurations when a secret/configmap referenced by a custom resource gets an update. Upstream issue: https://github.com/prometheus-operator/prometheus-operator/issue/6018 Signed-off-by: Simon Pasquier --- .../observability-operator.clusterserviceversion.yaml | 3 ++- deploy/dependencies/kustomization.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index 3ec3f3933..dafd42443 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-11-26T07:19:50Z" + createdAt: "2025-11-27T18:47:09Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -864,6 +864,7 @@ spec: - --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 + - --watch-referenced-objects-in-all-namespaces=true env: - name: GOGC value: "30" diff --git a/deploy/dependencies/kustomization.yaml b/deploy/dependencies/kustomization.yaml index c98995453..34c13e228 100644 --- a/deploy/dependencies/kustomization.yaml +++ b/deploy/dependencies/kustomization.yaml @@ -76,6 +76,7 @@ patches: - --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 + - --watch-referenced-objects-in-all-namespaces=true resources: requests: cpu: 5m From 6ec4de7a6172ae5827261aa6080630413a1ac1be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 Nov 2025 11:29:40 +0000 Subject: [PATCH 19/32] build(deps): bump k8s.io/apiserver from 0.34.0 to 0.34.1 (#872) Bumps [k8s.io/apiserver](https://github.com/kubernetes/apiserver) from 0.34.0 to 0.34.1. - [Commits](https://github.com/kubernetes/apiserver/compare/v0.34.0...v0.34.1) --- updated-dependencies: - dependency-name: k8s.io/apiserver dependency-version: 0.34.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 523c29a18..5ff5681c4 100644 --- a/go.mod +++ b/go.mod @@ -29,12 +29,12 @@ require ( golang.org/x/mod v0.29.0 gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.5.2 - k8s.io/api v0.34.1 + k8s.io/api v0.34.2 k8s.io/apiextensions-apiserver v0.34.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 - k8s.io/client-go v0.34.1 - k8s.io/component-base v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 + k8s.io/client-go v0.34.2 + k8s.io/component-base v0.34.2 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 sigs.k8s.io/controller-runtime v0.22.3 ) diff --git a/go.sum b/go.sum index c67699099..607a8e1e3 100644 --- a/go.sum +++ b/go.sum @@ -651,18 +651,18 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= From b13d7b2af662707766a3a87d8c6941b4d0360678 Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Tue, 2 Dec 2025 11:00:40 +0100 Subject: [PATCH 20/32] feat: support size-based retention for MonitoringStack (#946) This commit exposes a new `retentionSize` field in the MonitoringStack CRD which mimics the API already present in the Prometheus CRD. Closes #890 Signed-off-by: Simon Pasquier --- .../monitoring.rhobs_monitoringstacks.yaml | 17 ++++- ...bility-operator.clusterserviceversion.yaml | 2 +- .../monitoring.rhobs_monitoringstacks.yaml | 17 ++++- docs/api.md | 19 +++++- pkg/apis/monitoring/v1alpha1/types.go | 18 ++++- .../monitoring/monitoring-stack/components.go | 1 + test/e2e/monitoring_stack_controller_test.go | 65 +++++++++++++------ 7 files changed, 109 insertions(+), 30 deletions(-) diff --git a/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml b/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml index 92a732d17..a8746abb2 100644 --- a/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml +++ b/bundle/manifests/monitoring.rhobs_monitoringstacks.yaml @@ -1715,10 +1715,23 @@ spec: retention: default: 120h description: |- - Time duration to retain data for. Default is '120h', - and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). + Time duration to retain data for. Default is '120h', and the value must + match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds + seconds minutes hours days weeks years). + + When both retention and retentionSize are defined, whichever triggers + first will be applied. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string + retentionSize: + description: |- + retentionSize defines the maximum number of bytes used by the Prometheus + data. By default the size is unlimited. + + When both retention and retentionSize are defined, whichever triggers + first will be applied. + pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$ + type: string tolerations: description: Define tolerations for Monitoring Stack Pods. items: diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index dafd42443..8580a154c 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-11-27T18:47:09Z" + createdAt: "2025-11-28T13:17:19Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" diff --git a/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml b/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml index 2de6fd70e..3a199fe44 100644 --- a/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml +++ b/deploy/crds/common/monitoring.rhobs_monitoringstacks.yaml @@ -1715,10 +1715,23 @@ spec: retention: default: 120h description: |- - Time duration to retain data for. Default is '120h', - and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). + Time duration to retain data for. Default is '120h', and the value must + match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds + seconds minutes hours days weeks years). + + When both retention and retentionSize are defined, whichever triggers + first will be applied. pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string + retentionSize: + description: |- + retentionSize defines the maximum number of bytes used by the Prometheus + data. By default the size is unlimited. + + When both retention and retentionSize are defined, whichever triggers + first will be applied. + pattern: (^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$ + type: string tolerations: description: Define tolerations for Monitoring Stack Pods. items: diff --git a/docs/api.md b/docs/api.md index 502afbb0c..977ef0ca4 100644 --- a/docs/api.md +++ b/docs/api.md @@ -173,12 +173,27 @@ To disable service discovery, set to null. E.g. resourceSelector:.
retention string - Time duration to retain data for. Default is '120h', -and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years).
+ Time duration to retain data for. Default is '120h', and the value must +match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds +seconds minutes hours days weeks years). + +When both retention and retentionSize are defined, whichever triggers +first will be applied.

Default: 120h
false + + retentionSize + string + + retentionSize defines the maximum number of bytes used by the Prometheus +data. By default the size is unlimited. + +When both retention and retentionSize are defined, whichever triggers +first will be applied.
+ + false tolerations []object diff --git a/pkg/apis/monitoring/v1alpha1/types.go b/pkg/apis/monitoring/v1alpha1/types.go index 0133faa3b..ebb06d4f6 100644 --- a/pkg/apis/monitoring/v1alpha1/types.go +++ b/pkg/apis/monitoring/v1alpha1/types.go @@ -103,11 +103,25 @@ type MonitoringStackSpec struct { // +optional CreateClusterRoleBindings ClusterRoleBindingPolicy `json:"createClusterRoleBindings,omitempty"` - // Time duration to retain data for. Default is '120h', - // and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). + // Time duration to retain data for. Default is '120h', and the value must + // match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds + // seconds minutes hours days weeks years). + // + // When both retention and retentionSize are defined, whichever triggers + // first will be applied. + // // +kubebuilder:default="120h" Retention monv1.Duration `json:"retention,omitempty"` + // retentionSize defines the maximum number of bytes used by the Prometheus + // data. By default the size is unlimited. + // + // When both retention and retentionSize are defined, whichever triggers + // first will be applied. + // + // +optional + RetentionSize monv1.ByteSize `json:"retentionSize,omitempty"` + // Define resources requests and limits for Monitoring Stack Pods. // +optional // +kubebuilder:default={requests:{cpu: "100m", memory: "256Mi"}, limits:{memory: "512Mi", cpu: "500m"}} diff --git a/pkg/controllers/monitoring/monitoring-stack/components.go b/pkg/controllers/monitoring/monitoring-stack/components.go index 199af73cd..e33c54f15 100644 --- a/pkg/controllers/monitoring/monitoring-stack/components.go +++ b/pkg/controllers/monitoring/monitoring-stack/components.go @@ -210,6 +210,7 @@ func newPrometheus( }(), }, Retention: ms.Spec.Retention, + RetentionSize: ms.Spec.RetentionSize, RuleSelector: prometheusSelector, RuleNamespaceSelector: ms.Spec.NamespaceSelector, Thanos: &monv1.ThanosSpec{ diff --git a/test/e2e/monitoring_stack_controller_test.go b/test/e2e/monitoring_stack_controller_test.go index 2a756acff..c41b1e507 100644 --- a/test/e2e/monitoring_stack_controller_test.go +++ b/test/e2e/monitoring_stack_controller_test.go @@ -293,7 +293,6 @@ func reconcileRevertsManualChanges(t *testing.T) { f.GetResourceWithRetry(t, ms.Name, ms.Namespace, &generated) // update the prometheus created by monitoring-stack controller - modified := generated.DeepCopy() modified.Spec.ServiceMonitorSelector = &metav1.LabelSelector{ MatchLabels: map[string]string{ @@ -348,28 +347,52 @@ func validateStackLogLevel(t *testing.T) { } func validateStackRetention(t *testing.T) { - invalidRetention := []monv1.Duration{ - "100days", - "100ducks", - "100 days", - "100 hours", - "100 h", - "100 s", - "100d ", - } - - ms := newMonitoringStack(t, "invalid-retention") - for _, v := range invalidRetention { - ms.Spec.Retention = v - err := f.K8sClient.Create(context.Background(), ms) - assert.ErrorContains(t, err, `spec.retention: Invalid value`) - } + t.Run("time-based", func(t *testing.T) { + invalidRetention := []monv1.Duration{ + "100days", + "100ducks", + "100 days", + "100 hours", + "100 h", + "100 s", + "100d ", + } - validMS := newMonitoringStack(t, "valid-retention") - validMS.Spec.Retention = "100h" + ms := newMonitoringStack(t, "invalid-retention") + for _, v := range invalidRetention { + ms.Spec.Retention = v + err := f.K8sClient.Create(context.Background(), ms) + assert.ErrorContains(t, err, `spec.retention: Invalid value`) + } - err := f.K8sClient.Create(context.Background(), validMS) - assert.NilError(t, err, `100h is a valid retention period`) + validMS := newMonitoringStack(t, "valid-retention") + validMS.Spec.Retention = "100h" + + err := f.K8sClient.Create(context.Background(), validMS) + assert.NilError(t, err, `100h is a valid retention period`) + }) + + t.Run("size-based", func(t *testing.T) { + invalidRetention := []monv1.ByteSize{ + "1gb", + "1foo", + "1 GB", + "1GB ", + } + + ms := newMonitoringStack(t, "invalid-retention-size") + for _, v := range invalidRetention { + ms.Spec.RetentionSize = v + err := f.K8sClient.Create(context.Background(), ms) + assert.ErrorContains(t, err, `spec.retentionSize: Invalid value`) + } + + validMS := newMonitoringStack(t, "valid-retention-size") + validMS.Spec.RetentionSize = "1GB" + + err := f.K8sClient.Create(context.Background(), validMS) + assert.NilError(t, err) + }) } func validatePrometheusConfig(t *testing.T) { From 5ef42381f8516cd24169b06861f19f003af0016e Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Tue, 2 Dec 2025 14:36:06 +0100 Subject: [PATCH 21/32] fix: disable unmanaged Prometheus configuration (#944) This commit adds the `--disable-unmanaged-prometheus-configuration=true` argument to the Prometheus operator deployment. Without this change and in case of a null resource selector, the Prometheus pods fail to become ready because the Prometheus configuration is left empty while the Thanos sidecar expects to find external labels. The "unmanaged configuration" mode is an old upstream "hack" which allowed users to provide their own custom Prometheus configuration for cases where it couldn't be implemented with `ServiceMonitor`. The new approach is to use the `ScrapeConfig` CRD. When a `MonitoringStack` resource is created with a null resource selector, the Prometheus configuration will contain no scrape configuration and no rules. One possible use case is to deploy a Prometheus which only ingests metrics via remote-write and/or OTLP. Closes #932 Signed-off-by: Simon Pasquier --- .../observability-operator.clusterserviceversion.yaml | 3 ++- deploy/dependencies/kustomization.yaml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index 8580a154c..0198ced83 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-11-28T13:17:19Z" + createdAt: "2025-12-02T10:45:37Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -865,6 +865,7 @@ spec: - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator - --watch-referenced-objects-in-all-namespaces=true + - --disable-unmanaged-prometheus-configuration=true env: - name: GOGC value: "30" diff --git a/deploy/dependencies/kustomization.yaml b/deploy/dependencies/kustomization.yaml index 34c13e228..5edff989c 100644 --- a/deploy/dependencies/kustomization.yaml +++ b/deploy/dependencies/kustomization.yaml @@ -77,6 +77,7 @@ patches: - --alertmanager-instance-selector=app.kubernetes.io/managed-by=observability-operator - --thanos-ruler-instance-selector=app.kubernetes.io/managed-by=observability-operator - --watch-referenced-objects-in-all-namespaces=true + - --disable-unmanaged-prometheus-configuration=true resources: requests: cpu: 5m From d63861810de686fba5f26dbec830f71c308133f4 Mon Sep 17 00:00:00 2001 From: Gabriel Bernal Date: Tue, 2 Dec 2025 15:58:02 +0100 Subject: [PATCH 22/32] fix: [COO-1325] fix logging model field documentation (#938) Signed-off-by: Gabriel Bernal --- bundle/manifests/observability.openshift.io_uiplugins.yaml | 2 +- deploy/crds/common/observability.openshift.io_uiplugins.yaml | 2 +- docs/api.md | 2 +- pkg/apis/uiplugin/v1alpha1/types.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bundle/manifests/observability.openshift.io_uiplugins.yaml b/bundle/manifests/observability.openshift.io_uiplugins.yaml index b5958bb5d..556b3f641 100644 --- a/bundle/manifests/observability.openshift.io_uiplugins.yaml +++ b/bundle/manifests/observability.openshift.io_uiplugins.yaml @@ -132,7 +132,7 @@ spec: description: |- Schema is the schema to use for logs querying and display. - Defatults to "viaq" if not specified, "select" is used to allow users to select the schema from the UI. + Defaults to "viaq" if not specified. Use "otel" for OpenTelemetry schema, or "select" to allow users to choose the schema from the UI. enum: - viaq - otel diff --git a/deploy/crds/common/observability.openshift.io_uiplugins.yaml b/deploy/crds/common/observability.openshift.io_uiplugins.yaml index 991c82099..6fbc21b45 100644 --- a/deploy/crds/common/observability.openshift.io_uiplugins.yaml +++ b/deploy/crds/common/observability.openshift.io_uiplugins.yaml @@ -132,7 +132,7 @@ spec: description: |- Schema is the schema to use for logs querying and display. - Defatults to "viaq" if not specified, "select" is used to allow users to select the schema from the UI. + Defaults to "viaq" if not specified. Use "otel" for OpenTelemetry schema, or "select" to allow users to choose the schema from the UI. enum: - viaq - otel diff --git a/docs/api.md b/docs/api.md index 977ef0ca4..754fb2c2a 100644 --- a/docs/api.md +++ b/docs/api.md @@ -5373,7 +5373,7 @@ It always references a LokiStack in the "openshift-logging" namespace.
Schema is the schema to use for logs querying and display. -Defatults to "viaq" if not specified, "select" is used to allow users to select the schema from the UI.
+Defaults to "viaq" if not specified. Use "otel" for OpenTelemetry schema, or "select" to allow users to choose the schema from the UI.

Enum: viaq, otel, select
diff --git a/pkg/apis/uiplugin/v1alpha1/types.go b/pkg/apis/uiplugin/v1alpha1/types.go index 83619b2b6..8d52603b3 100644 --- a/pkg/apis/uiplugin/v1alpha1/types.go +++ b/pkg/apis/uiplugin/v1alpha1/types.go @@ -122,7 +122,7 @@ type LoggingConfig struct { // Schema is the schema to use for logs querying and display. // - // Defatults to "viaq" if not specified, "select" is used to allow users to select the schema from the UI. + // Defaults to "viaq" if not specified. Use "otel" for OpenTelemetry schema, or "select" to allow users to choose the schema from the UI. // // +operator-sdk:csv:customresourcedefinitions:type=spec,displayName="OCP Console Logs Schema",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:ocpConsoleLogsSchema"} // +kubebuilder:validation:Optional From e9a673c2d49a816c99dcbcad67716c9ecc16765c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:40:01 +0000 Subject: [PATCH 23/32] build(deps): bump k8s.io/apiextensions-apiserver from 0.34.1 to 0.34.2 (#949) Bumps [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) from 0.34.1 to 0.34.2. - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.34.1...v0.34.2) --- updated-dependencies: - dependency-name: k8s.io/apiextensions-apiserver dependency-version: 0.34.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5ff5681c4..218534486 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.5.2 k8s.io/api v0.34.2 - k8s.io/apiextensions-apiserver v0.34.1 + k8s.io/apiextensions-apiserver v0.34.2 k8s.io/apimachinery v0.34.2 k8s.io/apiserver v0.34.2 k8s.io/client-go v0.34.2 diff --git a/go.sum b/go.sum index 607a8e1e3..9bb69a5be 100644 --- a/go.sum +++ b/go.sum @@ -653,8 +653,8 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= From 828a2d89c4d749bbacce95d25486f4cb10fb99cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 16:56:29 +0000 Subject: [PATCH 24/32] build(deps): bump go.uber.org/zap from 1.27.0 to 1.27.1 (#947) Bumps [go.uber.org/zap](https://github.com/uber-go/zap) from 1.27.0 to 1.27.1. - [Release notes](https://github.com/uber-go/zap/releases) - [Changelog](https://github.com/uber-go/zap/blob/master/CHANGELOG.md) - [Commits](https://github.com/uber-go/zap/compare/v1.27.0...v1.27.1) --- updated-dependencies: - dependency-name: go.uber.org/zap dependency-version: 1.27.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 218534486..fa6318188 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df github.com/stretchr/testify v1.11.1 - go.uber.org/zap v1.27.0 + go.uber.org/zap v1.27.1 golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 golang.org/x/mod v0.29.0 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index 9bb69a5be..94be5b63f 100644 --- a/go.sum +++ b/go.sum @@ -551,8 +551,8 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= From fd5645c2d23e049a5f7e414a56eec1563b934e80 Mon Sep 17 00:00:00 2001 From: Ishwar Kanse Date: Wed, 3 Dec 2025 20:28:47 +0530 Subject: [PATCH 25/32] fix: set logger warning and image ref (#924) --- test/e2e/main_test.go | 10 ++++++++++ test/e2e/traces_minio.yaml | 2 +- test/e2e/traces_tempo_readiness.yaml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/test/e2e/main_test.go b/test/e2e/main_test.go index 48d1d428d..e3c80f5c8 100644 --- a/test/e2e/main_test.go +++ b/test/e2e/main_test.go @@ -10,10 +10,13 @@ import ( configv1 "github.com/openshift/api/config/v1" olmv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1" + "go.uber.org/zap/zapcore" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" + "sigs.k8s.io/controller-runtime/pkg/log/zap" "github.com/rhobs/observability-operator/pkg/operator" "github.com/rhobs/observability-operator/test/e2e/framework" @@ -33,6 +36,13 @@ var ( func TestMain(m *testing.M) { flag.Parse() + // Setup controller-runtime logger to avoid warning messages + opts := zap.Options{ + Development: true, + TimeEncoder: zapcore.RFC3339TimeEncoder, + } + ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + // Deferred calls are not executed on os.Exit from TestMain. // As a workaround, we call another function in which we can add deferred calls. // http://blog.englund.nu/golang,/testing/2017/03/12/using-defer-in-testmain.html diff --git a/test/e2e/traces_minio.yaml b/test/e2e/traces_minio.yaml index 5e3150bd7..cb74eacee 100644 --- a/test/e2e/traces_minio.yaml +++ b/test/e2e/traces_minio.yaml @@ -45,7 +45,7 @@ spec: value: tempo - name: MINIO_SECRET_KEY value: supersecret - image: minio/minio + image: quay.io/minio/minio:RELEASE.2024-10-02T17-50-41Z name: minio ports: - containerPort: 9000 diff --git a/test/e2e/traces_tempo_readiness.yaml b/test/e2e/traces_tempo_readiness.yaml index af3e6b09e..b46a8a60f 100644 --- a/test/e2e/traces_tempo_readiness.yaml +++ b/test/e2e/traces_tempo_readiness.yaml @@ -16,7 +16,7 @@ spec: restartPolicy: Never containers: - name: readiness-checker - image: curlimages/curl:latest + image: ghcr.io/grafana/tempo-operator/test-utils:main command: - /bin/sh - -c From 9ac8ef9ff251dc5dcdcf538a89967724f2ee5714 Mon Sep 17 00:00:00 2001 From: lihongyan1 Date: Thu, 4 Dec 2025 17:28:30 +0800 Subject: [PATCH 26/32] test: automation to cover nill resource selector (#955) The auto covered upstream issue https://github.com/prometheus-operator/prometheus-operator/issue/6018 --- test/e2e/monitoring_stack_controller_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/e2e/monitoring_stack_controller_test.go b/test/e2e/monitoring_stack_controller_test.go index c41b1e507..cb41bf4dc 100644 --- a/test/e2e/monitoring_stack_controller_test.go +++ b/test/e2e/monitoring_stack_controller_test.go @@ -66,6 +66,9 @@ func TestMonitoringStackController(t *testing.T) { }, { name: "resource selector nil propagates to Prometheus", scenario: nilResrouceSelectorPropagatesToPrometheus, + }, { + name: "prometheus with nil resource selector becomes ready", + scenario: nilResourceSelectorPrometheusBecomesReady, }, { name: "stack spec are reflected in Prometheus", scenario: reconcileStack, @@ -174,6 +177,21 @@ func nilResrouceSelectorPropagatesToPrometheus(t *testing.T) { } } +func nilResourceSelectorPrometheusBecomesReady(t *testing.T) { + ms := newMonitoringStack(t, "nil-selector-ready") + ms.Spec.ResourceSelector = nil + + err := f.K8sClient.Create(context.Background(), ms) + assert.NilError(t, err, "failed to create monitoring stack with nil resourceSelector") + + // Verify Prometheus CR is created + f.AssertResourceEventuallyExists(ms.Name, ms.Namespace, &monv1.Prometheus{})(t) + + // Verify Prometheus pods become ready despite nil resourceSelector + // covers upstream issue #932 + f.AssertStatefulsetReady("prometheus-"+ms.Name, ms.Namespace, framework.WithTimeout(5*time.Minute))(t) +} + func promConfigDefaultsAreApplied(t *testing.T) { tests := []struct { name string From 3c84569fd22bb05c30e811c090a9ed97fe48ef2e Mon Sep 17 00:00:00 2001 From: Daniele Rossi Date: Thu, 4 Dec 2025 12:04:32 +0100 Subject: [PATCH 27/32] COO-1384: fix(monitoringstack): correctly configure OTLP receiver (#943) * fix(monitoringstack): change how EnableOTLP is passed to Prometheus * chore: remove version inference --- .../monitoring/monitoring-stack/components.go | 7 +-- test/e2e/framework/assertions.go | 49 +++++++++++++++++++ test/e2e/monitoring_stack_controller_test.go | 19 +++++-- 3 files changed, 66 insertions(+), 9 deletions(-) diff --git a/pkg/controllers/monitoring/monitoring-stack/components.go b/pkg/controllers/monitoring/monitoring-stack/components.go index e33c54f15..8c03cb555 100644 --- a/pkg/controllers/monitoring/monitoring-stack/components.go +++ b/pkg/controllers/monitoring/monitoring-stack/components.go @@ -202,12 +202,7 @@ func newPrometheus( RemoteWrite: config.RemoteWrite, ExternalLabels: config.ExternalLabels, EnableRemoteWriteReceiver: config.EnableRemoteWriteReceiver, - EnableFeatures: func() []monv1.EnableFeature { - if config.EnableOtlpHttpReceiver != nil && *config.EnableOtlpHttpReceiver { - return []monv1.EnableFeature{"otlp-write-receiver"} - } - return []monv1.EnableFeature{} - }(), + EnableOTLPReceiver: config.EnableOtlpHttpReceiver, }, Retention: ms.Spec.Retention, RetentionSize: ms.Spec.RetentionSize, diff --git a/test/e2e/framework/assertions.go b/test/e2e/framework/assertions.go index 372d0a3b9..da2e8f3fe 100644 --- a/test/e2e/framework/assertions.go +++ b/test/e2e/framework/assertions.go @@ -159,6 +159,55 @@ func (f *Framework) AssertStatefulsetReady(name, namespace string, fns ...Option } } +// AssertStatefulSetContainerHasArg asserts that a specific container in a StatefulSet's +// Pod template contains the expected command-line argument. +func (f *Framework) AssertStatefulSetContainerHasArg(t *testing.T, name, namespace, containerName, expectedArg string, fns ...OptionFn) func(t *testing.T) { + option := AssertOption{ + PollInterval: 5 * time.Second, + WaitTimeout: DefaultTestTimeout, + } + for _, fn := range fns { + fn(&option) + } + + return func(t *testing.T) { + t.Helper() + statefulSet := &appsv1.StatefulSet{} + key := types.NamespacedName{Name: name, Namespace: namespace} + + if err := wait.PollUntilContextTimeout(context.Background(), option.PollInterval, option.WaitTimeout, true, func(ctx context.Context) (bool, error) { + + if err := f.K8sClient.Get(ctx, key, statefulSet); apierrors.IsNotFound(err) { + return false, nil + } + + var container *v1.Container + for i, c := range statefulSet.Spec.Template.Spec.Containers { + if c.Name == containerName { + container = &statefulSet.Spec.Template.Spec.Containers[i] + break + } + } + + if container == nil { + return false, fmt.Errorf("container %q not found in StatefulSet template", containerName) + } + + for _, arg := range container.Args { + if arg == expectedArg { + return true, nil + } + } + + t.Logf("StatefulSet %s container %q args are missing %q. Retrying...", name, containerName, expectedArg) + return false, nil + }); wait.Interrupted(err) { + t.Fatalf("StatefulSet %s failed to contain argument %q in container %q within timeout. Final args: %v", + name, expectedArg, containerName, statefulSet.Spec.Template.Spec.Containers[0].Args) + } + } +} + // AssertDeploymentReady asserts that a deployment has the desired number of pods running func (f *Framework) AssertDeploymentReady(name, namespace string, fns ...OptionFn) func(t *testing.T) { option := AssertOption{ diff --git a/test/e2e/monitoring_stack_controller_test.go b/test/e2e/monitoring_stack_controller_test.go index cb41bf4dc..717cb5f90 100644 --- a/test/e2e/monitoring_stack_controller_test.go +++ b/test/e2e/monitoring_stack_controller_test.go @@ -133,6 +133,9 @@ func TestMonitoringStackController(t *testing.T) { }, { name: "Prometheus stacks can scrape themselves behind TLS", scenario: assertPrometheusScrapesItselfTLS, + }, { + name: "Assert OTLP receiver flag is set when enabled in CR", + scenario: assertDefaultOTLPFlagIsSet, }} for _, tc := range ts { t.Run(tc.name, tc.scenario) @@ -1010,6 +1013,18 @@ func assertPrometheusScrapesItselfTLS(t *testing.T) { } } +func assertDefaultOTLPFlagIsSet(t *testing.T) { + ms := newMonitoringStack(t, "otlp-flag-test") + ms.Spec.PrometheusConfig = &stack.PrometheusConfig{ + EnableOtlpHttpReceiver: ptr.To(true), + } + + err := f.K8sClient.Create(context.Background(), ms) + assert.NilError(t, err, "failed to create a monitoring stack") + + f.AssertStatefulSetContainerHasArg(t, "prometheus-"+ms.Name, e2eTestNamespace, "prometheus", "--web.enable-otlp-receiver")(t) +} + // Update this json when a new Prometheus field is set by MonitoringStack const oboManagedFieldsJson = ` { @@ -1039,9 +1054,7 @@ const oboManagedFieldsJson = ` "f:probeNamespaceSelector": {}, "f:probeSelector": {}, "f:remoteWrite": {}, - "f:enableFeatures": { - "v:\"otlp-write-receiver\"": {} - }, + "f:enableOTLPReceiver": {}, "f:replicas": {}, "f:resources": {}, "f:retention": {}, From 02e37c9503b79bc5b7aa6e88a38b71a75cd13cea Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Thu, 4 Dec 2025 15:44:15 +0100 Subject: [PATCH 28/32] chore: bump p-o to v0.87.0 (#950) * chore: bump p-o to v0.87.0 Signed-off-by: Jan Fajerski * fix: use monv1.Scheme struct instead of strings Signed-off-by: Jan Fajerski --------- Signed-off-by: Jan Fajerski --- .../monitoring.rhobs_alertmanagerconfigs.yaml | 9 +- .../monitoring.rhobs_alertmanagers.yaml | 2 +- .../monitoring.rhobs_podmonitors.yaml | 34 +++- bundle/manifests/monitoring.rhobs_probes.yaml | 18 +- .../monitoring.rhobs_prometheusagents.yaml | 20 +- .../monitoring.rhobs_prometheuses.yaml | 31 ++- .../monitoring.rhobs_prometheusrules.yaml | 2 +- .../monitoring.rhobs_scrapeconfigs.yaml | 12 +- .../monitoring.rhobs_servicemonitors.yaml | 13 +- .../monitoring.rhobs_thanosrulers.yaml | 20 +- ...webhook_policy_v1_poddisruptionbudget.yaml | 2 +- ...operator-admission-webhook_v1_service.yaml | 2 +- .../obo-prometheus-operator_v1_service.yaml | 2 +- ...bility-operator.clusterserviceversion.yaml | 13 +- deploy/dependencies/kustomization.yaml | 38 ++-- go.mod | 25 +-- go.sum | 192 +++++++++--------- .../monitoring/monitoring-stack/components.go | 4 +- .../monitoring/thanos-querier/components.go | 4 +- pkg/controllers/operator/components.go | 2 +- pkg/controllers/uiplugin/health_analyzer.go | 2 +- 21 files changed, 246 insertions(+), 201 deletions(-) diff --git a/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml b/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml index 211db3627..f493c857f 100644 --- a/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml +++ b/bundle/manifests/monitoring.rhobs_alertmanagerconfigs.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -5297,6 +5297,11 @@ spec: message defines the notification message content. This is the main body text of the Pushover notification. type: string + monospace: + description: |- + monospace optional HTML/monospace formatting for the message, see https://pushover.net/api#html + html and monospace formatting are mutually exclusive. + type: boolean priority: description: |- priority defines the notification priority level. @@ -8051,7 +8056,7 @@ spec: x-kubernetes-map-type: atomic useFIPSSTSEndpoint: description: |- - useFIPSSTSEndpoint defines FIPS mode for AWS STS endpoint. + useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint. It requires Prometheus >= v2.54.0. type: boolean type: object diff --git a/bundle/manifests/monitoring.rhobs_alertmanagers.yaml b/bundle/manifests/monitoring.rhobs_alertmanagers.yaml index f83ea462e..095f61f51 100644 --- a/bundle/manifests/monitoring.rhobs_alertmanagers.yaml +++ b/bundle/manifests/monitoring.rhobs_alertmanagers.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: Experimental-SSA - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_podmonitors.yaml b/bundle/manifests/monitoring.rhobs_podmonitors.yaml index af3a2ef83..42b30877e 100644 --- a/bundle/manifests/monitoring.rhobs_podmonitors.yaml +++ b/bundle/manifests/monitoring.rhobs_podmonitors.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -793,11 +793,29 @@ spec: description: |- port defines the `Pod` port name which exposes the endpoint. + If the pod doesn't expose a port with the same name, it will result + in no targets being discovered. + + If a `Pod` has multiple `Port`s with the same name (which is not + recommended), one target instance per unique port number will be + generated. + It takes precedence over the `portNumber` and `targetPort` fields. type: string portNumber: - description: portNumber defines the `Pod` port number which - exposes the endpoint. + description: |- + portNumber defines the `Pod` port number which exposes the endpoint. + + The `Pod` must declare the specified `Port` in its spec or the + target will be dropped by Prometheus. + + This cannot be used to enable scraping of an undeclared port. + To scrape targets on a port which isn't exposed, you need to use + relabeling to override the `__address__` label (but beware of + duplicate targets if the `Pod` has other declared ports). + + In practice Prometheus will select targets for which the + matches the target's __meta_kubernetes_pod_container_port_number. format: int32 maximum: 65535 minimum: 1 @@ -942,16 +960,12 @@ spec: type: object type: array scheme: - description: |- - scheme defines the HTTP scheme to use for scraping. - - `http` and `https` are the expected values unless you rewrite the - `__scheme__` label via relabeling. - - If empty, Prometheus uses the default value `http`. + description: scheme defines the HTTP scheme to use for scraping. enum: - http - https + - HTTP + - HTTPS type: string scrapeTimeout: description: |- diff --git a/bundle/manifests/monitoring.rhobs_probes.yaml b/bundle/manifests/monitoring.rhobs_probes.yaml index da952c197..c0271b1b3 100644 --- a/bundle/manifests/monitoring.rhobs_probes.yaml +++ b/bundle/manifests/monitoring.rhobs_probes.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -757,16 +757,22 @@ spec: pattern: ^(http|https|socks5)://.+$ type: string scheme: - description: |- - scheme defines the HTTP scheme to use for scraping. - `http` and `https` are the expected values unless you rewrite the `__scheme__` label via relabeling. - If empty, Prometheus uses the default value `http`. + description: scheme defines the HTTP scheme to use when scraping + the prober. enum: - http - https + - HTTP + - HTTPS type: string url: - description: url defines the mandatory URL of the prober. + description: |- + url defines the address of the prober. + + Unlike what the name indicates, the value should be in the form of + `address:port` without any scheme which should be specified in the + `scheme` field. + minLength: 1 type: string required: - url diff --git a/bundle/manifests/monitoring.rhobs_prometheusagents.yaml b/bundle/manifests/monitoring.rhobs_prometheusagents.yaml index 9bc80e6b8..a09793ed7 100644 --- a/bundle/manifests/monitoring.rhobs_prometheusagents.yaml +++ b/bundle/manifests/monitoring.rhobs_prometheusagents.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -5498,11 +5498,12 @@ spec: Cannot be set at the same time as `oauth` or `sdk`. properties: clientId: - description: clientId defines defines the Azure User-assigned - Managed identity. + description: |- + clientId defines the Azure User-assigned Managed identity. + + For Prometheus >= 3.5.0 and Thanos >= 0.40.0, this field is allowed to be empty to support system-assigned managed identities. + minLength: 1 type: string - required: - - clientId type: object oauth: description: |- @@ -5679,8 +5680,11 @@ spec: - V2.0 type: string metadataConfig: - description: metadataConfig defines how to send a series metadata - to the remote storage. + description: |- + metadataConfig defines how to send a series metadata to the remote storage. + + When the field is empty, **no metadata** is sent. But when the field is + null, metadata is sent. properties: maxSamplesPerSend: description: |- @@ -6252,7 +6256,7 @@ spec: x-kubernetes-map-type: atomic useFIPSSTSEndpoint: description: |- - useFIPSSTSEndpoint defines FIPS mode for AWS STS endpoint. + useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint. It requires Prometheus >= v2.54.0. type: boolean type: object diff --git a/bundle/manifests/monitoring.rhobs_prometheuses.yaml b/bundle/manifests/monitoring.rhobs_prometheuses.yaml index b9997e151..f4bafe663 100644 --- a/bundle/manifests/monitoring.rhobs_prometheuses.yaml +++ b/bundle/manifests/monitoring.rhobs_prometheuses.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: Experimental-SSA - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -1373,6 +1373,7 @@ spec: pathPrefix: description: pathPrefix defines the prefix for the HTTP path alerts are pushed to. + minLength: 1 type: string port: anyOf: @@ -1513,7 +1514,13 @@ spec: type: object type: array scheme: - description: scheme to use when firing alerts. + description: scheme defines the HTTP scheme to use when + sending alerts. + enum: + - http + - https + - HTTP + - HTTPS type: string sigv4: description: |- @@ -1589,7 +1596,7 @@ spec: x-kubernetes-map-type: atomic useFIPSSTSEndpoint: description: |- - useFIPSSTSEndpoint defines FIPS mode for AWS STS endpoint. + useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint. It requires Prometheus >= v2.54.0. type: boolean type: object @@ -7081,11 +7088,12 @@ spec: Cannot be set at the same time as `oauth` or `sdk`. properties: clientId: - description: clientId defines defines the Azure User-assigned - Managed identity. + description: |- + clientId defines the Azure User-assigned Managed identity. + + For Prometheus >= 3.5.0 and Thanos >= 0.40.0, this field is allowed to be empty to support system-assigned managed identities. + minLength: 1 type: string - required: - - clientId type: object oauth: description: |- @@ -7262,8 +7270,11 @@ spec: - V2.0 type: string metadataConfig: - description: metadataConfig defines how to send a series metadata - to the remote storage. + description: |- + metadataConfig defines how to send a series metadata to the remote storage. + + When the field is empty, **no metadata** is sent. But when the field is + null, metadata is sent. properties: maxSamplesPerSend: description: |- @@ -7835,7 +7846,7 @@ spec: x-kubernetes-map-type: atomic useFIPSSTSEndpoint: description: |- - useFIPSSTSEndpoint defines FIPS mode for AWS STS endpoint. + useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint. It requires Prometheus >= v2.54.0. type: boolean type: object diff --git a/bundle/manifests/monitoring.rhobs_prometheusrules.yaml b/bundle/manifests/monitoring.rhobs_prometheusrules.yaml index 667fc4242..f27c2fa3e 100644 --- a/bundle/manifests/monitoring.rhobs_prometheusrules.yaml +++ b/bundle/manifests/monitoring.rhobs_prometheusrules.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator diff --git a/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml b/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml index 749a1fcd7..10d684647 100644 --- a/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml +++ b/bundle/manifests/monitoring.rhobs_scrapeconfigs.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -1429,8 +1429,10 @@ spec: pattern: ^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$ type: string scheme: - description: scheme defines the HTTP Scheme default "http" + description: scheme defines the HTTP Scheme. enum: + - http + - https - HTTP - HTTPS type: string @@ -12513,10 +12515,10 @@ spec: type: object type: array scheme: - description: |- - scheme defines the protocol scheme used for requests. - If empty, Prometheus uses HTTP by default. + description: scheme defines the protocol scheme used for requests. enum: + - http + - https - HTTP - HTTPS type: string diff --git a/bundle/manifests/monitoring.rhobs_servicemonitors.yaml b/bundle/manifests/monitoring.rhobs_servicemonitors.yaml index 8b9bd273a..4b0337063 100644 --- a/bundle/manifests/monitoring.rhobs_servicemonitors.yaml +++ b/bundle/manifests/monitoring.rhobs_servicemonitors.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -854,16 +854,13 @@ spec: type: object type: array scheme: - description: |- - scheme defines the HTTP scheme to use for scraping. - - `http` and `https` are the expected values unless you rewrite the - `__scheme__` label via relabeling. - - If empty, Prometheus uses the default value `http`. + description: scheme defines the HTTP scheme to use when scraping + the metrics. enum: - http - https + - HTTP + - HTTPS type: string scrapeTimeout: description: |- diff --git a/bundle/manifests/monitoring.rhobs_thanosrulers.yaml b/bundle/manifests/monitoring.rhobs_thanosrulers.yaml index c2b1b8133..db9a3bf55 100644 --- a/bundle/manifests/monitoring.rhobs_thanosrulers.yaml +++ b/bundle/manifests/monitoring.rhobs_thanosrulers.yaml @@ -4,7 +4,7 @@ metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 observability.openshift.io/api-support: TechPreview - operator.prometheus.io/version: 0.86.2-rhobs1 + operator.prometheus.io/version: 0.87.0-rhobs1 creationTimestamp: null labels: app.kubernetes.io/part-of: observability-operator @@ -4841,11 +4841,12 @@ spec: Cannot be set at the same time as `oauth` or `sdk`. properties: clientId: - description: clientId defines defines the Azure User-assigned - Managed identity. + description: |- + clientId defines the Azure User-assigned Managed identity. + + For Prometheus >= 3.5.0 and Thanos >= 0.40.0, this field is allowed to be empty to support system-assigned managed identities. + minLength: 1 type: string - required: - - clientId type: object oauth: description: |- @@ -5022,8 +5023,11 @@ spec: - V2.0 type: string metadataConfig: - description: metadataConfig defines how to send a series metadata - to the remote storage. + description: |- + metadataConfig defines how to send a series metadata to the remote storage. + + When the field is empty, **no metadata** is sent. But when the field is + null, metadata is sent. properties: maxSamplesPerSend: description: |- @@ -5595,7 +5599,7 @@ spec: x-kubernetes-map-type: atomic useFIPSSTSEndpoint: description: |- - useFIPSSTSEndpoint defines FIPS mode for AWS STS endpoint. + useFIPSSTSEndpoint defines the FIPS mode for the AWS STS endpoint. It requires Prometheus >= v2.54.0. type: boolean type: object diff --git a/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml b/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml index daa326649..466bd85c4 100644 --- a/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml +++ b/bundle/manifests/obo-prometheus-operator-admission-webhook_policy_v1_poddisruptionbudget.yaml @@ -4,7 +4,7 @@ metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 name: obo-prometheus-operator-admission-webhook spec: minAvailable: 1 diff --git a/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml b/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml index 2d8caaad8..eab234b8a 100644 --- a/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml +++ b/bundle/manifests/obo-prometheus-operator-admission-webhook_v1_service.yaml @@ -5,7 +5,7 @@ metadata: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 name: obo-prometheus-operator-admission-webhook spec: ports: diff --git a/bundle/manifests/obo-prometheus-operator_v1_service.yaml b/bundle/manifests/obo-prometheus-operator_v1_service.yaml index baf691655..11cb63a44 100644 --- a/bundle/manifests/obo-prometheus-operator_v1_service.yaml +++ b/bundle/manifests/obo-prometheus-operator_v1_service.yaml @@ -6,7 +6,7 @@ metadata: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 name: obo-prometheus-operator spec: clusterIP: None diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index 0198ced83..034b47732 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-12-02T10:45:37Z" + createdAt: "2025-12-02T13:46:38Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -206,6 +206,7 @@ spec: - probes - probes/status - prometheusrules + - prometheusrules/status verbs: - '*' - apiGroups: @@ -828,7 +829,7 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 name: obo-prometheus-operator spec: replicas: 1 @@ -847,7 +848,7 @@ spec: app.kubernetes.io/component: controller app.kubernetes.io/name: prometheus-operator app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 spec: affinity: nodeAffinity: @@ -899,7 +900,7 @@ spec: - label: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 name: obo-prometheus-operator-admission-webhook spec: replicas: 2 @@ -917,7 +918,7 @@ spec: labels: app.kubernetes.io/name: prometheus-operator-admission-webhook app.kubernetes.io/part-of: observability-operator - app.kubernetes.io/version: 0.86.2-rhobs1 + app.kubernetes.io/version: 0.87.0-rhobs1 spec: affinity: nodeAffinity: @@ -942,7 +943,7 @@ spec: - --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: quay.io/rhobs/obo-admission-webhook:v0.86.2-rhobs1 + image: quay.io/rhobs/obo-admission-webhook:v0.87.0-rhobs1 name: prometheus-operator-admission-webhook ports: - containerPort: 8443 diff --git a/deploy/dependencies/kustomization.yaml b/deploy/dependencies/kustomization.yaml index 5edff989c..415c78aac 100644 --- a/deploy/dependencies/kustomization.yaml +++ b/deploy/dependencies/kustomization.yaml @@ -3,25 +3,25 @@ kind: Kustomization resources: -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagers.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_podmonitors.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_probes.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheuses.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusrules.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_servicemonitors.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_thanosrulers.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusagents.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagerconfigs.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_scrapeconfigs.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/deployment.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/service-account.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/service.yaml -- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.86.2-rhobs1/example/admission-webhook/pod-disruption-budget.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagers.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_podmonitors.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_probes.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheuses.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusrules.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_servicemonitors.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_thanosrulers.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_prometheusagents.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_alertmanagerconfigs.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/prometheus-operator-crd/monitoring.rhobs_scrapeconfigs.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/rbac/prometheus-operator/prometheus-operator-service.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/admission-webhook/deployment.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/admission-webhook/service-account.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/admission-webhook/service.yaml +- https://raw.githubusercontent.com/rhobs/obo-prometheus-operator/v0.87.0-rhobs1/example/admission-webhook/pod-disruption-budget.yaml # NOTE: a service although automatically created by OLM for webhooks still # requires admission-webhook/service as the port generated by OLM uses 443 # but assumes targetPort to be 443 as opposed to "https" port of webhook - 8443 diff --git a/go.mod b/go.mod index fa6318188..71bc0c9b0 100644 --- a/go.mod +++ b/go.mod @@ -16,10 +16,10 @@ require ( github.com/perses/plugins/table v0.0.0-20250709083656-34e29fed0083 github.com/perses/plugins/timeserieschart v0.9.1 github.com/pkg/errors v0.9.1 - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2 - github.com/prometheus/common v0.67.1 - github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1 - github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.0 + github.com/prometheus/common v0.67.3 + github.com/rhobs/obo-prometheus-operator v0.87.0-rhobs1 + github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.87.0-rhobs1 github.com/rhobs/observability-operator/pkg/apis v0.0.0-20251009091129-76135c924ed6 github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df @@ -36,7 +36,7 @@ require ( k8s.io/client-go v0.34.2 k8s.io/component-base v0.34.2 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 - sigs.k8s.io/controller-runtime v0.22.3 + sigs.k8s.io/controller-runtime v0.22.4 ) replace ( @@ -92,6 +92,7 @@ require ( github.com/go-openapi/validate v0.25.0 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/cel-go v0.26.1 // indirect github.com/google/gnostic-models v0.7.0 // indirect @@ -123,13 +124,13 @@ require ( github.com/perses/common v0.27.1-0.20250326140707-96e439b14e0e // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus-community/prom-label-proxy v0.12.1 // indirect - github.com/prometheus/alertmanager v0.28.1 // indirect + github.com/prometheus/alertmanager v0.29.0 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect - github.com/prometheus/prometheus v0.305.1-0.20250818080900-0a40df33fb4e // indirect - github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1 // indirect + github.com/prometheus/prometheus v0.307.3 // indirect + github.com/rhobs/obo-prometheus-operator/pkg/client v0.87.0-rhobs1 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.10.1 // indirect @@ -143,7 +144,7 @@ require ( github.com/zitadel/schema v1.3.1 // indirect go.mongodb.org/mongo-driver v1.17.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/collector/featuregate v1.37.0 // indirect + go.opentelemetry.io/collector/featuregate v1.42.0 // indirect go.opentelemetry.io/contrib/otelconf v0.18.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.14.0 // indirect @@ -170,14 +171,14 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.45.0 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.18.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 // indirect google.golang.org/grpc v1.76.0 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/go.sum b/go.sum index 94be5b63f..7b02ea63a 100644 --- a/go.sum +++ b/go.sum @@ -1,25 +1,25 @@ cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= +cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.8.4 h1:oXMa1VMQBVCyewMIOm3WQsnVd9FbKBtm8reqWRaXnHQ= +cloud.google.com/go/compute/metadata v0.8.4/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= @@ -45,36 +45,36 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go-v2 v1.37.0 h1:YtCOESR/pN4j5oA7cVHSfOwIcuh/KwHC4DOSXFbv5F0= -github.com/aws/aws-sdk-go-v2 v1.37.0/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= -github.com/aws/aws-sdk-go-v2/config v1.29.15 h1:I5XjesVMpDZXZEZonVfjI12VNMrYa38LtLnw4NtY5Ss= -github.com/aws/aws-sdk-go-v2/config v1.29.15/go.mod h1:tNIp4JIPonlsgaO5hxO372a6gjhN63aSWl2GVl5QoBQ= -github.com/aws/aws-sdk-go-v2/credentials v1.17.68 h1:cFb9yjI02/sWHBSYXAtkamjzCuRymvmeFmt0TC0MbYY= -github.com/aws/aws-sdk-go-v2/credentials v1.17.68/go.mod h1:H6E+jBzyqUu8u0vGaU6POkK3P0NylYEeRZ6ynBpMqIk= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30 h1:x793wxmUWVDhshP8WW2mlnXuFrO4cOd3HLBroh1paFw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.30/go.mod h1:Jpne2tDnYiFascUEs2AWHJL9Yp7A5ZVy3TNyxaAjD6M= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0 h1:H2iZoqW/v2Jnrh1FnU725Bq6KJ0k2uP63yH+DcY+HUI= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.0/go.mod h1:L0FqLbwMXHvNC/7crWV1iIxUlOKYZUE8KuTIA+TozAI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0 h1:EDped/rNzAhFPhVY0sDGbtD16OKqksfA8OjF/kLEgw8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.0/go.mod h1:uUI335jvzpZRPpjYx6ODc/wg1qH+NnoSTK/FwVeK0C0= +github.com/aws/aws-sdk-go-v2 v1.39.2 h1:EJLg8IdbzgeD7xgvZ+I8M1e0fL0ptn/M47lianzth0I= +github.com/aws/aws-sdk-go-v2 v1.39.2/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY= +github.com/aws/aws-sdk-go-v2/config v1.31.12 h1:pYM1Qgy0dKZLHX2cXslNacbcEFMkDMl+Bcj5ROuS6p8= +github.com/aws/aws-sdk-go-v2/config v1.31.12/go.mod h1:/MM0dyD7KSDPR+39p9ZNVKaHDLb9qnfDurvVS2KAhN8= +github.com/aws/aws-sdk-go-v2/credentials v1.18.16 h1:4JHirI4zp958zC026Sm+V4pSDwW4pwLefKrc0bF2lwI= +github.com/aws/aws-sdk-go-v2/credentials v1.18.16/go.mod h1:qQMtGx9OSw7ty1yLclzLxXCRbrkjWAM7JnObZjmCB7I= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9 h1:Mv4Bc0mWmv6oDuSWTKnk+wgeqPL5DRFu5bQL9BGPQ8Y= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.9/go.mod h1:IKlKfRppK2a1y0gy1yH6zD+yX5uplJ6UuPlgd48dJiQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9 h1:se2vOWGD3dWQUtfn4wEjRQJb1HK1XsNIt825gskZ970= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.9/go.mod h1:hijCGH2VfbZQxqCDN7bwz/4dzxV+hkyhjawAtdPWKZA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9 h1:6RBnKZLkJM4hQ+kN6E7yWFveOTg8NLPHAkqrs4ZPlTU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.9/go.mod h1:V9rQKRmK7AWuEsOMnHzKj8WyrIir1yUJbZxDuZLFvXI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0 h1:XHE2G+yaDQql32FZt19QmQt4WuisqQJIkMUSCxeCUl8= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.237.0/go.mod h1:t11/j/nH9i6bbsPH9xc04BJOsV2nVPUqrB67/TLDsyM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0 h1:eRhU3Sh8dGbaniI6B+I48XJMrTPRkK4DKo+vqIxziOU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.0/go.mod h1:paNLV18DZ6FnWE/bd06RIKPDIFpjuvCkGKWTG/GDBeM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0 h1:QiiCqpKy0prxq+92uWfESzcb7/8Y9JAamcMOzVYLEoM= -github.com/aws/aws-sdk-go-v2/service/lightsail v1.44.0/go.mod h1:ESppxYqXQCpCY+KWl3BdkQjmsQX6zxKP39SnDtRDoU0= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3 h1:1Gw+9ajCV1jogloEv1RRnvfRFia2cL6c9cuKV2Ps+G8= -github.com/aws/aws-sdk-go-v2/service/sso v1.25.3/go.mod h1:qs4a9T5EMLl/Cajiw2TcbNt2UNo/Hqlyp+GiuG4CFDI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1 h1:hXmVKytPfTy5axZ+fYbR5d0cFmC3JvwLm5kM83luako= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.30.1/go.mod h1:MlYRNmYu/fGPoxBQVvBYr9nyr948aY/WLUvwBMBJubs= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.20 h1:oIaQ1e17CSKaWmUTu62MtraRWVIosn/iONMuZt0gbqc= -github.com/aws/aws-sdk-go-v2/service/sts v1.33.20/go.mod h1:cQnB8CUnxbMU82JvlqjKR2HBOm3fe9pWorWBza6MBJ4= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.254.1 h1:7p9bJCZ/b3EJXXARW7JMEs2IhsnI4YFHpfXQfgMh0eg= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.254.1/go.mod h1:M8WWWIfXmxA4RgTXcI/5cSByxRqjgne32Sh0VIbrn0A= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9 h1:5r34CgVOD4WZudeEKZ9/iKpiT6cM1JyEROpXjOcdWv8= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.9/go.mod h1:dB12CEbNWPbzO2uC6QSWHteqOg4JfBVJOojbAoAUb5I= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.49.1 h1:J1A0VJlt5HgUX6s11Obe9zrBDECeE2uhQc7Dwhdei9o= +github.com/aws/aws-sdk-go-v2/service/lightsail v1.49.1/go.mod h1:WEOSRNyfIfvgrD9MuSIGrogKyuFahaVMziVq1pHI0NQ= +github.com/aws/aws-sdk-go-v2/service/sso v1.29.6 h1:A1oRkiSQOWstGh61y4Wc/yQ04sqrQZr1Si/oAXj20/s= +github.com/aws/aws-sdk-go-v2/service/sso v1.29.6/go.mod h1:5PfYspyCU5Vw1wNPsxi15LZovOnULudOQuVxphSflQA= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1 h1:5fm5RTONng73/QA73LhCNR7UT9RpFH3hR6HWL6bIgVY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.1/go.mod h1:xBEjWD13h+6nq+z4AkqSfSvqRKFgDIQeaMguAJndOWo= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.6 h1:p3jIvqYwUZgu/XYeI48bJxOhvm47hZb5HUQ0tn6Q9kA= +github.com/aws/aws-sdk-go-v2/service/sts v1.38.6/go.mod h1:WtKK+ppze5yKPkZ0XwqIVWD4beCwv056ZbPQNoeHqM8= +github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE= +github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -105,12 +105,12 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= -github.com/digitalocean/godo v1.157.0 h1:ReELaS6FxXNf8gryUiVH0wmyUmZN8/NCmBX4gXd3F0o= -github.com/digitalocean/godo v1.157.0/go.mod h1:tYeiWY5ZXVpU48YaFv0M5irUFHXGorZpDNm7zzdWMzM= +github.com/digitalocean/godo v1.165.1 h1:H37+W7TaGFOVH+HpMW4ZeW/hrq3AGNxg+B/K8/dZ9mQ= +github.com/digitalocean/godo v1.165.1/go.mod h1:xQsWpVCCbkDrWisHA72hPzPlnC+4W5w/McZY5ij9uvU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v28.3.0+incompatible h1:ffS62aKWupCWdvcee7nBU9fhnmknOqDPaJAMtfK0ImQ= -github.com/docker/docker v28.3.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.4.0+incompatible h1:KVC7bz5zJY/4AZe/78BIvCnPsLaC9T/zh72xnlrTTOk= +github.com/docker/docker v28.4.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -122,8 +122,8 @@ github.com/efficientgo/core v1.0.0-rc.3/go.mod h1:FfGdkzWarkuzOlY04VY+bGfb1lWrja github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= -github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= @@ -211,8 +211,8 @@ github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7Lk github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= -github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo= +github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -236,19 +236,19 @@ github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= -github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8 h1:ZI8gCoCjGzPsum4L21jHdQs8shFBIQih1TM9Rd/c+EQ= +github.com/google/pprof v0.0.0-20250923004556-9e5a51aed1e8/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/gophercloud/gophercloud v1.14.1 h1:DTCNaTVGl8/cFu58O1JwWgis9gtISAFONqpMKNg/Vpw= -github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= -github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= +github.com/gophercloud/gophercloud/v2 v2.8.0 h1:of2+8tT6+FbEYHfYC8GBu8TXJNsXYSNm9KuvpX7Neqo= +github.com/gophercloud/gophercloud/v2 v2.8.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 h1:cLN4IBkmkYZNnk7EAJ0BHIethd+J6LqxFNw5mSiI2bM= @@ -259,8 +259,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnV github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/consul/api v1.32.0 h1:5wp5u780Gri7c4OedGEPzmlUEzi0g2KyiPphSr6zjVg= github.com/hashicorp/consul/api v1.32.0/go.mod h1:Z8YgY0eVPukT/17ejW+l+C7zJmKwgPHtjU1q16v/Y40= -github.com/hashicorp/cronexpr v1.1.2 h1:wG/ZYIKT+RT3QkOdgYc+xsKWVRgnxJ1OJtjjy84fJ9A= -github.com/hashicorp/cronexpr v1.1.2/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= +github.com/hashicorp/cronexpr v1.1.3 h1:rl5IkxXN2m681EfivTlccqIryzYJSXRGRNa0xeG7NA4= +github.com/hashicorp/cronexpr v1.1.3/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= @@ -279,12 +279,12 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4= github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec h1:+YBzb977VrmffaCX/OBm17dEVJUcWn5dW+eqs3aIJ/A= -github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec/go.mod h1:svtxn6QnrQ69P23VvIWMR34tg3vmwLz4UdUzm1dSCgE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af h1:ScAYf8O+9xTqTJPZH8MIlUfO+ak8cb31rW1aYJgS+jE= +github.com/hashicorp/nomad/api v0.0.0-20250930071859-eaa0fe0e27af/go.mod h1:sldFTIgs+FsUeKU3LwVjviAIuksxD8TzDOn02MYwslE= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hetznercloud/hcloud-go/v2 v2.21.1 h1:IH3liW8/cCRjfJ4cyqYvw3s1ek+KWP8dl1roa0lD8JM= -github.com/hetznercloud/hcloud-go/v2 v2.21.1/go.mod h1:XOaYycZJ3XKMVWzmqQ24/+1V7ormJHmPdck/kxrNnQA= +github.com/hetznercloud/hcloud-go/v2 v2.25.1 h1:ib86acotlvgUSnKfFG5FJl0VFeYKe/Ht8nmikdUp+po= +github.com/hetznercloud/hcloud-go/v2 v2.25.1/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/ionos-cloud/sdk-go/v6 v6.3.4 h1:jTvGl4LOF8v8OYoEIBNVwbFoqSGAFqn6vGE7sp7/BqQ= @@ -317,8 +317,8 @@ github.com/labstack/echo/v4 v4.13.4 h1:oTZZW+T3s9gAu5L8vmzihV7/lkXGZuITzTQkTEhcX github.com/labstack/echo/v4 v4.13.4/go.mod h1:g63b33BZ5vZzcIUF8AtRH40DrTlXnx4UMC8rBdndmjQ= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= -github.com/linode/linodego v1.52.2 h1:N9ozU27To1LMSrDd8WvJZ5STSz1eGYdyLnxhAR/dIZg= -github.com/linode/linodego v1.52.2/go.mod h1:bI949fZaVchjWyKIA08hNyvAcV6BAS+PM2op3p7PAWA= +github.com/linode/linodego v1.59.0 h1:kYz6sQH9g0u21gbI1UUFjZmFLirtc39JPybygrW76Q0= +github.com/linode/linodego v1.59.0/go.mod h1:1+Bt0oTz5rBnDOJbGhccxn7LYVytXTIIfAy7QYmijDs= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -326,8 +326,8 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a h1:0usWxe5SGXKQovz3p+BiQ81Jy845xSMu2CWKuXsXuUM= github.com/metalmatze/signal v0.0.0-20210307161603-1c9aa721a97a/go.mod h1:3OETvrxfELvGsU2RoGGWercfeZ4bCL3+SOwzIWtJH/Q= -github.com/miekg/dns v1.1.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= -github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA= +github.com/miekg/dns v1.1.68/go.mod h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -403,10 +403,10 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus-community/prom-label-proxy v0.12.1 h1:vJ6tGz4NMge140Ua3T/zh3HO0CA3bmnCsfkWK/cujG0= github.com/prometheus-community/prom-label-proxy v0.12.1/go.mod h1:/tZNtOMcbPbE1VFcY8b48mPqT1bb2jVpXx2WdjjM8TY= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2 h1:VRXUgbGmpmjZgFYiUnTwlC+JjfCUs5KKFsorJhI1ZKQ= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.86.2/go.mod h1:nPk0OteXBkbT0CRCa2oZQL1jRLW6RJ2fuIijHypeJdk= -github.com/prometheus/alertmanager v0.28.1 h1:BK5pCoAtaKg01BYRUJhEDV1tqJMEtYBGzPw8QdvnnvA= -github.com/prometheus/alertmanager v0.28.1/go.mod h1:0StpPUDDHi1VXeM7p2yYfeZgLVi/PPlt39vo9LQUHxM= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.0 h1:QK37j5ZUtBwbyZkF4BBAs3bQQ1gYKG8e+g1BdNZBr/M= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.87.0/go.mod h1:WHiLZmOWVop/MoYvRD58LfnPeyE+dcITby/jQjg83Hw= +github.com/prometheus/alertmanager v0.29.0 h1:/ET4NmAGx2Dv9kStrXIBqBgHyiSgIk4OetY+hoZRfgc= +github.com/prometheus/alertmanager v0.29.0/go.mod h1:SjI2vhrfdWg10UaRUxTz27rgdJVG3HXrhI5WFjCdBgs= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -419,25 +419,25 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.67.1 h1:OTSON1P4DNxzTg4hmKCc37o4ZAZDv0cfXLkOt0oEowI= -github.com/prometheus/common v0.67.1/go.mod h1:RpmT9v35q2Y+lsieQsdOh5sXZ6ajUGC8NjZAmr8vb0Q= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/common v0.67.3 h1:shd26MlnwTw5jksTDhC7rTQIteBxy+ZZDr3t7F2xN2Q= +github.com/prometheus/common v0.67.3/go.mod h1:gP0fq6YjjNCLssJCQp0yk4M8W6ikLURwkdd/YKtTbyI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= -github.com/prometheus/prometheus v0.305.1-0.20250818080900-0a40df33fb4e h1:HcaG1Uuc0LCVkHHo+QMgJf8eXjCxEZDoYGOvmUjPU2g= -github.com/prometheus/prometheus v0.305.1-0.20250818080900-0a40df33fb4e/go.mod h1:uxFMhGI+u8QK+W7Zr/oZGvf2lkHgnjbBmAEEnoymLyg= -github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVXk= -github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= -github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1 h1:QGR5xr9DJO4StwEvzorhbie2nnRHPcWloJMdJyTzmM8= -github.com/rhobs/obo-prometheus-operator v0.86.2-rhobs1/go.mod h1:QFDNkYTYaR2NlRr7PoM2kH8tp1xUxI3fElU4hpceQLA= -github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1 h1:4VkQnCtdwBzrMP7x5+7KhViipa2ARmEOHip6ULVm14U= -github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.86.2-rhobs1/go.mod h1:l986kUrEUzfrbYEsqRvSAJThNbF4SUKkM5eZR+L3uf0= -github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1 h1:xHFPnhTfQ1JNtHfqveI3MRdk7FREgkY3s2pTjoFL3Bw= -github.com/rhobs/obo-prometheus-operator/pkg/client v0.86.2-rhobs1/go.mod h1:a2jQ6UDlAqTT573SpRc548JwIK1rvMh6RKvSI/749HA= +github.com/prometheus/prometheus v0.307.3 h1:zGIN3EpiKacbMatcUL2i6wC26eRWXdoXfNPjoBc2l34= +github.com/prometheus/prometheus v0.307.3/go.mod h1:sPbNW+KTS7WmzFIafC3Inzb6oZVaGLnSvwqTdz2jxRQ= +github.com/prometheus/sigv4 v0.2.1 h1:hl8D3+QEzU9rRmbKIRwMKRwaFGyLkbPdH5ZerglRHY0= +github.com/prometheus/sigv4 v0.2.1/go.mod h1:ySk6TahIlsR2sxADuHy4IBFhwEjRGGsfbbLGhFYFj6Q= +github.com/rhobs/obo-prometheus-operator v0.87.0-rhobs1 h1:YpvRwXMPAWAd+3OnkNgEWqqOb9ykM0Ftx2qg1cszLwI= +github.com/rhobs/obo-prometheus-operator v0.87.0-rhobs1/go.mod h1:+RhlE9HKAlClReubMuUKszn81b1ThYqL3VklMkF/S5o= +github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.87.0-rhobs1 h1:fi67xssH0ZGK7fy/pL68je7Enmb8x7ImbKMYMH3CDQo= +github.com/rhobs/obo-prometheus-operator/pkg/apis/monitoring v0.87.0-rhobs1/go.mod h1:amf29isbT7UfgLWDCamPG6jaELHKoXyCd25Nx3DBlNY= +github.com/rhobs/obo-prometheus-operator/pkg/client v0.87.0-rhobs1 h1:/3w2Mky/kVuzNH19uT6vsSgmCuZwEFftjF0A7LuX+Mo= +github.com/rhobs/obo-prometheus-operator/pkg/client v0.87.0-rhobs1/go.mod h1:FMfzfWcCGBtflg+gT1SNchG243iywu015rJskh1U+/c= github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4 h1:IxpxGJ/fbnRkZZYFm17NMedFyEuOKuf4TS23g+6jMvU= github.com/rhobs/perses v0.0.0-20250612171017-5d7686af9ae4/go.mod h1:Mxs4sXawWiV50qokKG1UZCV9NJEdJWsALY71/z38NKA= github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df h1:rwtqpvrowEF6EjSiO3PPcqC6s2jo7NU3VsGU6yrpxTg= @@ -445,8 +445,8 @@ github.com/rhobs/perses-operator v0.1.10-0.20250612173146-78eb619430df/go.mod h1 github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33 h1:KhF0WejiUTDbL5X55nXowP7zNopwpowa6qaMAWyIE+0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.33/go.mod h1:792k1RTU+5JeMXm35/e2Wgp71qPH/DmDoZrRc+EFZDk= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35 h1:8xfn1RzeI9yoCUuEwDy08F+No6PcKZGEDOQ6hrRyLts= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.35/go.mod h1:47B1d/YXmSAxlJxUJxClzHR6b3T4M1WyCvwENPQNBWc= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= @@ -459,8 +459,8 @@ github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4 github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2 h1:jPyn+i8rkp2hM80+hOg0B/1EVRbMt778Tr5RWyK1m2E= -github.com/stackitcloud/stackit-sdk-go/core v0.17.2/go.mod h1:8KIw3czdNJ9sdil9QQimxjR6vHjeINFrRv0iZ67wfn0= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3 h1:GsZGmRRc/3GJLmCUnsZswirr5wfLRrwavbnL/renOqg= +github.com/stackitcloud/stackit-sdk-go/core v0.17.3/go.mod h1:HBCXJGPgdRulplDzhrmwC+Dak9B/x0nzNtmOpu+1Ahg= github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -497,8 +497,8 @@ go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFX go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/collector/featuregate v1.37.0 h1:CjsHzjktiqq/dxid4Xkhuf3yD6oB/c7yRBWhokBJqpE= -go.opentelemetry.io/collector/featuregate v1.37.0/go.mod h1:Y/KsHbvREENKvvN9RlpiWk/IGBK+CATBYzIIpU7nccc= +go.opentelemetry.io/collector/featuregate v1.42.0 h1:uCVwumVBVex46DsG/fvgiTGuf9f53bALra7vGyKaqFI= +go.opentelemetry.io/collector/featuregate v1.42.0/go.mod h1:d0tiRzVYrytB6LkcYgz2ESFTv7OktRPQe0QEQcPt1L4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/contrib/otelconf v0.18.0 h1:ciF2Gf00BWs0DnexKFZXcxg9kJ8r3SUW1LOzW3CsKA8= @@ -577,8 +577,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= -golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -619,10 +619,10 @@ gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0 gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= +google.golang.org/api v0.250.0 h1:qvkwrf/raASj82UegU2RSDGWi/89WkLckn4LuO4lVXM= +google.golang.org/api v0.250.0/go.mod h1:Y9Uup8bDLJJtMzJyQnu+rLRJLA0wn+wTtc6vTlOvfXo= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4 h1:8XJ4pajGwOlasW+L13MnEGA8W4115jJySQtVfS2/IBU= +google.golang.org/genproto/googleapis/api v0.0.0-20250929231259-57b25ae835d4/go.mod h1:NnuHhy+bxcg30o7FnVAZbXsPHUDQ9qKWAQKCD7VxFtk= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87 h1:WgGZrMngVRRve7T3P5gbXdmedSmUpkf8uIUu1fg+biY= google.golang.org/genproto/googleapis/rpc v0.0.0-20251006185510-65f7160b3a87/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A= @@ -669,8 +669,8 @@ k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZ k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -sigs.k8s.io/controller-runtime v0.22.3 h1:I7mfqz/a/WdmDCEnXmSPm8/b/yRTy6JsKKENTijTq8Y= -sigs.k8s.io/controller-runtime v0.22.3/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= +sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A= +sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= sigs.k8s.io/gateway-api v1.1.0 h1:DsLDXCi6jR+Xz8/xd0Z1PYl2Pn0TyaFMOPPZIj4inDM= sigs.k8s.io/gateway-api v1.1.0/go.mod h1:ZH4lHrL2sDi0FHZ9jjneb8kKnGzFWyrTya35sWUTrRs= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= diff --git a/pkg/controllers/monitoring/monitoring-stack/components.go b/pkg/controllers/monitoring/monitoring-stack/components.go index 8c03cb555..76514cf9b 100644 --- a/pkg/controllers/monitoring/monitoring-stack/components.go +++ b/pkg/controllers/monitoring/monitoring-stack/components.go @@ -251,7 +251,7 @@ func newPrometheus( { Name: ms.Name + "-alertmanager", Namespace: ptr.To(ms.Namespace), - Scheme: "http", + Scheme: ptr.To(monv1.Scheme("http")), Port: intstr.FromString("web"), }, }, @@ -261,7 +261,7 @@ func newPrometheus( prometheus.Spec.Secrets = append(prometheus.Spec.Secrets, caSecret.Name) - prometheus.Spec.Alerting.Alertmanagers[0].Scheme = "https" + prometheus.Spec.Alerting.Alertmanagers[0].Scheme = ptr.To(monv1.Scheme("https")) prometheus.Spec.Alerting.Alertmanagers[0].TLSConfig = &monv1.TLSConfig{ SafeTLSConfig: monv1.SafeTLSConfig{ ServerName: ptr.To(ms.Name + "-alertmanager"), diff --git a/pkg/controllers/monitoring/thanos-querier/components.go b/pkg/controllers/monitoring/thanos-querier/components.go index 160684a78..6c36cd7d2 100644 --- a/pkg/controllers/monitoring/thanos-querier/components.go +++ b/pkg/controllers/monitoring/thanos-querier/components.go @@ -252,7 +252,7 @@ func newServiceMonitor(name string, namespace string, thanos *msoapi.ThanosQueri Endpoints: []monv1.Endpoint{ { Port: "http", - Scheme: "http", + Scheme: ptr.To(monv1.Scheme("http")), }, }, Selector: metav1.LabelSelector{ @@ -263,7 +263,7 @@ func newServiceMonitor(name string, namespace string, thanos *msoapi.ThanosQueri }, } if thanos.Spec.WebTLSConfig != nil { - serviceMonitor.Spec.Endpoints[0].Scheme = "https" + serviceMonitor.Spec.Endpoints[0].Scheme = ptr.To(monv1.Scheme("https")) serviceMonitor.Spec.Endpoints[0].TLSConfig = &monv1.TLSConfig{ SafeTLSConfig: monv1.SafeTLSConfig{ CA: monv1.SecretOrConfigMap{ diff --git a/pkg/controllers/operator/components.go b/pkg/controllers/operator/components.go index 4066e0c96..f28721b91 100644 --- a/pkg/controllers/operator/components.go +++ b/pkg/controllers/operator/components.go @@ -45,7 +45,7 @@ func newServiceMonitor(namespace string) *monv1.ServiceMonitor { Endpoints: []monv1.Endpoint{ { Port: "metrics", - Scheme: "https", + Scheme: ptr.To(monv1.Scheme("https")), TLSConfig: &monv1.TLSConfig{ CAFile: "/etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt", CertFile: "/etc/prometheus/secrets/metrics-client-certs/tls.crt", diff --git a/pkg/controllers/uiplugin/health_analyzer.go b/pkg/controllers/uiplugin/health_analyzer.go index 6c497acdb..be7b818a2 100644 --- a/pkg/controllers/uiplugin/health_analyzer.go +++ b/pkg/controllers/uiplugin/health_analyzer.go @@ -197,7 +197,7 @@ func newHealthAnalyzerServiceMonitor(namespace string) *monv1.ServiceMonitor { { Interval: "30s", Port: "metrics", - Scheme: "https", + Scheme: ptr.To(monv1.Scheme("https")), TLSConfig: &monv1.TLSConfig{ SafeTLSConfig: monv1.SafeTLSConfig{ ServerName: ptr.To(name + "." + namespace + ".svc"), From 387830146b8714a88cc986bdda5518e16d12dcd6 Mon Sep 17 00:00:00 2001 From: lihongyan1 Date: Thu, 4 Dec 2025 23:58:39 +0800 Subject: [PATCH 29/32] fix: github action workflow release failure (#957) https://github.com/rhobs/observability-operator/issues/956 --- .github/workflows/release.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a8e39493f..b1750e0e0 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -4,6 +4,9 @@ on: push: branches: [main] +permissions: + contents: write + jobs: e2e-tests-olm: runs-on: ubuntu-latest From 829d5117eb3837fd9c1fb1ba452789699c135c1a Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Thu, 4 Dec 2025 18:12:41 +0100 Subject: [PATCH 30/32] Improve prometheus-operator updates (#959) * build: centralize p-o image names and tags in kustomization.yaml Signed-off-by: Jan Fajerski * chore: add script to update p-o refs Signed-off-by: Jan Fajerski --------- Signed-off-by: Jan Fajerski --- ...bility-operator.clusterserviceversion.yaml | 6 +- deploy/dependencies/kustomization.yaml | 14 +++- hack/update-obo-prometheus-operator.sh | 73 +++++++++++++++++++ 3 files changed, 86 insertions(+), 7 deletions(-) create mode 100755 hack/update-obo-prometheus-operator.sh diff --git a/bundle/manifests/observability-operator.clusterserviceversion.yaml b/bundle/manifests/observability-operator.clusterserviceversion.yaml index 034b47732..1a27363d0 100644 --- a/bundle/manifests/observability-operator.clusterserviceversion.yaml +++ b/bundle/manifests/observability-operator.clusterserviceversion.yaml @@ -42,7 +42,7 @@ metadata: categories: Monitoring certified: "false" containerImage: observability-operator:1.3.0 - createdAt: "2025-12-02T13:46:38Z" + createdAt: "2025-12-04T15:14:30Z" description: A Go based Kubernetes operator to setup and manage highly available Monitoring Stack using Prometheus, Alertmanager and Thanos Querier. operatorframework.io/cluster-monitoring: "true" @@ -861,7 +861,7 @@ spec: automountServiceAccountToken: true containers: - args: - - --prometheus-config-reloader=quay.io/rhobs/obo-prometheus-config-reloader:v0.86.1-rhobs1 + - --prometheus-config-reloader=quay.io/rhobs/obo-prometheus-config-reloader:v0.87.0-rhobs1 - --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 @@ -870,7 +870,7 @@ spec: env: - name: GOGC value: "30" - image: quay.io/rhobs/obo-prometheus-operator:v0.86.1-rhobs1 + image: quay.io/rhobs/obo-prometheus-operator:v0.87.0-rhobs1 name: prometheus-operator ports: - containerPort: 8080 diff --git a/deploy/dependencies/kustomization.yaml b/deploy/dependencies/kustomization.yaml index 415c78aac..96bbf2801 100644 --- a/deploy/dependencies/kustomization.yaml +++ b/deploy/dependencies/kustomization.yaml @@ -30,14 +30,20 @@ resources: - admission-webhook/alertmanager-config-validating-webhook.yaml - admission-webhook/prometheus-rule-validating-webhook.yaml +images: +- name: quay.io/rhobs/obo-prometheus-operator + newTag: v0.87.0-rhobs1 +- name: quay.io/rhobs/obo-prometheus-config-reloader + newTag: v0.87.0-rhobs1 +- name: quay.io/rhobs/obo-admission-webhook + newTag: v0.87.0-rhobs1 + namespace: operators namePrefix: obo- # rely on tls-certificates injected by OLM instead of mounting empty files - - # HACK: remove the RuntimeDefault from ALL deploymens until we figure out # how to run the operator on all openshift version from 4.9-13. Currently the # webhook fails to deploy on 4.10 @@ -70,9 +76,9 @@ patches: spec: containers: - name: prometheus-operator - image: quay.io/rhobs/obo-prometheus-operator:v0.86.1-rhobs1 + image: quay.io/rhobs/obo-prometheus-operator args: - - --prometheus-config-reloader=quay.io/rhobs/obo-prometheus-config-reloader:v0.86.1-rhobs1 + - --prometheus-config-reloader=quay.io/rhobs/obo-prometheus-config-reloader:v0.87.0-rhobs1 - --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 diff --git a/hack/update-obo-prometheus-operator.sh b/hack/update-obo-prometheus-operator.sh new file mode 100755 index 000000000..1efb0ad41 --- /dev/null +++ b/hack/update-obo-prometheus-operator.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# Usage: +# hack/update-obo-prometheus-operator.sh +# +# Example: +# hack/update-obo-prometheus-operator.sh v0.87.0-rhobs1 v0.88.0-rhobs1 +# +# This script replaces all occurrences of the given obo-prometheus-operator +# version string in source files, including: +# - kustomization files (e.g. deploy/dependencies/kustomization.yaml) +# - go.mod files +# - any other YAML/YML files under the repo, excluding generated assets +# under bundle/ and tmp/. +# +# After running this script you should typically run: +# - go mod tidy +# - make bundle + +if [[ $# -ne 2 ]]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +OLD_VERSION="$1" +NEW_VERSION="$2" + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" + +cd "${REPO_ROOT}" + +echo "Updating obo-prometheus-operator from '${OLD_VERSION}' to '${NEW_VERSION}'" +echo "Repository root: ${REPO_ROOT}" + +# Find candidate files: +# - All kustomization files +# - All go.mod files +# - All YAML/YML files +# Exclude: +# - Generated bundle content +# - Temporary / build output +mapfile -t FILES < <( + grep -Rl --null "${OLD_VERSION}" . \ + --include='kustomization.yaml' \ + --include='go.mod' \ + --include='*.yaml' \ + --include='*.yml' \ + | tr '\0' '\n' \ + | grep -v -E '^./bundle/' \ + | grep -v -E '^./tmp/' +) + +if [[ ${#FILES[@]} -eq 0 ]]; then + echo "No files found containing '${OLD_VERSION}' (nothing to do)." >&2 + exit 1 +fi + +echo "Will update the following files:" +for f in "${FILES[@]}"; do + echo " - ${f}" +done + +for f in "${FILES[@]}"; do + sed -i "s/${OLD_VERSION}/${NEW_VERSION}/g" "${f}" +done + +echo "Done." +echo "Next steps (recommended):" +echo " - go mod tidy" +echo " - make bundle" From e6efc6eb8586f16bce38710adf3fb3c853a9d0c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:11:03 +0000 Subject: [PATCH 31/32] build(deps): bump github.com/operator-framework/api (#953) Bumps [github.com/operator-framework/api](https://github.com/operator-framework/api) from 0.34.0 to 0.36.0. - [Release notes](https://github.com/operator-framework/api/releases) - [Changelog](https://github.com/operator-framework/api/blob/master/RELEASE.md) - [Commits](https://github.com/operator-framework/api/compare/v0.34.0...v0.36.0) --- updated-dependencies: - dependency-name: github.com/operator-framework/api dependency-version: 0.36.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 71bc0c9b0..d0ac8aa9e 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/rhobs/observability-operator -go 1.24.4 +go 1.24.6 require ( github.com/go-jose/go-jose/v4 v4.1.2 // indirect @@ -10,7 +10,7 @@ require ( github.com/grafana/tempo-operator v0.18.0 github.com/open-telemetry/opentelemetry-operator v0.135.0 github.com/openshift/api v3.9.0+incompatible // PINNED: newer versions remove console/v1alpha1 API needed for OpenShift <4.17 compatibility - github.com/operator-framework/api v0.34.0 + github.com/operator-framework/api v0.36.0 github.com/perses/perses v0.51.1 github.com/perses/plugins/prometheus v0.52.1 github.com/perses/plugins/table v0.0.0-20250709083656-34e29fed0083 diff --git a/go.sum b/go.sum index 7b02ea63a..363670567 100644 --- a/go.sum +++ b/go.sum @@ -374,8 +374,8 @@ github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJw github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/openshift/api v0.0.0-20240404200104-96ed2d49b255 h1:OPEl/rl/Bt8soLkMUex9PZu9PJB59VPFnaPh/n1Pb3I= github.com/openshift/api v0.0.0-20240404200104-96ed2d49b255/go.mod h1:CxgbWAlvu2iQB0UmKTtRu1YfepRg1/vJ64n2DlIEVz4= -github.com/operator-framework/api v0.34.0 h1:REiEaYhG1CWmDoajdcAdZqtgoljWG+ixMY59vUX5pFI= -github.com/operator-framework/api v0.34.0/go.mod h1:eGncUNIYvWtfGCCKmLzGXvoi3P0TDf3Yd/Z0Sn9E6SQ= +github.com/operator-framework/api v0.36.0 h1:6+duRhamCvB540JbvNp/1+Pot7luff7HqdAOm9bAntg= +github.com/operator-framework/api v0.36.0/go.mod h1:QSmHMx8XpGsNWvjU5CUelVZC916VLp/TZhfYvGKpghM= github.com/operator-framework/operator-lib v0.18.0 h1:6OaWemt/CuyrjFMkLyk4O8Vj4CPHxt/m1DMuMAmPwXo= github.com/operator-framework/operator-lib v0.18.0/go.mod h1:EWS6xGYBcMn04wj81j0bluAYbFHl3cJcar++poQMzqE= github.com/ovh/go-ovh v1.9.0 h1:6K8VoL3BYjVV3In9tPJUdT7qMx9h0GExN9EXx1r2kKE= From ac4e4df4739f5f98919ce90198241179d8ebf67b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:58:52 +0000 Subject: [PATCH 32/32] build(deps): bump github.com/goccy/go-yaml from 1.18.0 to 1.19.0 (#952) Bumps [github.com/goccy/go-yaml](https://github.com/goccy/go-yaml) from 1.18.0 to 1.19.0. - [Release notes](https://github.com/goccy/go-yaml/releases) - [Changelog](https://github.com/goccy/go-yaml/blob/master/CHANGELOG.md) - [Commits](https://github.com/goccy/go-yaml/compare/v1.18.0...v1.19.0) --- updated-dependencies: - dependency-name: github.com/goccy/go-yaml dependency-version: 1.19.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d0ac8aa9e..6cd308c3b 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.6 require ( github.com/go-jose/go-jose/v4 v4.1.2 // indirect github.com/go-logr/logr v1.4.3 - github.com/goccy/go-yaml v1.18.0 + github.com/goccy/go-yaml v1.19.0 github.com/google/go-cmp v0.7.0 github.com/grafana/tempo-operator v0.18.0 github.com/open-telemetry/opentelemetry-operator v0.135.0 diff --git a/go.sum b/go.sum index 363670567..8e6ff9813 100644 --- a/go.sum +++ b/go.sum @@ -206,8 +206,8 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-zookeeper/zk v1.0.4 h1:DPzxraQx7OrPyXq2phlGlNSIyWEsAox0RJmjTseMV6I= github.com/go-zookeeper/zk v1.0.4/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= -github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/goccy/go-yaml v1.19.0 h1:EmkZ9RIsX+Uq4DYFowegAuJo8+xdX3T/2dwNPXbxEYE= +github.com/goccy/go-yaml v1.19.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=