You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2026/05/13 13:10:49 UTC

(camel-k) branch main updated: feat(trait): deprecate prometheus trait

This is an automated email from the ASF dual-hosted git repository.

squakez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/main by this push:
     new d5579531c feat(trait): deprecate prometheus trait
d5579531c is described below

commit d5579531c394ab320bdb881eee31b7909dddd717
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Wed May 13 12:09:45 2026 +0200

    feat(trait): deprecate prometheus trait
    
    Favour Camel Monitor Operator to perform that level of monitoring instead
---
 .../ROOT/pages/observability/monitoring.adoc       | 10 +++---
 .../observability/monitoring/integration.adoc      |  2 +-
 .../pages/observability/monitoring/operator.adoc   |  4 ++-
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  | 11 +++++--
 docs/modules/traits/pages/pod.adoc                 |  2 +-
 docs/modules/traits/pages/prometheus.adoc          |  5 +++
 e2e/common/traits/health_test.go                   | 36 +++++++++++-----------
 e2e/support/test_support.go                        | 10 +++---
 helm/camel-k/crds/camel-k-crds.yaml                |  8 +++--
 pkg/apis/camel/v1/integration_types.go             |  7 +++--
 pkg/apis/camel/v1/trait/pod.go                     |  2 +-
 pkg/apis/camel/v1/trait/prometheus.go              |  4 +++
 pkg/apis/camel/v1/zz_generated.deepcopy.go         |  4 +--
 .../camel/v1/integrationcondition.go               | 16 +++++-----
 .../applyconfiguration/camel/v1/podcondition.go    |  2 ++
 pkg/controller/integration/monitor.go              | 18 ++++++-----
 pkg/controller/pipe/monitor.go                     | 14 +++++----
 .../crd/bases/camel.apache.org_integrations.yaml   |  7 +++--
 .../config/crd/bases/camel.apache.org_pipes.yaml   |  1 +
 pkg/trait/prometheus.go                            | 10 +++++-
 pkg/trait/prometheus_test.go                       |  6 ++--
 pkg/util/defaults/defaults.go                      |  2 +-
 script/Makefile                                    |  2 +-
 23 files changed, 113 insertions(+), 70 deletions(-)

diff --git a/docs/modules/ROOT/pages/observability/monitoring.adoc b/docs/modules/ROOT/pages/observability/monitoring.adoc
index a3ed230e6..24c2f7e56 100644
--- a/docs/modules/ROOT/pages/observability/monitoring.adoc
+++ b/docs/modules/ROOT/pages/observability/monitoring.adoc
@@ -1,14 +1,16 @@
 [[monitoring]]
-= Camel K Monitoring
+= Camel K Operator Monitoring
 
-The Camel K monitoring architecture relies on https://prometheus.io[Prometheus] and the eponymous operator.
+The Camel K Operator monitoring architecture relies on https://prometheus.io[Prometheus] and the eponymous operator.
 
 The https://prometheus-operator.dev[Prometheus Operator] serves to make running Prometheus on top of Kubernetes as easy as possible, while preserving Kubernetes-native configuration options.
 
+NOTE: the Camel K Integration monitoring part is deprecated in favour of xref:observability/dashboard.adoc[Camel Dashboard].
+
 [[prerequisites]]
 == Prerequisites
 
-To take full advantage of the Camel K monitoring capabilities, it is recommended to have a Prometheus Operator instance, that can be configured to integrate the Camel K operator and integrations.
+To take full advantage of the Camel K operator monitoring capabilities, it is recommended to have a Prometheus Operator instance, that can be configured to integrate the Camel K operator and integrations.
 
 [[kubernetes]]
 === Kubernetes
@@ -22,7 +24,7 @@ Alternatively, you can quickly deploy the Prometheus operator by running:
 $ kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml
 ----
 
-WARNING: Beware this installs the operator in the `default` namespace. You must download the file locally and replace the `namespace` fields to deploy the resources into another namespace. This also installs the version from the `main` branch, which you can change in the URL by choosing a stable release version.
+NOTE: the above script installs the operator in the `default` namespace. You must download the file locally and replace the `namespace` fields to deploy the resources into another namespace. This also installs the version from the `main` branch, which you can change in the URL by choosing a stable release version.
 
 Then, you can create a `Prometheus` resource, that the operator will use as configuration to deploy a managed Prometheus instance:
 
diff --git a/docs/modules/ROOT/pages/observability/monitoring/integration.adoc b/docs/modules/ROOT/pages/observability/monitoring/integration.adoc
index 5e8bf19fe..e7c75e8ec 100644
--- a/docs/modules/ROOT/pages/observability/monitoring/integration.adoc
+++ b/docs/modules/ROOT/pages/observability/monitoring/integration.adoc
@@ -1,7 +1,7 @@
 [[integration-monitoring]]
 = Camel K Integration Monitoring
 
-NOTE: The Camel K monitoring architecture relies on https://prometheus.io[Prometheus] and the eponymous operator. Make sure you've checked the xref:observability/monitoring.adoc#prerequisites[Camel K monitoring prerequisites].
+WARNING: The Camel K Integration monitoring part is deprecated. Use instead xref:observability/dashboard.adoc[Camel Dashboard] project to provide a deeper level of monitoring to your Camel applications.
 
 [[instrumentation]]
 == Instrumentation
diff --git a/docs/modules/ROOT/pages/observability/monitoring/operator.adoc b/docs/modules/ROOT/pages/observability/monitoring/operator.adoc
index fb5d6ff60..a671eeb0a 100644
--- a/docs/modules/ROOT/pages/observability/monitoring/operator.adoc
+++ b/docs/modules/ROOT/pages/observability/monitoring/operator.adoc
@@ -1,7 +1,9 @@
 [[operator-monitoring]]
 = Camel K Operator Monitoring
 
-NOTE: The Camel K monitoring architecture relies on https://prometheus.io[Prometheus] and the eponymous operator. Make sure you've checked the xref:observability/monitoring.adoc#prerequisites[Camel K monitoring prerequisites].
+In this chapter we provide some example how to provide a monitoring based on Prometheus for your Camel K operator main metrics.
+
+WARNING: this is a guide that mostly depends on Prometheus. The goal is to provide some basic example more than an exhaustive guide. Please, refer to Prometheus documentation for a full production configuration.
 
 [[installation]]
 == Installation
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 067e26e31..cbcc5efae 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -2498,7 +2498,9 @@ A human-readable message indicating details about the transition.
 |
 
 
-Pods collect health and conditions information from the owned PODs
+DeprecatedPods collect health and conditions information from the owned PODs
+
+Deprecated: may be removed in future releases.
 
 
 |===
@@ -5107,7 +5109,7 @@ PluginProperties -- .
 * <<#_camel_apache_org_v1_IntegrationCondition, IntegrationCondition>>
 * <<#_camel_apache_org_v1_PipeCondition, PipeCondition>>
 
-
+Deprecated: may be removed in future releases.
 
 [cols="2,2a",options="header"]
 |===
@@ -9057,7 +9059,7 @@ Deprecated: no longer in use.
 * <<#_camel_apache_org_v1_Traits, Traits>>
 
 WARNING: The Pod trait is **deprecated** and will removed in future release versions:
-use InitContainers trait istead.
+use InitContainers trait instead.
 
 The pod trait allows the customization of the Integration pods.
 It applies the `PodSpecTemplate` struct contained in the Integration `.spec.podTemplate` field,
@@ -9089,6 +9091,9 @@ by using the `integration` container name.
 
 * <<#_camel_apache_org_v1_Traits, Traits>>
 
+WARNING: The Prometheus trait is **deprecated** and will removed in future release versions:
+use Camel Monitor operator (https://camel-tooling.github.io/camel-dashboard/docs/installation-guide/advanced/operator/) instead.
+
 The Prometheus trait configures a Prometheus-compatible endpoint. It also creates a `PodMonitor` resource,
 so that the endpoint can be scraped automatically, when using the Prometheus operator.
 
diff --git a/docs/modules/traits/pages/pod.adoc b/docs/modules/traits/pages/pod.adoc
index 3d5c5d391..d2673e037 100755
--- a/docs/modules/traits/pages/pod.adoc
+++ b/docs/modules/traits/pages/pod.adoc
@@ -6,7 +6,7 @@
 // End of autogenerated code - DO NOT EDIT! (badges)
 // Start of autogenerated code - DO NOT EDIT! (description)
 WARNING: The Pod trait is **deprecated** and will removed in future release versions:
-use InitContainers trait istead.
+use InitContainers trait instead.
 
 The pod trait allows the customization of the Integration pods.
 It applies the `PodSpecTemplate` struct contained in the Integration `.spec.podTemplate` field,
diff --git a/docs/modules/traits/pages/prometheus.adoc b/docs/modules/traits/pages/prometheus.adoc
index b3fbc66e3..fc657af59 100755
--- a/docs/modules/traits/pages/prometheus.adoc
+++ b/docs/modules/traits/pages/prometheus.adoc
@@ -1,8 +1,13 @@
 = Prometheus Trait
 
 // Start of autogenerated code - DO NOT EDIT! (badges)
+[.badges]
+[.badge-key]##Deprecated since##[.badge-unsupported]##2.11.0##
 // End of autogenerated code - DO NOT EDIT! (badges)
 // Start of autogenerated code - DO NOT EDIT! (description)
+WARNING: The Prometheus trait is **deprecated** and will removed in future release versions:
+use Camel Monitor operator (https://camel-tooling.github.io/camel-dashboard/docs/installation-guide/advanced/operator/) instead.
+
 The Prometheus trait configures a Prometheus-compatible endpoint. It also creates a `PodMonitor` resource,
 so that the endpoint can be scraped automatically, when using the Prometheus operator.
 
diff --git a/e2e/common/traits/health_test.go b/e2e/common/traits/health_test.go
index 06282a8c5..7dcdb3eb9 100644
--- a/e2e/common/traits/health_test.go
+++ b/e2e/common/traits/health_test.go
@@ -107,13 +107,13 @@ func TestHealthTrait(t *testing.T) {
 					if c.Status != corev1.ConditionFalse {
 						return false
 					}
-					if len(c.Pods) != 3 {
+					if len(c.DeprecatedPods) != 3 {
 						return false
 					}
 
 					var r *v1.HealthCheckResponse
 
-					for _, pod := range c.Pods {
+					for _, pod := range c.DeprecatedPods {
 						for h := range pod.Health {
 							if pod.Health[h].Name == "camel-routes" {
 								r = &pod.Health[h]
@@ -201,15 +201,15 @@ func TestHealthTrait(t *testing.T) {
 					if c.Status != corev1.ConditionFalse {
 						return false
 					}
-					if len(c.Pods) != 1 {
+					if len(c.DeprecatedPods) != 1 {
 						return false
 					}
 
 					var r *v1.HealthCheckResponse
 
-					for h := range c.Pods[0].Health {
-						if c.Pods[0].Health[h].Name == "camel-routes" {
-							r = &c.Pods[0].Health[h]
+					for h := range c.DeprecatedPods[0].Health {
+						if c.DeprecatedPods[0].Health[h].Name == "camel-routes" {
+							r = &c.DeprecatedPods[0].Health[h]
 						}
 					}
 
@@ -288,15 +288,15 @@ func TestHealthTrait(t *testing.T) {
 					if c.Status != corev1.ConditionFalse {
 						return false
 					}
-					if len(c.Pods) != 1 {
+					if len(c.DeprecatedPods) != 1 {
 						return false
 					}
 
 					var r *v1.HealthCheckResponse
 
-					for h := range c.Pods[0].Health {
-						if c.Pods[0].Health[h].Name == "camel-routes" {
-							r = &c.Pods[0].Health[h]
+					for h := range c.DeprecatedPods[0].Health {
+						if c.DeprecatedPods[0].Health[h].Name == "camel-routes" {
+							r = &c.DeprecatedPods[0].Health[h]
 						}
 					}
 
@@ -374,15 +374,15 @@ func TestHealthTrait(t *testing.T) {
 					if c.Status != corev1.ConditionFalse {
 						return false
 					}
-					if len(c.Pods) != 1 {
+					if len(c.DeprecatedPods) != 1 {
 						return false
 					}
 
 					var r *v1.HealthCheckResponse
 
-					for h := range c.Pods[0].Health {
-						if c.Pods[0].Health[h].Name == "never-ready" {
-							r = &c.Pods[0].Health[h]
+					for h := range c.DeprecatedPods[0].Health {
+						if c.DeprecatedPods[0].Health[h].Name == "never-ready" {
+							r = &c.DeprecatedPods[0].Health[h]
 						}
 					}
 
@@ -426,15 +426,15 @@ func TestHealthTrait(t *testing.T) {
 					if c.Status != corev1.ConditionFalse {
 						return false
 					}
-					if len(c.Pods) != 1 {
+					if len(c.DeprecatedPods) != 1 {
 						return false
 					}
 
 					var r *v1.HealthCheckResponse
 
-					for h := range c.Pods[0].Health {
-						if c.Pods[0].Health[h].Name == "never-ready" && c.Pods[0].Health[h].Status == "DOWN" {
-							r = &c.Pods[0].Health[h]
+					for h := range c.DeprecatedPods[0].Health {
+						if c.DeprecatedPods[0].Health[h].Name == "never-ready" && c.DeprecatedPods[0].Health[h].Status == "DOWN" {
+							r = &c.DeprecatedPods[0].Health[h]
 						}
 					}
 
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index 00203f8cf..70a9e36fd 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -748,14 +748,14 @@ func HealthCheckResponse(podRegexp string, healthName string) func(*v1.Integrati
 			return nil
 		}
 
-		for p := range c.Pods {
-			if re.MatchString(c.Pods[p].Name) {
+		for p := range c.DeprecatedPods {
+			if re.MatchString(c.DeprecatedPods[p].Name) {
 				continue
 			}
 
-			for h := range c.Pods[p].Health {
-				if c.Pods[p].Health[h].Name == healthName {
-					return &c.Pods[p].Health[h]
+			for h := range c.DeprecatedPods[p].Health {
+				if c.DeprecatedPods[p].Health[h].Name == healthName {
+					return &c.DeprecatedPods[p].Health[h]
 				}
 			}
 
diff --git a/helm/camel-k/crds/camel-k-crds.yaml b/helm/camel-k/crds/camel-k-crds.yaml
index dc1b0809d..88d31184e 100644
--- a/helm/camel-k/crds/camel-k-crds.yaml
+++ b/helm/camel-k/crds/camel-k-crds.yaml
@@ -22518,9 +22518,12 @@ spec:
                         the transition.
                       type: string
                     pods:
-                      description: Pods collect health and conditions information
-                        from the owned PODs
+                      description: |-
+                        DeprecatedPods collect health and conditions information from the owned PODs
+
+                        Deprecated: may be removed in future releases.
                       items:
+                        description: 'Deprecated: may be removed in future releases.'
                         properties:
                           condition:
                             description: PodCondition contains details for the current
@@ -37786,6 +37789,7 @@ spec:
                       description: Pods collect health and conditions information
                         from the owned PODs
                       items:
+                        description: 'Deprecated: may be removed in future releases.'
                         properties:
                           condition:
                             description: PodCondition contains details for the current
diff --git a/pkg/apis/camel/v1/integration_types.go b/pkg/apis/camel/v1/integration_types.go
index 9917c9cfd..a74e53955 100644
--- a/pkg/apis/camel/v1/integration_types.go
+++ b/pkg/apis/camel/v1/integration_types.go
@@ -307,8 +307,10 @@ type IntegrationCondition struct {
 	Reason string `json:"reason,omitempty"`
 	// A human-readable message indicating details about the transition.
 	Message string `json:"message,omitempty"`
-	// Pods collect health and conditions information from the owned PODs
-	Pods []PodCondition `json:"pods,omitempty"`
+	// DeprecatedPods collect health and conditions information from the owned PODs
+	//
+	// Deprecated: may be removed in future releases.
+	DeprecatedPods []PodCondition `json:"pods,omitempty"`
 }
 
 // PodSpecTemplate represent a template used to deploy an Integration `Pod`.
@@ -349,6 +351,7 @@ type PodSpec struct {
 	SecurityContext corev1.PodSecurityContext `json:"securityContext,omitempty" protobuf:"bytes,34,opt,name=securityContext"`
 }
 
+// Deprecated: may be removed in future releases.
 type PodCondition struct {
 	Name      string                `json:"name,omitempty"   yaml:"name,omitempty"`
 	Condition corev1.PodCondition   `json:"condition"        yaml:"condition"`
diff --git a/pkg/apis/camel/v1/trait/pod.go b/pkg/apis/camel/v1/trait/pod.go
index 0c29e9bb6..c9106f265 100644
--- a/pkg/apis/camel/v1/trait/pod.go
+++ b/pkg/apis/camel/v1/trait/pod.go
@@ -18,7 +18,7 @@ limitations under the License.
 package trait
 
 // WARNING: The Pod trait is **deprecated** and will removed in future release versions:
-// use InitContainers trait istead.
+// use InitContainers trait instead.
 //
 // The pod trait allows the customization of the Integration pods.
 // It applies the `PodSpecTemplate` struct contained in the Integration `.spec.podTemplate` field,
diff --git a/pkg/apis/camel/v1/trait/prometheus.go b/pkg/apis/camel/v1/trait/prometheus.go
index aa1c50886..8362dcb8c 100644
--- a/pkg/apis/camel/v1/trait/prometheus.go
+++ b/pkg/apis/camel/v1/trait/prometheus.go
@@ -17,6 +17,9 @@ limitations under the License.
 
 package trait
 
+// WARNING: The Prometheus trait is **deprecated** and will removed in future release versions:
+// use Camel Monitor operator (https://camel-tooling.github.io/camel-dashboard/docs/installation-guide/advanced/operator/) instead.
+//
 // The Prometheus trait configures a Prometheus-compatible endpoint. It also creates a `PodMonitor` resource,
 // so that the endpoint can be scraped automatically, when using the Prometheus operator.
 //
@@ -31,6 +34,7 @@ package trait
 // The Prometheus trait is disabled by default.
 //
 // +camel-k:trait=prometheus.
+// +camel-k:deprecated=2.11.0.
 //
 //nolint:godoclint
 type PrometheusTrait struct {
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index b4b405bf0..3be380fab 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -1198,8 +1198,8 @@ func (in *IntegrationCondition) DeepCopyInto(out *IntegrationCondition) {
 		in, out := &in.FirstTruthyTime, &out.FirstTruthyTime
 		*out = (*in).DeepCopy()
 	}
-	if in.Pods != nil {
-		in, out := &in.Pods, &out.Pods
+	if in.DeprecatedPods != nil {
+		in, out := &in.DeprecatedPods, &out.DeprecatedPods
 		*out = make([]PodCondition, len(*in))
 		for i := range *in {
 			(*in)[i].DeepCopyInto(&(*out)[i])
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationcondition.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationcondition.go
index dfcde654d..7af91d226 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/integrationcondition.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationcondition.go
@@ -44,8 +44,10 @@ type IntegrationConditionApplyConfiguration struct {
 	Reason *string `json:"reason,omitempty"`
 	// A human-readable message indicating details about the transition.
 	Message *string `json:"message,omitempty"`
-	// Pods collect health and conditions information from the owned PODs
-	Pods []PodConditionApplyConfiguration `json:"pods,omitempty"`
+	// DeprecatedPods collect health and conditions information from the owned PODs
+	//
+	// Deprecated: may be removed in future releases.
+	DeprecatedPods []PodConditionApplyConfiguration `json:"pods,omitempty"`
 }
 
 // IntegrationConditionApplyConfiguration constructs a declarative configuration of the IntegrationCondition type for use with
@@ -110,15 +112,15 @@ func (b *IntegrationConditionApplyConfiguration) WithMessage(value string) *Inte
 	return b
 }
 
-// WithPods adds the given value to the Pods field in the declarative configuration
+// WithDeprecatedPods adds the given value to the DeprecatedPods field in the declarative configuration
 // and returns the receiver, so that objects can be build by chaining "With" function invocations.
-// If called multiple times, values provided by each call will be appended to the Pods field.
-func (b *IntegrationConditionApplyConfiguration) WithPods(values ...*PodConditionApplyConfiguration) *IntegrationConditionApplyConfiguration {
+// If called multiple times, values provided by each call will be appended to the DeprecatedPods field.
+func (b *IntegrationConditionApplyConfiguration) WithDeprecatedPods(values ...*PodConditionApplyConfiguration) *IntegrationConditionApplyConfiguration {
 	for i := range values {
 		if values[i] == nil {
-			panic("nil value passed to WithPods")
+			panic("nil value passed to WithDeprecatedPods")
 		}
-		b.Pods = append(b.Pods, *values[i])
+		b.DeprecatedPods = append(b.DeprecatedPods, *values[i])
 	}
 	return b
 }
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/podcondition.go b/pkg/client/camel/applyconfiguration/camel/v1/podcondition.go
index b2e153a91..222842b14 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/podcondition.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/podcondition.go
@@ -25,6 +25,8 @@ import (
 
 // PodConditionApplyConfiguration represents a declarative configuration of the PodCondition type for use
 // with apply.
+//
+// Deprecated: may be removed in future releases.
 type PodConditionApplyConfiguration struct {
 	Name      *string                                 `json:"name,omitempty"`
 	Condition *corev1.PodCondition                    `json:"condition,omitempty"`
diff --git a/pkg/controller/integration/monitor.go b/pkg/controller/integration/monitor.go
index de4e7869e..db446e5b1 100644
--- a/pkg/controller/integration/monitor.go
+++ b/pkg/controller/integration/monitor.go
@@ -514,12 +514,14 @@ func arePodsFailingStatuses(integration *v1.Integration, pendingPods []corev1.Po
 
 // probeReadiness calls the readiness probes of the non-ready Pods directly to retrieve insights from the Camel runtime.
 // The func return the number of readyPods, the success of the probe and any error may have happened during its execution.
+//
+//nolint:staticcheck
 func (action *monitorAction) probeReadiness(ctx context.Context, environment *trait.Environment, integration *v1.Integration, pods []corev1.Pod) (int32, bool, error) {
 	// as a default we assume the Integration is Ready
 	readyCondition := v1.IntegrationCondition{
-		Type:   v1.IntegrationConditionReady,
-		Status: corev1.ConditionTrue,
-		Pods:   make([]v1.PodCondition, len(pods)),
+		Type:           v1.IntegrationConditionReady,
+		Status:         corev1.ConditionTrue,
+		DeprecatedPods: make([]v1.PodCondition, len(pods)),
 	}
 
 	readyPods := int32(0)
@@ -531,10 +533,10 @@ func (action *monitorAction) probeReadiness(ctx context.Context, environment *tr
 
 	for i := range pods {
 		pod := &pods[i]
-		readyCondition.Pods[i].Name = pod.Name
+		readyCondition.DeprecatedPods[i].Name = pod.Name
 		for p := range pod.Status.Conditions {
 			if pod.Status.Conditions[p].Type == corev1.PodReady {
-				readyCondition.Pods[i].Condition = pod.Status.Conditions[p]
+				readyCondition.DeprecatedPods[i].Condition = pod.Status.Conditions[p]
 
 				break
 			}
@@ -599,13 +601,13 @@ func (action *monitorAction) probeReadiness(ctx context.Context, environment *tr
 			}
 
 			if errors.Is(err, context.DeadlineExceeded) {
-				readyCondition.Pods[i].Condition.Message = fmt.Sprintf("readiness probe timed out for Pod %s/%s", pod.Namespace, pod.Name)
+				readyCondition.DeprecatedPods[i].Condition.Message = fmt.Sprintf("readiness probe timed out for Pod %s/%s", pod.Namespace, pod.Name)
 				runtimeReady = false
 
 				continue
 			}
 			if !k8serrors.IsServiceUnavailable(err) {
-				readyCondition.Pods[i].Condition.Message = fmt.Sprintf("readiness probe failed for Pod %s/%s: %s", pod.Namespace, pod.Name, err.Error())
+				readyCondition.DeprecatedPods[i].Condition.Message = fmt.Sprintf("readiness probe failed for Pod %s/%s: %s", pod.Namespace, pod.Name, err.Error())
 				runtimeReady = false
 
 				continue
@@ -623,7 +625,7 @@ func (action *monitorAction) probeReadiness(ctx context.Context, environment *tr
 				runtimeReady = false
 				runtimeFailed = true
 
-				readyCondition.Pods[i].Health = append(readyCondition.Pods[i].Health, check)
+				readyCondition.DeprecatedPods[i].Health = append(readyCondition.DeprecatedPods[i].Health, check)
 			}
 		}
 	}
diff --git a/pkg/controller/pipe/monitor.go b/pkg/controller/pipe/monitor.go
index 6ce401b97..26653b0bc 100644
--- a/pkg/controller/pipe/monitor.go
+++ b/pkg/controller/pipe/monitor.go
@@ -150,10 +150,11 @@ func (action *monitorAction) Handle(ctx context.Context, pipe *v1.Pipe) (*v1.Pip
 			Message: fmt.Sprintf("Integration %q is in %q phase", it.GetName(), target.Status.Phase),
 		}
 
+		//nolint:staticcheck
 		if condition := it.Status.GetCondition(v1.IntegrationConditionReady); condition != nil {
-			if condition.Pods != nil {
-				c.Pods = make([]v1.PodCondition, 0, len(condition.Pods))
-				c.Pods = append(c.Pods, condition.Pods...)
+			if condition.DeprecatedPods != nil {
+				c.Pods = make([]v1.PodCondition, 0, len(condition.DeprecatedPods))
+				c.Pods = append(c.Pods, condition.DeprecatedPods...)
 			}
 		}
 
@@ -183,9 +184,10 @@ func setPipeReadyCondition(kb *v1.Pipe, it *v1.Integration) {
 			Message: message,
 		}
 
-		if condition.Pods != nil {
-			c.Pods = make([]v1.PodCondition, 0, len(condition.Pods))
-			c.Pods = append(c.Pods, condition.Pods...)
+		//nolint:staticcheck
+		if condition.DeprecatedPods != nil {
+			c.Pods = make([]v1.PodCondition, 0, len(condition.DeprecatedPods))
+			c.Pods = append(c.Pods, condition.DeprecatedPods...)
 		}
 
 		kb.Status.SetConditions(c)
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
index 0659b431b..782d66b9a 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_integrations.yaml
@@ -9314,9 +9314,12 @@ spec:
                         the transition.
                       type: string
                     pods:
-                      description: Pods collect health and conditions information
-                        from the owned PODs
+                      description: |-
+                        DeprecatedPods collect health and conditions information from the owned PODs
+
+                        Deprecated: may be removed in future releases.
                       items:
+                        description: 'Deprecated: may be removed in future releases.'
                         properties:
                           condition:
                             description: PodCondition contains details for the current
diff --git a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
index 63f3e41e1..e6f42f5a7 100644
--- a/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
+++ b/pkg/resources/config/crd/bases/camel.apache.org_pipes.yaml
@@ -11644,6 +11644,7 @@ spec:
                       description: Pods collect health and conditions information
                         from the owned PODs
                       items:
+                        description: 'Deprecated: may be removed in future releases.'
                         properties:
                           condition:
                             description: PodCondition contains details for the current
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index 6b7aba602..588c49059 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -52,7 +52,15 @@ func (t *prometheusTrait) Configure(e *Environment) (bool, *TraitCondition, erro
 		return false, nil, nil
 	}
 
-	return e.IntegrationInPhase(v1.IntegrationPhaseInitialization) || e.IntegrationInRunningPhases(), nil, nil
+	condition := NewIntegrationCondition(
+		"Prometheus",
+		v1.IntegrationConditionTraitInfo,
+		corev1.ConditionTrue,
+		TraitConfigurationReason,
+		"Prometheus trait is deprecated in favour of Camel Monitor Operator project",
+	)
+
+	return e.IntegrationInPhase(v1.IntegrationPhaseInitialization) || e.IntegrationInRunningPhases(), condition, nil
 }
 
 func (t *prometheusTrait) Apply(e *Environment) error {
diff --git a/pkg/trait/prometheus_test.go b/pkg/trait/prometheus_test.go
index ce893e3fb..d88d08d75 100644
--- a/pkg/trait/prometheus_test.go
+++ b/pkg/trait/prometheus_test.go
@@ -37,22 +37,20 @@ import (
 func TestConfigurePrometheusTraitInRightPhaseDoesSucceed(t *testing.T) {
 	trait, environment := createNominalPrometheusTest()
 
-	configured, condition, err := trait.Configure(environment)
+	configured, _, err := trait.Configure(environment)
 
 	require.NoError(t, err)
 	assert.True(t, configured)
-	assert.Nil(t, condition)
 }
 
 func TestConfigurePrometheusTraitInWrongPhaseDoesNotSucceed(t *testing.T) {
 	trait, environment := createNominalPrometheusTest()
 	environment.Integration.Status.Phase = v1.IntegrationPhaseBuildingKit
 
-	configured, condition, err := trait.Configure(environment)
+	configured, _, err := trait.Configure(environment)
 
 	require.NoError(t, err)
 	assert.False(t, configured)
-	assert.Nil(t, condition)
 }
 
 func TestApplyNominalPrometheusTraitDoesSucceed(t *testing.T) {
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index 83bbf7dae..25affd91a 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -29,7 +29,7 @@ const (
 	DefaultRuntimeVersion = "3.15.3"
 
 	// baseImage --
-	baseImage = "eclipse-temurin:17-jdk@sha256:9cb1a90ce9b7921fe79e544200b0ea1eab76943dd84fb284356ddb8c96e8f32a"
+	baseImage = "eclipse-temurin:17-jdk@sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23"
 
 	// LocalRepository --
 	LocalRepository = "/etc/maven/m2"
diff --git a/script/Makefile b/script/Makefile
index ca2b18140..f0f66b0bf 100644
--- a/script/Makefile
+++ b/script/Makefile
@@ -51,7 +51,7 @@ BASE_IMAGE_NAME := eclipse-temurin
 BASE_IMAGE_VERSION := 17-jdk
 OFFICIAL_IMAGE_VERSION := 17-jdk
 BASE_IMAGE_SHA_VERSION := 17-jdk
-BASE_IMAGE_SHA := sha256:9cb1a90ce9b7921fe79e544200b0ea1eab76943dd84fb284356ddb8c96e8f32a
+BASE_IMAGE_SHA := sha256:b04a8c5d46e210873ffd1af6ad5f4d62c69ed3a6736993556eae60bba1373a23
 BASE_IMAGE := $(BASE_IMAGE_NAME):$(BASE_IMAGE_VERSION)$(if $(filter $(BASE_IMAGE_VERSION),$(BASE_IMAGE_SHA_VERSION)),@$(BASE_IMAGE_SHA),)
 LOCAL_REPOSITORY := /etc/maven/m2
 OPENSHIFT_REGISTRY := image-registry.openshift-image-registry.svc:5000