You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ts...@apache.org on 2022/06/21 01:24:57 UTC

[camel-k] branch main updated: chore(trait): use k8s.io/utils/pointer instead of homemade utils for pointer operations

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

tsato 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 c2a11bcf7 chore(trait): use k8s.io/utils/pointer instead of homemade utils for pointer operations
c2a11bcf7 is described below

commit c2a11bcf705f27c7d6c75a187cf3759d99dc63f3
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Mon Jun 20 21:17:49 2022 +0900

    chore(trait): use k8s.io/utils/pointer instead of homemade utils for pointer operations
---
 addons/tracing/tracing.go      |  6 ++++--
 addons/tracing/tracing_test.go |  5 ++++-
 pkg/trait/affinity.go          | 17 ++++++++--------
 pkg/trait/affinity_test.go     | 13 ++++++------
 pkg/trait/builder.go           |  3 ++-
 pkg/trait/builder_test.go      |  3 ++-
 pkg/trait/camel.go             |  3 ++-
 pkg/trait/camel_test.go        |  5 +++--
 pkg/trait/container.go         |  9 +++++----
 pkg/trait/cron.go              | 19 +++++++++---------
 pkg/trait/dependencies.go      |  4 +++-
 pkg/trait/deployer.go          |  7 ++++---
 pkg/trait/deployment.go        |  5 +++--
 pkg/trait/deployment_test.go   |  5 +++--
 pkg/trait/environment.go       | 10 ++++++----
 pkg/trait/error_handler.go     |  4 +++-
 pkg/trait/gc.go                |  3 ++-
 pkg/trait/gc_test.go           |  5 +++--
 pkg/trait/health.go            | 17 ++++++++--------
 pkg/trait/ingress.go           |  5 +++--
 pkg/trait/ingress_test.go      |  9 +++++----
 pkg/trait/init.go              |  4 +++-
 pkg/trait/istio.go             |  3 ++-
 pkg/trait/jolokia.go           |  3 ++-
 pkg/trait/jolokia_test.go      |  7 ++++---
 pkg/trait/jvm.go               | 13 ++++++------
 pkg/trait/jvm_test.go          | 11 ++++++-----
 pkg/trait/kamelets.go          |  5 +++--
 pkg/trait/knative.go           | 19 +++++++++---------
 pkg/trait/knative_service.go   |  5 +++--
 pkg/trait/logging.go           | 10 ++++++----
 pkg/trait/mount.go             |  3 ++-
 pkg/trait/openapi.go           |  3 ++-
 pkg/trait/owner.go             |  3 ++-
 pkg/trait/pdb.go               |  3 ++-
 pkg/trait/pdb_test.go          |  3 ++-
 pkg/trait/platform.go          |  9 +++++----
 pkg/trait/platform_test.go     |  9 ++++++---
 pkg/trait/pod.go               |  3 ++-
 pkg/trait/pod_test.go          |  3 ++-
 pkg/trait/prometheus.go        |  7 ++++---
 pkg/trait/pull_secret.go       |  9 +++++----
 pkg/trait/pull_secret_test.go  |  8 +++++---
 pkg/trait/quarkus.go           |  5 +++--
 pkg/trait/quarkus_test.go      |  6 ++++--
 pkg/trait/registry.go          |  7 ++++---
 pkg/trait/route.go             |  3 ++-
 pkg/trait/service.go           |  7 ++++---
 pkg/trait/service_binding.go   |  7 ++++---
 pkg/trait/toleration.go        |  3 ++-
 pkg/trait/toleration_test.go   |  3 ++-
 pkg/trait/util.go              | 29 ---------------------------
 pkg/trait/util_test.go         | 45 ------------------------------------------
 53 files changed, 202 insertions(+), 213 deletions(-)

diff --git a/addons/tracing/tracing.go b/addons/tracing/tracing.go
index e1e6da6bf..dc3843c3c 100644
--- a/addons/tracing/tracing.go
+++ b/addons/tracing/tracing.go
@@ -18,6 +18,8 @@ limitations under the License.
 package tracing
 
 import (
+	"k8s.io/utils/pointer"
+
 	"github.com/apache/camel-k/addons/tracing/discovery"
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/trait"
@@ -76,11 +78,11 @@ func NewTracingTrait() trait.Trait {
 }
 
 func (t *tracingTrait) Configure(e *trait.Environment) (bool, error) {
-	if trait.IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
-	if trait.IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		if t.Endpoint == "" {
 			for _, locator := range discovery.TracingLocators {
 				endpoint, err := locator.FindEndpoint(e.Ctx, t.Client, t.L, e)
diff --git a/addons/tracing/tracing_test.go b/addons/tracing/tracing_test.go
index e787304f2..e81707261 100644
--- a/addons/tracing/tracing_test.go
+++ b/addons/tracing/tracing_test.go
@@ -23,14 +23,17 @@ import (
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/trait"
 	"github.com/apache/camel-k/pkg/util/camel"
+
 	"github.com/stretchr/testify/assert"
+
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 )
 
 func TestTracingTraitOnQuarkus(t *testing.T) {
 	e := createEnvironment(t, camel.QuarkusCatalog)
 	tracing := NewTracingTrait()
-	tracing.(*tracingTrait).Enabled = trait.BoolP(true)
+	tracing.(*tracingTrait).Enabled = pointer.Bool(true)
 	tracing.(*tracingTrait).Endpoint = "http://endpoint3"
 	ok, err := tracing.Configure(e)
 	assert.Nil(t, err)
diff --git a/pkg/trait/affinity.go b/pkg/trait/affinity.go
index 089e47837..87a1b622f 100644
--- a/pkg/trait/affinity.go
+++ b/pkg/trait/affinity.go
@@ -25,6 +25,7 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/labels"
 	"k8s.io/apimachinery/pkg/selection"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 )
@@ -54,17 +55,17 @@ type affinityTrait struct {
 func newAffinityTrait() Trait {
 	return &affinityTrait{
 		BaseTrait:       NewBaseTrait("affinity", 1500),
-		PodAffinity:     BoolP(false),
-		PodAntiAffinity: BoolP(false),
+		PodAffinity:     pointer.Bool(false),
+		PodAntiAffinity: pointer.Bool(false),
 	}
 }
 
 func (t *affinityTrait) Configure(e *Environment) (bool, error) {
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
-	if IsTrue(t.PodAffinity) && IsTrue(t.PodAntiAffinity) {
+	if pointer.BoolDeref(t.PodAffinity, false) && pointer.BoolDeref(t.PodAntiAffinity, false) {
 		return false, fmt.Errorf("both pod affinity and pod anti-affinity can't be set simultaneously")
 	}
 
@@ -131,7 +132,7 @@ func (t *affinityTrait) addNodeAffinity(_ *Environment, podSpec *corev1.PodSpec)
 }
 
 func (t *affinityTrait) addPodAffinity(e *Environment, podSpec *corev1.PodSpec) error {
-	if IsNilOrFalse(t.PodAffinity) && len(t.PodAffinityLabels) == 0 {
+	if !pointer.BoolDeref(t.PodAffinity, false) && len(t.PodAffinityLabels) == 0 {
 		return nil
 	}
 
@@ -156,7 +157,7 @@ func (t *affinityTrait) addPodAffinity(e *Environment, podSpec *corev1.PodSpec)
 		}
 	}
 
-	if IsTrue(t.PodAffinity) {
+	if pointer.BoolDeref(t.PodAffinity, false) {
 		labelSelectorRequirements = append(labelSelectorRequirements, metav1.LabelSelectorRequirement{
 			Key:      v1.IntegrationLabel,
 			Operator: metav1.LabelSelectorOpIn,
@@ -182,7 +183,7 @@ func (t *affinityTrait) addPodAffinity(e *Environment, podSpec *corev1.PodSpec)
 }
 
 func (t *affinityTrait) addPodAntiAffinity(e *Environment, podSpec *corev1.PodSpec) error {
-	if IsNilOrFalse(t.PodAntiAffinity) && len(t.PodAntiAffinityLabels) == 0 {
+	if !pointer.BoolDeref(t.PodAntiAffinity, false) && len(t.PodAntiAffinityLabels) == 0 {
 		return nil
 	}
 
@@ -207,7 +208,7 @@ func (t *affinityTrait) addPodAntiAffinity(e *Environment, podSpec *corev1.PodSp
 		}
 	}
 
-	if IsTrue(t.PodAntiAffinity) {
+	if pointer.BoolDeref(t.PodAntiAffinity, false) {
 		labelSelectorRequirements = append(labelSelectorRequirements, metav1.LabelSelectorRequirement{
 			Key:      v1.IntegrationLabel,
 			Operator: metav1.LabelSelectorOpIn,
diff --git a/pkg/trait/affinity_test.go b/pkg/trait/affinity_test.go
index 9d49406fe..c6cfc8884 100644
--- a/pkg/trait/affinity_test.go
+++ b/pkg/trait/affinity_test.go
@@ -24,6 +24,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 )
@@ -40,8 +41,8 @@ func TestConfigureAffinityTraitDoesSucceed(t *testing.T) {
 func TestConfigureAffinityTraitWithConflictingAffinitiesFails(t *testing.T) {
 	affinityTrait := createNominalAffinityTest()
 	environment, _ := createNominalDeploymentTraitTest()
-	affinityTrait.PodAffinity = BoolP(true)
-	affinityTrait.PodAntiAffinity = BoolP(true)
+	affinityTrait.PodAffinity = pointer.Bool(true)
+	affinityTrait.PodAntiAffinity = pointer.Bool(true)
 	configured, err := affinityTrait.Configure(environment)
 
 	assert.False(t, configured)
@@ -50,7 +51,7 @@ func TestConfigureAffinityTraitWithConflictingAffinitiesFails(t *testing.T) {
 
 func TestConfigureDisabledAffinityTraitFails(t *testing.T) {
 	affinityTrait := createNominalAffinityTest()
-	affinityTrait.Enabled = BoolP(false)
+	affinityTrait.Enabled = pointer.Bool(false)
 	environment, _ := createNominalDeploymentTraitTest()
 	configured, err := affinityTrait.Configure(environment)
 
@@ -120,7 +121,7 @@ func testApplyNodeAffinityLabelsDoesSucceed(t *testing.T, trait *affinityTrait,
 
 func TestApplyPodAntiAffinityLabelsDoesSucceed(t *testing.T) {
 	affinityTrait := createNominalAffinityTest()
-	affinityTrait.PodAntiAffinity = BoolP(true)
+	affinityTrait.PodAntiAffinity = pointer.Bool(true)
 	affinityTrait.PodAntiAffinityLabels = []string{"criteria != value"}
 
 	environment, deployment := createNominalDeploymentTraitTest()
@@ -155,7 +156,7 @@ func testApplyPodAntiAffinityLabelsDoesSucceed(t *testing.T, trait *affinityTrai
 
 func TestApplyPodAffinityLabelsDoesSucceed(t *testing.T) {
 	affinityTrait := createNominalAffinityTest()
-	affinityTrait.PodAffinity = BoolP(true)
+	affinityTrait.PodAffinity = pointer.Bool(true)
 	affinityTrait.PodAffinityLabels = []string{"!criteria"}
 
 	environment, deployment := createNominalDeploymentTraitTest()
@@ -189,7 +190,7 @@ func testApplyPodAffinityLabelsDoesSucceed(t *testing.T, trait *affinityTrait, e
 
 func createNominalAffinityTest() *affinityTrait {
 	trait, _ := newAffinityTrait().(*affinityTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	return trait
 }
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index 9b7ea2e64..97940469b 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -22,6 +22,7 @@ import (
 	"sort"
 
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/builder"
@@ -58,7 +59,7 @@ func (t *builderTrait) InfluencesKit() bool {
 }
 
 func (t *builderTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 577687614..ad7f8e861 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -25,6 +25,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/camel"
@@ -165,7 +166,7 @@ func TestMavenPropertyBuilderTrait(t *testing.T) {
 
 func createNominalBuilderTraitTest() *builderTrait {
 	builderTrait, _ := newBuilderTrait().(*builderTrait)
-	builderTrait.Enabled = BoolP(true)
+	builderTrait.Enabled = pointer.Bool(true)
 
 	return builderTrait
 }
diff --git a/pkg/trait/camel.go b/pkg/trait/camel.go
index f774421f7..f6346fb06 100644
--- a/pkg/trait/camel.go
+++ b/pkg/trait/camel.go
@@ -26,6 +26,7 @@ import (
 	"github.com/pkg/errors"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
@@ -52,7 +53,7 @@ func newCamelTrait() Trait {
 }
 
 func (t *camelTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, errors.New("trait camel cannot be disabled")
 	}
 
diff --git a/pkg/trait/camel_test.go b/pkg/trait/camel_test.go
index fb2eb2981..58d8a4bfb 100644
--- a/pkg/trait/camel_test.go
+++ b/pkg/trait/camel_test.go
@@ -23,6 +23,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/camel"
@@ -42,7 +43,7 @@ func TestConfigureEnabledCamelTraitSucceeds(t *testing.T) {
 
 func TestConfigureDisabledCamelTraitFails(t *testing.T) {
 	trait, environment := createNominalCamelTest()
-	trait.Enabled = BoolP(false)
+	trait.Enabled = pointer.Bool(false)
 
 	configured, err := trait.Configure(environment)
 	assert.NotNil(t, err)
@@ -74,7 +75,7 @@ func createNominalCamelTest() (*camelTrait, *Environment) {
 	client, _ := test.NewFakeClient()
 
 	trait, _ := newCamelTrait().(*camelTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	environment := &Environment{
 		CamelCatalog: &camel.RuntimeCatalog{
diff --git a/pkg/trait/container.go b/pkg/trait/container.go
index 0f61820e6..7c3bc9019 100644
--- a/pkg/trait/container.go
+++ b/pkg/trait/container.go
@@ -26,6 +26,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/resource"
 	"k8s.io/apimachinery/pkg/util/intstr"
+	"k8s.io/utils/pointer"
 
 	serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -134,14 +135,14 @@ func newContainerTrait() Trait {
 		ServicePort:               defaultServicePort,
 		ServicePortName:           defaultContainerPortName,
 		Name:                      defaultContainerName,
-		DeprecatedProbesEnabled:   BoolP(false),
+		DeprecatedProbesEnabled:   pointer.Bool(false),
 		DeprecatedLivenessScheme:  string(corev1.URISchemeHTTP),
 		DeprecatedReadinessScheme: string(corev1.URISchemeHTTP),
 	}
 }
 
 func (t *containerTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
@@ -149,7 +150,7 @@ func (t *containerTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		if t.Expose == nil {
 			e := e.Resources.GetServiceForIntegration(e.Integration) != nil
 			t.Expose = &e
@@ -251,7 +252,7 @@ func (t *containerTrait) configureContainer(e *Environment) error {
 	}
 
 	t.configureResources(e, &container)
-	if IsTrue(t.Expose) {
+	if pointer.BoolDeref(t.Expose, false) {
 		t.configureService(e, &container)
 	}
 	t.configureCapabilities(e)
diff --git a/pkg/trait/cron.go b/pkg/trait/cron.go
index dbfeb556e..13c10ba8c 100644
--- a/pkg/trait/cron.go
+++ b/pkg/trait/cron.go
@@ -27,6 +27,7 @@ import (
 	batchv1beta1 "k8s.io/api/batch/v1beta1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/metadata"
@@ -122,7 +123,7 @@ func newCronTrait() Trait {
 }
 
 func (t *cronTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		e.Integration.Status.SetCondition(
 			v1.IntegrationConditionCronJobAvailable,
 			corev1.ConditionFalse,
@@ -148,7 +149,7 @@ func (t *cronTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		globalCron, err := t.getGlobalCron(e)
 		if err != nil {
 			e.Integration.Status.SetErrorCondition(
@@ -183,7 +184,7 @@ func (t *cronTrait) Configure(e *Environment) (bool, error) {
 			}
 			for _, fromURI := range fromURIs {
 				if uri.GetComponent(fromURI) == genericCronComponent {
-					t.Fallback = BoolP(true)
+					t.Fallback = pointer.Bool(true)
 					break
 				}
 			}
@@ -191,7 +192,7 @@ func (t *cronTrait) Configure(e *Environment) (bool, error) {
 	}
 
 	// Fallback strategy can be implemented in any other controller
-	if IsTrue(t.Fallback) {
+	if pointer.BoolDeref(t.Fallback, false) {
 		if e.IntegrationInPhase(v1.IntegrationPhaseDeploying) {
 			e.Integration.Status.SetCondition(
 				v1.IntegrationConditionCronJobAvailable,
@@ -232,7 +233,7 @@ func (t *cronTrait) Apply(e *Environment) error {
 	if e.IntegrationInPhase(v1.IntegrationPhaseInitialization) {
 		util.StringSliceUniqueAdd(&e.Integration.Status.Capabilities, v1.CapabilityCron)
 
-		if IsTrue(t.Fallback) {
+		if pointer.BoolDeref(t.Fallback, false) {
 			fallbackArtifact := e.CamelCatalog.GetArtifactByScheme(genericCronComponentFallbackScheme)
 			if fallbackArtifact == nil {
 				return fmt.Errorf("no fallback artifact for scheme %q has been found in camel catalog", genericCronComponentFallbackScheme)
@@ -242,7 +243,7 @@ func (t *cronTrait) Apply(e *Environment) error {
 		}
 	}
 
-	if IsNilOrFalse(t.Fallback) && e.IntegrationInRunningPhases() {
+	if !pointer.BoolDeref(t.Fallback, false) && e.IntegrationInRunningPhases() {
 		if e.ApplicationProperties == nil {
 			e.ApplicationProperties = make(map[string]string)
 		}
@@ -324,16 +325,16 @@ func (t *cronTrait) getCronJobFor(e *Environment) *batchv1beta1.CronJob {
 // SelectControllerStrategy can be used to check if a CronJob can be generated given the integration and trait settings.
 func (t *cronTrait) SelectControllerStrategy(e *Environment) (*ControllerStrategy, error) {
 	cronStrategy := ControllerStrategyCronJob
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return nil, nil
 	}
-	if IsTrue(t.Fallback) {
+	if pointer.BoolDeref(t.Fallback, false) {
 		return nil, nil
 	}
 	if t.Schedule != "" {
 		return &cronStrategy, nil
 	}
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		globalCron, err := t.getGlobalCron(e)
 		if err == nil && globalCron != nil {
 			return &cronStrategy, nil
diff --git a/pkg/trait/dependencies.go b/pkg/trait/dependencies.go
index 00b039179..b8cf3e4d4 100644
--- a/pkg/trait/dependencies.go
+++ b/pkg/trait/dependencies.go
@@ -20,6 +20,8 @@ package trait
 import (
 	"github.com/scylladb/go-set/strset"
 
+	"k8s.io/utils/pointer"
+
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/metadata"
 	"github.com/apache/camel-k/pkg/util"
@@ -41,7 +43,7 @@ func newDependenciesTrait() Trait {
 }
 
 func (t *dependenciesTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/deployer.go b/pkg/trait/deployer.go
index 3dfb036ef..ca40062d7 100644
--- a/pkg/trait/deployer.go
+++ b/pkg/trait/deployer.go
@@ -27,6 +27,7 @@ import (
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/types"
+	"k8s.io/utils/pointer"
 
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
@@ -57,7 +58,7 @@ func newDeployerTrait() Trait {
 }
 
 func (t *deployerTrait) Configure(e *Environment) (bool, error) {
-	return e.Integration != nil && IsNilOrTrue(t.Enabled), nil
+	return e.Integration != nil && pointer.BoolDeref(t.Enabled, true), nil
 }
 
 func (t *deployerTrait) Apply(e *Environment) error {
@@ -71,7 +72,7 @@ func (t *deployerTrait) Apply(e *Environment) error {
 			// check its list of accepted MIME types.
 			// As a simpler solution, we fall back to client-side apply at the first
 			// 415 error, and assume server-side apply is not available globally.
-			if hasServerSideApply && IsNilOrTrue(t.UseSSA) {
+			if hasServerSideApply && pointer.BoolDeref(t.UseSSA, true) {
 				err := t.serverSideApply(env, resource)
 				switch {
 				case err == nil:
@@ -162,7 +163,7 @@ func isIncompatibleServerError(err error) bool {
 }
 
 func (t *deployerTrait) SelectControllerStrategy(e *Environment) (*ControllerStrategy, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return nil, nil
 	}
 	if t.Kind != "" {
diff --git a/pkg/trait/deployment.go b/pkg/trait/deployment.go
index c237732c8..d0a060921 100644
--- a/pkg/trait/deployment.go
+++ b/pkg/trait/deployment.go
@@ -23,6 +23,7 @@ import (
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/label"
@@ -48,7 +49,7 @@ func newDeploymentTrait() Trait {
 }
 
 func (t *deploymentTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		e.Integration.Status.SetCondition(
 			v1.IntegrationConditionDeploymentAvailable,
 			corev1.ConditionFalse,
@@ -90,7 +91,7 @@ func (t *deploymentTrait) Configure(e *Environment) (bool, error) {
 }
 
 func (t *deploymentTrait) SelectControllerStrategy(e *Environment) (*ControllerStrategy, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return nil, nil
 	}
 	deploymentStrategy := ControllerStrategyDeployment
diff --git a/pkg/trait/deployment_test.go b/pkg/trait/deployment_test.go
index 67eaa2e7e..6dc2dbd57 100644
--- a/pkg/trait/deployment_test.go
+++ b/pkg/trait/deployment_test.go
@@ -25,6 +25,7 @@ import (
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
@@ -33,7 +34,7 @@ import (
 
 func TestConfigureDisabledDeploymentTraitDoesNotSucceed(t *testing.T) {
 	deploymentTrait, environment := createNominalDeploymentTest()
-	deploymentTrait.Enabled = BoolP(false)
+	deploymentTrait.Enabled = pointer.Bool(false)
 
 	configured, err := deploymentTrait.Configure(environment)
 
@@ -148,7 +149,7 @@ func TestApplyDeploymentTraitWithProgressDeadline(t *testing.T) {
 
 func createNominalDeploymentTest() (*deploymentTrait, *Environment) {
 	trait, _ := newDeploymentTrait().(*deploymentTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 	trait.Client, _ = test.NewFakeClient(&appsv1.Deployment{
 		ObjectMeta: metav1.ObjectMeta{
 			Name:      "integration-name",
diff --git a/pkg/trait/environment.go b/pkg/trait/environment.go
index 0412f1758..ba8688a32 100644
--- a/pkg/trait/environment.go
+++ b/pkg/trait/environment.go
@@ -20,6 +20,8 @@ package trait
 import (
 	"os"
 
+	"k8s.io/utils/pointer"
+
 	"github.com/apache/camel-k/pkg/util/camel"
 	"github.com/apache/camel-k/pkg/util/defaults"
 	"github.com/apache/camel-k/pkg/util/envvar"
@@ -62,12 +64,12 @@ const (
 func newEnvironmentTrait() Trait {
 	return &environmentTrait{
 		BaseTrait:     NewBaseTrait("environment", 800),
-		ContainerMeta: BoolP(true),
+		ContainerMeta: pointer.Bool(true),
 	}
 }
 
 func (t *environmentTrait) Configure(e *Environment) (bool, error) {
-	if IsNilOrTrue(t.Enabled) {
+	if pointer.BoolDeref(t.Enabled, true) {
 		return e.IntegrationInRunningPhases(), nil
 	}
 
@@ -83,12 +85,12 @@ func (t *environmentTrait) Apply(e *Environment) error {
 	envvar.SetVal(&e.EnvVars, envVarMountPathConfigMaps, camel.ConfigConfigmapsMountPath)
 	envvar.SetVal(&e.EnvVars, envVarMountPathSecrets, camel.ConfigSecretsMountPath)
 
-	if IsNilOrTrue(t.ContainerMeta) {
+	if pointer.BoolDeref(t.ContainerMeta, true) {
 		envvar.SetValFrom(&e.EnvVars, envVarNamespace, "metadata.namespace")
 		envvar.SetValFrom(&e.EnvVars, envVarPodName, "metadata.name")
 	}
 
-	if IsNilOrTrue(t.HTTPProxy) {
+	if pointer.BoolDeref(t.HTTPProxy, true) {
 		if HTTPProxy, ok := os.LookupEnv("HTTP_PROXY"); ok {
 			envvar.SetVal(&e.EnvVars, "HTTP_PROXY", HTTPProxy)
 		}
diff --git a/pkg/trait/error_handler.go b/pkg/trait/error_handler.go
index 590f73757..faa26a662 100644
--- a/pkg/trait/error_handler.go
+++ b/pkg/trait/error_handler.go
@@ -23,6 +23,8 @@ import (
 
 	"gopkg.in/yaml.v2"
 
+	"k8s.io/utils/pointer"
+
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
 	"github.com/apache/camel-k/pkg/util"
@@ -50,7 +52,7 @@ func (t *errorHandlerTrait) IsPlatformTrait() bool {
 }
 
 func (t *errorHandlerTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/gc.go b/pkg/trait/gc.go
index ef20ae7b1..cd8fc1bda 100644
--- a/pkg/trait/gc.go
+++ b/pkg/trait/gc.go
@@ -40,6 +40,7 @@ import (
 	"k8s.io/client-go/discovery"
 	"k8s.io/client-go/discovery/cached/disk"
 	"k8s.io/client-go/discovery/cached/memory"
+	"k8s.io/utils/pointer"
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
@@ -80,7 +81,7 @@ func newGarbageCollectorTrait() Trait {
 }
 
 func (t *garbageCollectorTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/gc_test.go b/pkg/trait/gc_test.go
index db8322f4e..10dd4462c 100644
--- a/pkg/trait/gc_test.go
+++ b/pkg/trait/gc_test.go
@@ -24,6 +24,7 @@ import (
 	"github.com/stretchr/testify/assert"
 
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 )
 
 func TestConfigureGarbageCollectorTraitDoesSucceed(t *testing.T) {
@@ -36,7 +37,7 @@ func TestConfigureGarbageCollectorTraitDoesSucceed(t *testing.T) {
 
 func TestConfigureDisabledGarbageCollectorTraitDoesNotSucceed(t *testing.T) {
 	gcTrait, environment := createNominalGarbageCollectorTest()
-	gcTrait.Enabled = BoolP(false)
+	gcTrait.Enabled = pointer.Bool(false)
 
 	configured, err := gcTrait.Configure(environment)
 
@@ -78,7 +79,7 @@ func TestApplyGarbageCollectorTraitDuringInitializationPhaseSkipPostActions(t *t
 
 func createNominalGarbageCollectorTest() (*garbageCollectorTrait, *Environment) {
 	trait, _ := newGarbageCollectorTrait().(*garbageCollectorTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	environment := &Environment{
 		Catalog: NewCatalog(nil),
diff --git a/pkg/trait/health.go b/pkg/trait/health.go
index f5943a083..0dd2f26fa 100644
--- a/pkg/trait/health.go
+++ b/pkg/trait/health.go
@@ -23,6 +23,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/util/intstr"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util"
@@ -85,12 +86,12 @@ func (t *healthTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		// Source the configuration from the container trait to maintain backward compatibility.
 		// This can be removed once the deprecated properties related to health probes are actually
 		// removed from the container trait.
 		if trait := e.Catalog.GetTrait(containerTraitID); trait != nil {
-			if container, ok := trait.(*containerTrait); ok && IsNilOrTrue(container.Enabled) && IsTrue(container.DeprecatedProbesEnabled) {
+			if container, ok := trait.(*containerTrait); ok && pointer.BoolDeref(container.Enabled, true) && pointer.BoolDeref(container.DeprecatedProbesEnabled, false) {
 				config, err := json.Marshal(container)
 				if err != nil {
 					return false, err
@@ -99,9 +100,9 @@ func (t *healthTrait) Configure(e *Environment) (bool, error) {
 				if err != nil {
 					return false, err
 				}
-				t.Enabled = BoolP(true)
-				t.LivenessProbeEnabled = BoolP(true)
-				t.ReadinessProbeEnabled = BoolP(true)
+				t.Enabled = pointer.Bool(true)
+				t.LivenessProbeEnabled = pointer.Bool(true)
+				t.ReadinessProbeEnabled = pointer.Bool(true)
 				return true, err
 			}
 		}
@@ -123,7 +124,7 @@ func (t *healthTrait) Apply(e *Environment) error {
 		return nil
 	}
 
-	if IsNilOrFalse(t.LivenessProbeEnabled) && IsFalse(t.ReadinessProbeEnabled) {
+	if !pointer.BoolDeref(t.LivenessProbeEnabled, false) && !pointer.BoolDeref(t.ReadinessProbeEnabled, true) {
 		return nil
 	}
 
@@ -140,10 +141,10 @@ func (t *healthTrait) Apply(e *Environment) error {
 		port = &p
 	}
 
-	if IsTrue(t.LivenessProbeEnabled) {
+	if pointer.BoolDeref(t.LivenessProbeEnabled, false) {
 		container.LivenessProbe = t.newLivenessProbe(port, defaultLivenessProbePath)
 	}
-	if IsNilOrTrue(t.ReadinessProbeEnabled) {
+	if pointer.BoolDeref(t.ReadinessProbeEnabled, true) {
 		container.ReadinessProbe = t.newReadinessProbe(port, defaultReadinessProbePath)
 	}
 
diff --git a/pkg/trait/ingress.go b/pkg/trait/ingress.go
index a5e2b7e89..66dbcf802 100644
--- a/pkg/trait/ingress.go
+++ b/pkg/trait/ingress.go
@@ -24,6 +24,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	networking "k8s.io/api/networking/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 )
@@ -55,7 +56,7 @@ func (t *ingressTrait) IsAllowedInProfile(profile v1.TraitProfile) bool {
 }
 
 func (t *ingressTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		e.Integration.Status.SetCondition(
 			v1.IntegrationConditionExposureAvailable,
 			corev1.ConditionFalse,
@@ -69,7 +70,7 @@ func (t *ingressTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		hasService := e.Resources.GetUserServiceForIntegration(e.Integration) != nil
 		hasHost := t.Host != ""
 		enabled := hasService && hasHost
diff --git a/pkg/trait/ingress_test.go b/pkg/trait/ingress_test.go
index 630935757..240346489 100644
--- a/pkg/trait/ingress_test.go
+++ b/pkg/trait/ingress_test.go
@@ -26,6 +26,7 @@ import (
 	networking "k8s.io/api/networking/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
@@ -42,7 +43,7 @@ func TestConfigureIngressTraitDoesSucceed(t *testing.T) {
 
 func TestConfigureDisabledIngressTraitDoesNotSucceed(t *testing.T) {
 	ingressTrait, environment := createNominalIngressTest()
-	ingressTrait.Enabled = BoolP(false)
+	ingressTrait.Enabled = pointer.Bool(false)
 
 	configured, err := ingressTrait.Configure(environment)
 
@@ -66,7 +67,7 @@ func TestConfigureIngressTraitInWrongPhaseDoesNotSucceed(t *testing.T) {
 
 func TestConfigureAutoIngressTraitWithoutUserServiceDoesNotSucceed(t *testing.T) {
 	ingressTrait, environment := createNominalIngressTest()
-	ingressTrait.Auto = BoolP(true)
+	ingressTrait.Auto = pointer.Bool(true)
 	environment.Resources = kubernetes.NewCollection()
 
 	configured, err := ingressTrait.Configure(environment)
@@ -154,8 +155,8 @@ func TestApplyIngressTraitDoesSucceed(t *testing.T) {
 
 func createNominalIngressTest() (*ingressTrait, *Environment) {
 	trait, _ := newIngressTrait().(*ingressTrait)
-	trait.Enabled = BoolP(true)
-	trait.Auto = BoolP(false)
+	trait.Enabled = pointer.Bool(true)
+	trait.Auto = pointer.Bool(false)
 	trait.Host = "hostname"
 
 	environment := &Environment{
diff --git a/pkg/trait/init.go b/pkg/trait/init.go
index 14f0ca6e2..7076c6a15 100644
--- a/pkg/trait/init.go
+++ b/pkg/trait/init.go
@@ -22,6 +22,8 @@ import (
 
 	"github.com/pkg/errors"
 
+	"k8s.io/utils/pointer"
+
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util"
 	"github.com/apache/camel-k/pkg/util/dsl"
@@ -40,7 +42,7 @@ func NewInitTrait() Trait {
 }
 
 func (t *initTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, errors.New("trait init cannot be disabled")
 	}
 
diff --git a/pkg/trait/istio.go b/pkg/trait/istio.go
index 58b654747..1ad3daacb 100644
--- a/pkg/trait/istio.go
+++ b/pkg/trait/istio.go
@@ -21,6 +21,7 @@ import (
 	"strconv"
 
 	appsv1 "k8s.io/api/apps/v1"
+	"k8s.io/utils/pointer"
 
 	servingv1 "knative.dev/serving/pkg/apis/serving/v1"
 )
@@ -50,7 +51,7 @@ func newIstioTrait() Trait {
 }
 
 func (t *istioTrait) Configure(e *Environment) (bool, error) {
-	if IsTrue(t.Enabled) {
+	if pointer.BoolDeref(t.Enabled, false) {
 		return e.IntegrationInRunningPhases(), nil
 	}
 
diff --git a/pkg/trait/jolokia.go b/pkg/trait/jolokia.go
index b96a70d4e..ca2725430 100644
--- a/pkg/trait/jolokia.go
+++ b/pkg/trait/jolokia.go
@@ -23,6 +23,7 @@ import (
 	"strings"
 
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util"
@@ -76,7 +77,7 @@ func newJolokiaTrait() Trait {
 }
 
 func (t *jolokiaTrait) Configure(e *Environment) (bool, error) {
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/jolokia_test.go b/pkg/trait/jolokia_test.go
index a02a2deca..13a07c09d 100644
--- a/pkg/trait/jolokia_test.go
+++ b/pkg/trait/jolokia_test.go
@@ -24,6 +24,7 @@ import (
 
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
@@ -207,7 +208,7 @@ func TestSetDefaultBoolJolokiaOptionShouldSucceed(t *testing.T) {
 func TestSetDefaultBoolJolokiaOptionShouldNotOverrideExistingValue(t *testing.T) {
 	trait, _ := newJolokiaTrait().(*jolokiaTrait)
 	options := map[string]string{}
-	option := BoolP(false)
+	option := pointer.Bool(false)
 
 	trait.setDefaultJolokiaOption(options, &option, "key", true)
 
@@ -250,7 +251,7 @@ func TestAddBoolPointerOptionToJolokiaOptions(t *testing.T) {
 	trait, _ := newJolokiaTrait().(*jolokiaTrait)
 	options := map[string]string{}
 
-	trait.addToJolokiaOptions(options, "key", BoolP(false))
+	trait.addToJolokiaOptions(options, "key", pointer.Bool(false))
 
 	assert.Len(t, options, 1)
 	assert.Equal(t, "false", options["key"])
@@ -267,7 +268,7 @@ func TestAddWrongTypeOptionToJolokiaOptionsDoesNothing(t *testing.T) {
 
 func createNominalJolokiaTest() (*jolokiaTrait, *Environment) {
 	trait, _ := newJolokiaTrait().(*jolokiaTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	environment := &Environment{
 		Catalog: NewCatalog(nil),
diff --git a/pkg/trait/jvm.go b/pkg/trait/jvm.go
index e1bc3e4fc..58fda571b 100644
--- a/pkg/trait/jvm.go
+++ b/pkg/trait/jvm.go
@@ -32,6 +32,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/resource"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
@@ -65,12 +66,12 @@ func newJvmTrait() Trait {
 	return &jvmTrait{
 		BaseTrait:    NewBaseTrait("jvm", 2000),
 		DebugAddress: "*:5005",
-		PrintCommand: BoolP(true),
+		PrintCommand: pointer.Bool(true),
 	}
 }
 
 func (t *jvmTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
@@ -80,7 +81,7 @@ func (t *jvmTrait) Configure(e *Environment) (bool, error) {
 
 	if trait := e.Catalog.GetTrait(quarkusTraitID); trait != nil {
 		// The JVM trait must be disabled in case the current IntegrationKit corresponds to a native build
-		if quarkus, ok := trait.(*quarkusTrait); ok && IsNilOrTrue(quarkus.Enabled) && quarkus.isNativeIntegration(e) {
+		if quarkus, ok := trait.(*quarkusTrait); ok && pointer.BoolDeref(quarkus.Enabled, true) && quarkus.isNativeIntegration(e) {
 			return false, nil
 		}
 	}
@@ -145,9 +146,9 @@ func (t *jvmTrait) Apply(e *Environment) error {
 	args := container.Args
 
 	// Remote debugging
-	if IsTrue(t.Debug) {
+	if pointer.BoolDeref(t.Debug, false) {
 		suspend := "n"
-		if IsTrue(t.DebugSuspend) {
+		if pointer.BoolDeref(t.DebugSuspend, false) {
 			suspend = "y"
 		}
 		args = append(args,
@@ -250,7 +251,7 @@ func (t *jvmTrait) Apply(e *Environment) error {
 
 	args = append(args, e.CamelCatalog.Runtime.ApplicationClass)
 
-	if IsNilOrTrue(t.PrintCommand) {
+	if pointer.BoolDeref(t.PrintCommand, true) {
 		args = append([]string{"exec", "java"}, args...)
 		container.Command = []string{"/bin/sh", "-c"}
 		cmd := strings.Join(args, " ")
diff --git a/pkg/trait/jvm_test.go b/pkg/trait/jvm_test.go
index 760dadf97..8fe4b772f 100644
--- a/pkg/trait/jvm_test.go
+++ b/pkg/trait/jvm_test.go
@@ -29,6 +29,7 @@ import (
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -67,7 +68,7 @@ func TestConfigureJvmTraitInWrongIntegrationKitPhaseDoesNotSucceed(t *testing.T)
 
 func TestConfigureJvmDisabledTraitDoesNotSucceed(t *testing.T) {
 	trait, environment := createNominalJvmTest(v1.IntegrationKitTypePlatform)
-	trait.Enabled = BoolP(false)
+	trait.Enabled = pointer.Bool(false)
 
 	configured, err := trait.Configure(environment)
 	assert.Nil(t, err)
@@ -146,8 +147,8 @@ func TestApplyJvmTraitWithKNativeResource(t *testing.T) {
 
 func TestApplyJvmTraitWithDebugEnabled(t *testing.T) {
 	trait, environment := createNominalJvmTest(v1.IntegrationKitTypePlatform)
-	trait.Debug = BoolP(true)
-	trait.DebugSuspend = BoolP(true)
+	trait.Debug = pointer.Bool(true)
+	trait.DebugSuspend = pointer.Bool(true)
 
 	d := appsv1.Deployment{
 		Spec: appsv1.DeploymentSpec{
@@ -255,8 +256,8 @@ func createNominalJvmTest(kitType string) (*jvmTrait, *Environment) {
 	client, _ := test.NewFakeClient()
 
 	trait, _ := newJvmTrait().(*jvmTrait)
-	trait.Enabled = BoolP(true)
-	trait.PrintCommand = BoolP(false)
+	trait.Enabled = pointer.Bool(true)
+	trait.PrintCommand = pointer.Bool(false)
 	trait.Client = client
 
 	environment := &Environment{
diff --git a/pkg/trait/kamelets.go b/pkg/trait/kamelets.go
index f8873cd7d..9109235d8 100644
--- a/pkg/trait/kamelets.go
+++ b/pkg/trait/kamelets.go
@@ -26,6 +26,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
@@ -80,7 +81,7 @@ func (t *kameletsTrait) IsPlatformTrait() bool {
 }
 
 func (t *kameletsTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
@@ -88,7 +89,7 @@ func (t *kameletsTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		kamelets, err := kamelets.ExtractKameletFromSources(e.Ctx, e.Client, e.CamelCatalog, e.Resources, e.Integration)
 		if err != nil {
 			return false, err
diff --git a/pkg/trait/knative.go b/pkg/trait/knative.go
index f3b611bb0..1ec29109f 100644
--- a/pkg/trait/knative.go
+++ b/pkg/trait/knative.go
@@ -29,6 +29,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
 	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/utils/pointer"
 
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
@@ -104,7 +105,7 @@ func (t *knativeTrait) IsAllowedInProfile(profile v1.TraitProfile) bool {
 }
 
 func (t *knativeTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
@@ -112,7 +113,7 @@ func (t *knativeTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		if len(t.ChannelSources) == 0 {
 			items := make([]string, 0)
 			sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, e.Client, e.Integration, e.Resources)
@@ -193,7 +194,7 @@ func (t *knativeTrait) Configure(e *Environment) (bool, error) {
 		}
 		if t.FilterSourceChannels == nil {
 			// Filtering is no longer used by default
-			t.FilterSourceChannels = BoolP(false)
+			t.FilterSourceChannels = pointer.Bool(false)
 		}
 		if t.SinkBinding == nil {
 			allowed := t.isSinkBindingAllowed(e)
@@ -205,7 +206,7 @@ func (t *knativeTrait) Configure(e *Environment) (bool, error) {
 }
 
 func (t *knativeTrait) Apply(e *Environment) error {
-	if IsTrue(t.SinkBinding) {
+	if pointer.BoolDeref(t.SinkBinding, false) {
 		util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-k-knative")
 	}
 
@@ -263,7 +264,7 @@ func (t *knativeTrait) configureChannels(e *Environment, env *knativeapi.CamelEn
 				knativeapi.CamelMetaKnativeKind:       ref.Kind,
 				knativeapi.CamelMetaKnativeReply:      "false",
 			}
-			if IsTrue(t.FilterSourceChannels) {
+			if pointer.BoolDeref(t.FilterSourceChannels, false) {
 				meta[knativeapi.CamelMetaFilterPrefix+knativeHistoryHeader] = loc.Host
 			}
 			svc := knativeapi.CamelServiceDefinition{
@@ -284,7 +285,7 @@ func (t *knativeTrait) configureChannels(e *Environment, env *knativeapi.CamelEn
 		return err
 	}
 
-	if IsNilOrFalse(t.SinkBinding) {
+	if !pointer.BoolDeref(t.SinkBinding, false) {
 		// Sinks
 		err = t.ifServiceMissingDo(e, env, t.ChannelSinks, knativeapi.CamelServiceTypeChannel, knativeapi.CamelEndpointKindSink,
 			func(ref *corev1.ObjectReference, serviceURI string, urlProvider func() (*url.URL, error)) error {
@@ -344,7 +345,7 @@ func (t *knativeTrait) configureEndpoints(e *Environment, env *knativeapi.CamelE
 	}
 
 	// Sinks
-	if IsNilOrFalse(t.SinkBinding) {
+	if !pointer.BoolDeref(t.SinkBinding, false) {
 		err := t.ifServiceMissingDo(e, env, t.EndpointSinks, knativeapi.CamelServiceTypeEndpoint, knativeapi.CamelEndpointKindSink,
 			func(ref *corev1.ObjectReference, serviceURI string, urlProvider func() (*url.URL, error)) error {
 				loc, err := urlProvider()
@@ -402,7 +403,7 @@ func (t *knativeTrait) configureEvents(e *Environment, env *knativeapi.CamelEnvi
 	}
 
 	// Sinks
-	if IsNilOrFalse(t.SinkBinding) {
+	if !pointer.BoolDeref(t.SinkBinding, false) {
 		err = t.ifServiceMissingDo(e, env, t.EventSinks, knativeapi.CamelServiceTypeEvent, knativeapi.CamelEndpointKindSink,
 			func(ref *corev1.ObjectReference, serviceURI string, urlProvider func() (*url.URL, error)) error {
 				loc, err := urlProvider()
@@ -443,7 +444,7 @@ func (t *knativeTrait) isSinkBindingAllowed(e *Environment) bool {
 }
 
 func (t *knativeTrait) configureSinkBinding(e *Environment, env *knativeapi.CamelEnvironment) error {
-	if IsNilOrFalse(t.SinkBinding) {
+	if !pointer.BoolDeref(t.SinkBinding, false) {
 		return nil
 	}
 	var serviceType knativeapi.CamelServiceType
diff --git a/pkg/trait/knative_service.go b/pkg/trait/knative_service.go
index 82576f95b..8a7b106c9 100644
--- a/pkg/trait/knative_service.go
+++ b/pkg/trait/knative_service.go
@@ -23,6 +23,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -101,7 +102,7 @@ func (t *knativeServiceTrait) IsAllowedInProfile(profile v1.TraitProfile) bool {
 }
 
 func (t *knativeServiceTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		e.Integration.Status.SetCondition(
 			v1.IntegrationConditionKnativeServiceAvailable,
 			corev1.ConditionFalse,
@@ -149,7 +150,7 @@ func (t *knativeServiceTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		// Check the right value for minScale, as not all services are allowed to scale down to 0
 		if t.MinScale == nil {
 			sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, t.Client, e.Integration, e.Resources)
diff --git a/pkg/trait/logging.go b/pkg/trait/logging.go
index 5c80a4c42..5b3237123 100644
--- a/pkg/trait/logging.go
+++ b/pkg/trait/logging.go
@@ -18,6 +18,8 @@ limitations under the License.
 package trait
 
 import (
+	"k8s.io/utils/pointer"
+
 	"github.com/apache/camel-k/pkg/util/envvar"
 )
 
@@ -56,7 +58,7 @@ func newLoggingTraitTrait() Trait {
 }
 
 func (l loggingTrait) Configure(environment *Environment) (bool, error) {
-	if IsFalse(l.Enabled) {
+	if !pointer.BoolDeref(l.Enabled, true) {
 		return false, nil
 	}
 
@@ -70,16 +72,16 @@ func (l loggingTrait) Apply(environment *Environment) error {
 		envvar.SetVal(&environment.EnvVars, envVarQuarkusLogConsoleFormat, l.Format)
 	}
 
-	if IsTrue(l.JSON) {
+	if pointer.BoolDeref(l.JSON, false) {
 		envvar.SetVal(&environment.EnvVars, envVarQuarkusLogConsoleJSON, True)
-		if IsTrue(l.JSONPrettyPrint) {
+		if pointer.BoolDeref(l.JSONPrettyPrint, false) {
 			envvar.SetVal(&environment.EnvVars, envVarQuarkusLogConsoleJSONPrettyPrint, True)
 		}
 	} else {
 		// If the trait is false OR unset, we default to false.
 		envvar.SetVal(&environment.EnvVars, envVarQuarkusLogConsoleJSON, False)
 
-		if IsNilOrTrue(l.Color) {
+		if pointer.BoolDeref(l.Color, true) {
 			envvar.SetVal(&environment.EnvVars, envVarQuarkusLogConsoleColor, True)
 		}
 	}
diff --git a/pkg/trait/mount.go b/pkg/trait/mount.go
index 81d58c50f..10ab80f35 100644
--- a/pkg/trait/mount.go
+++ b/pkg/trait/mount.go
@@ -26,6 +26,7 @@ import (
 	"k8s.io/api/batch/v1beta1"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/utils/pointer"
 
 	serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -62,7 +63,7 @@ func newMountTrait() Trait {
 }
 
 func (t *mountTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/openapi.go b/pkg/trait/openapi.go
index 2300946b4..d1392bc30 100644
--- a/pkg/trait/openapi.go
+++ b/pkg/trait/openapi.go
@@ -33,6 +33,7 @@ import (
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/utils/pointer"
 
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
@@ -67,7 +68,7 @@ func (t *openAPITrait) IsPlatformTrait() bool {
 }
 
 func (t *openAPITrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/owner.go b/pkg/trait/owner.go
index c14eb75a2..5bff48922 100644
--- a/pkg/trait/owner.go
+++ b/pkg/trait/owner.go
@@ -20,6 +20,7 @@ package trait
 import (
 	appsv1 "k8s.io/api/apps/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -45,7 +46,7 @@ func newOwnerTrait() Trait {
 }
 
 func (t *ownerTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/pdb.go b/pkg/trait/pdb.go
index f0b5636ba..92fcbf9b9 100644
--- a/pkg/trait/pdb.go
+++ b/pkg/trait/pdb.go
@@ -23,6 +23,7 @@ import (
 	"k8s.io/api/policy/v1beta1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/util/intstr"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 )
@@ -49,7 +50,7 @@ func newPdbTrait() Trait {
 }
 
 func (t *pdbTrait) Configure(e *Environment) (bool, error) {
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/pdb_test.go b/pkg/trait/pdb_test.go
index 619e160ef..803c2430b 100644
--- a/pkg/trait/pdb_test.go
+++ b/pkg/trait/pdb_test.go
@@ -26,6 +26,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/api/policy/v1beta1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
@@ -98,7 +99,7 @@ func findPdb(resources *kubernetes.Collection) *v1beta1.PodDisruptionBudget {
 // nolint: unparam
 func createPdbTest() (*pdbTrait, *Environment, *appsv1.Deployment) {
 	trait, _ := newPdbTrait().(*pdbTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	deployment := &appsv1.Deployment{
 		ObjectMeta: metav1.ObjectMeta{
diff --git a/pkg/trait/platform.go b/pkg/trait/platform.go
index 29d851027..c80c99c2f 100644
--- a/pkg/trait/platform.go
+++ b/pkg/trait/platform.go
@@ -19,6 +19,7 @@ package trait
 
 import (
 	k8serrors "k8s.io/apimachinery/pkg/api/errors"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/platform"
@@ -49,7 +50,7 @@ func newPlatformTrait() Trait {
 }
 
 func (t *platformTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
@@ -57,7 +58,7 @@ func (t *platformTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrFalse(t.Auto) {
+	if !pointer.BoolDeref(t.Auto, false) {
 		if e.Platform == nil {
 			if t.CreateDefault == nil {
 				// Calculate if the platform should be automatically created when missing.
@@ -103,13 +104,13 @@ func (t *platformTrait) Apply(e *Environment) error {
 func (t *platformTrait) getOrCreatePlatform(e *Environment) (*v1.IntegrationPlatform, error) {
 	pl, err := platform.GetOrFindForResource(e.Ctx, t.Client, e.Integration, false)
 	if err != nil && k8serrors.IsNotFound(err) {
-		if IsTrue(t.CreateDefault) {
+		if pointer.BoolDeref(t.CreateDefault, false) {
 			platformName := e.Integration.Status.Platform
 			if platformName == "" {
 				platformName = platform.DefaultPlatformName
 			}
 			namespace := e.Integration.Namespace
-			if IsTrue(t.Global) {
+			if pointer.BoolDeref(t.Global, false) {
 				operatorNamespace := platform.GetOperatorNamespace()
 				if operatorNamespace != "" {
 					namespace = operatorNamespace
diff --git a/pkg/trait/platform_test.go b/pkg/trait/platform_test.go
index c7f81dc37..02fe8e4f1 100644
--- a/pkg/trait/platform_test.go
+++ b/pkg/trait/platform_test.go
@@ -24,8 +24,11 @@ import (
 	"github.com/apache/camel-k/pkg/platform"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
 	"github.com/apache/camel-k/pkg/util/test"
+
 	"github.com/stretchr/testify/assert"
+
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 )
 
 func TestPlatformTraitChangeStatus(t *testing.T) {
@@ -56,7 +59,7 @@ func TestPlatformTraitChangeStatus(t *testing.T) {
 			}
 
 			trait, _ := newPlatformTrait().(*platformTrait)
-			trait.CreateDefault = BoolP(false)
+			trait.CreateDefault = pointer.Bool(false)
 
 			var err error
 			trait.Client, err = test.NewFakeClient()
@@ -90,7 +93,7 @@ func TestPlatformTraitCreatesDefaultPlatform(t *testing.T) {
 	}
 
 	trait, _ := newPlatformTrait().(*platformTrait)
-	trait.CreateDefault = BoolP(true)
+	trait.CreateDefault = pointer.Bool(true)
 
 	var err error
 	trait.Client, err = test.NewFakeClient()
@@ -145,7 +148,7 @@ func TestPlatformTraitExisting(t *testing.T) {
 			}
 
 			trait, _ := newPlatformTrait().(*platformTrait)
-			trait.CreateDefault = BoolP(true)
+			trait.CreateDefault = pointer.Bool(true)
 
 			var err error
 			existingPlatform := v1.NewIntegrationPlatform("ns1", "existing")
diff --git a/pkg/trait/pod.go b/pkg/trait/pod.go
index b3722f32b..840f20dc8 100644
--- a/pkg/trait/pod.go
+++ b/pkg/trait/pod.go
@@ -25,6 +25,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/util/json"
 	"k8s.io/apimachinery/pkg/util/strategicpatch"
+	"k8s.io/utils/pointer"
 
 	serving "knative.dev/serving/pkg/apis/serving/v1"
 
@@ -50,7 +51,7 @@ func newPodTrait() Trait {
 }
 
 func (t *podTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/pod_test.go b/pkg/trait/pod_test.go
index e55e38821..20bb944b9 100755
--- a/pkg/trait/pod_test.go
+++ b/pkg/trait/pod_test.go
@@ -27,6 +27,7 @@ import (
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
@@ -102,7 +103,7 @@ func TestSupplementalGroup(t *testing.T) {
 // nolint: unparam
 func createPodTest(podSpecTemplate string) (*podTrait, *Environment, *appsv1.Deployment) {
 	trait, _ := newPodTrait().(*podTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	var podSpec v1.PodSpec
 	if podSpecTemplate != "" {
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index bf9113e11..9dd90cf36 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -22,6 +22,7 @@ import (
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
 
@@ -52,12 +53,12 @@ type prometheusTrait struct {
 func newPrometheusTrait() Trait {
 	return &prometheusTrait{
 		BaseTrait:  NewBaseTrait("prometheus", 1900),
-		PodMonitor: BoolP(true),
+		PodMonitor: pointer.Bool(true),
 	}
 }
 
 func (t *prometheusTrait) Configure(e *Environment) (bool, error) {
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
@@ -102,7 +103,7 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
 	condition.Message = fmt.Sprintf("%s(%d)", container.Name, containerPort.ContainerPort)
 
 	// Add the PodMonitor resource
-	if IsTrue(t.PodMonitor) {
+	if pointer.BoolDeref(t.PodMonitor, false) {
 		portName := containerPort.Name
 		// Knative defaults to naming the userland container port "user-port".
 		// Let's rely on that default, granted it is not officially part of the Knative
diff --git a/pkg/trait/pull_secret.go b/pkg/trait/pull_secret.go
index 10414e5ff..05469f913 100644
--- a/pkg/trait/pull_secret.go
+++ b/pkg/trait/pull_secret.go
@@ -25,6 +25,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	rbacv1 "k8s.io/api/rbac/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
@@ -62,7 +63,7 @@ func newPullSecretTrait() Trait {
 }
 
 func (t *pullSecretTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
@@ -70,7 +71,7 @@ func (t *pullSecretTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		if t.SecretName == "" {
 			secret := e.Platform.Status.Build.Registry.Secret
 			if secret != "" {
@@ -100,7 +101,7 @@ func (t *pullSecretTrait) Configure(e *Environment) (bool, error) {
 		}
 	}
 
-	return t.SecretName != "" || IsTrue(t.ImagePullerDelegation), nil
+	return t.SecretName != "" || pointer.BoolDeref(t.ImagePullerDelegation, false), nil
 }
 
 func (t *pullSecretTrait) Apply(e *Environment) error {
@@ -111,7 +112,7 @@ func (t *pullSecretTrait) Apply(e *Environment) error {
 			})
 		})
 	}
-	if IsTrue(t.ImagePullerDelegation) {
+	if pointer.BoolDeref(t.ImagePullerDelegation, false) {
 		if err := t.delegateImagePuller(e); err != nil {
 			return err
 		}
diff --git a/pkg/trait/pull_secret_test.go b/pkg/trait/pull_secret_test.go
index 52292d07c..1fc980368 100644
--- a/pkg/trait/pull_secret_test.go
+++ b/pkg/trait/pull_secret_test.go
@@ -24,10 +24,12 @@ import (
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
 	"github.com/apache/camel-k/pkg/util/test"
+
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
 	rbacv1 "k8s.io/api/rbac/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
 	"github.com/stretchr/testify/assert"
@@ -61,7 +63,7 @@ func TestPullSecretAuto(t *testing.T) {
 	e, _ := getEnvironmentAndDeployment(t)
 
 	trait, _ := newPullSecretTrait().(*pullSecretTrait)
-	trait.Auto = BoolP(false)
+	trait.Auto = pointer.Bool(false)
 	enabled, err := trait.Configure(e)
 	assert.Nil(t, err)
 	assert.False(t, enabled)
@@ -71,8 +73,8 @@ func TestPullSecretImagePullerDelegation(t *testing.T) {
 	e, _ := getEnvironmentAndDeployment(t)
 
 	trait, _ := newPullSecretTrait().(*pullSecretTrait)
-	trait.Auto = BoolP(false)
-	trait.ImagePullerDelegation = BoolP(true)
+	trait.Auto = pointer.Bool(false)
+	trait.ImagePullerDelegation = pointer.Bool(true)
 	enabled, err := trait.Configure(e)
 	assert.Nil(t, err)
 	assert.True(t, enabled)
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index f93de9cb0..5abe7f7d5 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -25,6 +25,7 @@ import (
 	"github.com/rs/xid"
 
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/builder"
@@ -92,7 +93,7 @@ func (t *quarkusTrait) Matches(trait Trait) bool {
 		return false
 	}
 
-	if IsNilOrTrue(t.Enabled) && IsFalse(qt.Enabled) {
+	if pointer.BoolDeref(t.Enabled, true) && !pointer.BoolDeref(qt.Enabled, true) {
 		return false
 	}
 
@@ -115,7 +116,7 @@ types:
 }
 
 func (t *quarkusTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go
index 1b54f3d93..70f6f37d2 100644
--- a/pkg/trait/quarkus_test.go
+++ b/pkg/trait/quarkus_test.go
@@ -22,6 +22,8 @@ import (
 
 	"github.com/stretchr/testify/assert"
 
+	"k8s.io/utils/pointer"
+
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/builder"
 	"github.com/apache/camel-k/pkg/util/camel"
@@ -47,7 +49,7 @@ func TestConfigureQuarkusTraitBuildSubmitted(t *testing.T) {
 
 func TestConfigureDisabledQuarkusTraitShouldFail(t *testing.T) {
 	quarkusTrait, environment := createNominalQuarkusTest()
-	quarkusTrait.Enabled = BoolP(false)
+	quarkusTrait.Enabled = pointer.Bool(false)
 
 	configured, err := quarkusTrait.Configure(environment)
 
@@ -71,7 +73,7 @@ func TestApplyQuarkusTraitDefaultKitLayout(t *testing.T) {
 
 func createNominalQuarkusTest() (*quarkusTrait, *Environment) {
 	trait, _ := newQuarkusTrait().(*quarkusTrait)
-	trait.Enabled = BoolP(true)
+	trait.Enabled = pointer.Bool(true)
 
 	environment := &Environment{
 		CamelCatalog: &camel.RuntimeCatalog{},
diff --git a/pkg/trait/registry.go b/pkg/trait/registry.go
index acf6b377a..fdc2ac79f 100644
--- a/pkg/trait/registry.go
+++ b/pkg/trait/registry.go
@@ -26,13 +26,14 @@ import (
 
 	base64 "encoding/base64"
 
+	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/platform"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
 	"github.com/apache/camel-k/pkg/util/registry"
-	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
-	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
+	ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 )
 
 // The Registry trait sets up Maven to use the Image registry
@@ -56,7 +57,7 @@ func (t *registryTrait) InfluencesKit() bool {
 
 func (t *registryTrait) Configure(e *Environment) (bool, error) {
 	// disabled by default
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/route.go b/pkg/trait/route.go
index c3d541789..4575cd88b 100644
--- a/pkg/trait/route.go
+++ b/pkg/trait/route.go
@@ -25,6 +25,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/util/intstr"
+	"k8s.io/utils/pointer"
 
 	routev1 "github.com/openshift/api/route/v1"
 
@@ -108,7 +109,7 @@ func (t *routeTrait) IsAllowedInProfile(profile v1.TraitProfile) bool {
 }
 
 func (t *routeTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		if e.Integration != nil {
 			e.Integration.Status.SetCondition(
 				v1.IntegrationConditionExposureAvailable,
diff --git a/pkg/trait/service.go b/pkg/trait/service.go
index a070c8160..5c47a5fe0 100644
--- a/pkg/trait/service.go
+++ b/pkg/trait/service.go
@@ -20,6 +20,7 @@ package trait
 import (
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/metadata"
@@ -55,7 +56,7 @@ func (t *serviceTrait) IsAllowedInProfile(profile v1.TraitProfile) bool {
 }
 
 func (t *serviceTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		e.Integration.Status.SetCondition(
 			v1.IntegrationConditionServiceAvailable,
 			corev1.ConditionFalse,
@@ -70,7 +71,7 @@ func (t *serviceTrait) Configure(e *Environment) (bool, error) {
 		return false, nil
 	}
 
-	if IsNilOrTrue(t.Auto) {
+	if pointer.BoolDeref(t.Auto, true) {
 		sources, err := kubernetes.ResolveIntegrationSources(e.Ctx, t.Client, e.Integration, e.Resources)
 		if err != nil {
 			e.Integration.Status.SetCondition(
@@ -105,7 +106,7 @@ func (t *serviceTrait) Apply(e *Environment) error {
 	if svc == nil {
 		svc = getServiceFor(e)
 
-		if IsTrue(t.NodePort) {
+		if pointer.BoolDeref(t.NodePort, false) {
 			svc.Spec.Type = corev1.ServiceTypeNodePort
 		}
 	}
diff --git a/pkg/trait/service_binding.go b/pkg/trait/service_binding.go
index ab7a78a3d..de6f607fa 100644
--- a/pkg/trait/service_binding.go
+++ b/pkg/trait/service_binding.go
@@ -18,11 +18,10 @@ limitations under the License.
 package trait
 
 import (
-	"github.com/apache/camel-k/pkg/util/camel"
-	"github.com/apache/camel-k/pkg/util/reference"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/client-go/dynamic"
+	"k8s.io/utils/pointer"
 
 	sb "github.com/redhat-developer/service-binding-operator/apis/binding/v1alpha1"
 	"github.com/redhat-developer/service-binding-operator/pkg/client/kubernetes"
@@ -33,6 +32,8 @@ import (
 	"github.com/redhat-developer/service-binding-operator/pkg/reconcile/pipeline/handler/naming"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
+	"github.com/apache/camel-k/pkg/util/camel"
+	"github.com/apache/camel-k/pkg/util/reference"
 )
 
 // The Service Binding trait allows users to connect to Services in Kubernetes:
@@ -52,7 +53,7 @@ func newServiceBindingTrait() Trait {
 }
 
 func (t *serviceBindingTrait) Configure(e *Environment) (bool, error) {
-	if IsFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, true) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/toleration.go b/pkg/trait/toleration.go
index 60f4dbf05..925d53d78 100644
--- a/pkg/trait/toleration.go
+++ b/pkg/trait/toleration.go
@@ -21,6 +21,7 @@ import (
 	"fmt"
 
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
 
 	"github.com/apache/camel-k/pkg/util/kubernetes"
 )
@@ -52,7 +53,7 @@ func newTolerationTrait() Trait {
 }
 
 func (t *tolerationTrait) Configure(e *Environment) (bool, error) {
-	if IsNilOrFalse(t.Enabled) {
+	if !pointer.BoolDeref(t.Enabled, false) {
 		return false, nil
 	}
 
diff --git a/pkg/trait/toleration_test.go b/pkg/trait/toleration_test.go
index 5d3795684..6b0cd6695 100644
--- a/pkg/trait/toleration_test.go
+++ b/pkg/trait/toleration_test.go
@@ -23,6 +23,7 @@ import (
 	"github.com/stretchr/testify/assert"
 
 	corev1 "k8s.io/api/core/v1"
+	"k8s.io/utils/pointer"
 )
 
 func TestConfigureTolerationTraitMissingTaint(t *testing.T) {
@@ -130,7 +131,7 @@ func TestTolerationValidTaints(t *testing.T) {
 
 func createNominalTolerationTrait() *tolerationTrait {
 	tolerationTrait, _ := newTolerationTrait().(*tolerationTrait)
-	tolerationTrait.Enabled = BoolP(true)
+	tolerationTrait.Enabled = pointer.Bool(true)
 	tolerationTrait.Taints = make([]string, 0)
 
 	return tolerationTrait
diff --git a/pkg/trait/util.go b/pkg/trait/util.go
index 54ffc22b3..3d52ca136 100644
--- a/pkg/trait/util.go
+++ b/pkg/trait/util.go
@@ -221,32 +221,3 @@ func AddSourceDependencies(source v1.SourceSpec, catalog *camel.RuntimeCatalog)
 
 	return dependencies
 }
-
-// Bool pointer operations:
-
-// BoolP returns a pointer to a bool value.
-func BoolP(b bool) *bool {
-	return &b
-}
-
-// IsTrue checks if the bool pointer is defined and true.
-func IsTrue(b *bool) bool {
-	return b != nil && *b
-}
-
-// IsNilOrTrue checks if the bool pointer is nil or true.
-// You can use it if the bool pointer is meant to be true by default.
-func IsNilOrTrue(b *bool) bool {
-	return b == nil || *b
-}
-
-// IsFalse checks if the bool pointer is defined and false.
-func IsFalse(b *bool) bool {
-	return b != nil && !*b
-}
-
-// IsNilOrFalse checks if the bool pointer is nil or false.
-// You can use it if the bool pointer is meant to be false by default.
-func IsNilOrFalse(b *bool) bool {
-	return b == nil || !*b
-}
diff --git a/pkg/trait/util_test.go b/pkg/trait/util_test.go
deleted file mode 100644
index da4cd9589..000000000
--- a/pkg/trait/util_test.go
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package trait
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestBoolPointerFunctions(t *testing.T) {
-	trueP := BoolP(true)
-	falseP := BoolP(false)
-
-	assert.True(t, IsTrue(trueP))
-	assert.False(t, IsTrue(falseP))
-	assert.False(t, IsTrue(nil))
-
-	assert.True(t, IsNilOrTrue(trueP))
-	assert.False(t, IsNilOrTrue(falseP))
-	assert.True(t, IsNilOrTrue(nil))
-
-	assert.False(t, IsFalse(trueP))
-	assert.True(t, IsFalse(falseP))
-	assert.False(t, IsFalse(nil))
-
-	assert.False(t, IsNilOrFalse(trueP))
-	assert.True(t, IsNilOrFalse(falseP))
-	assert.True(t, IsNilOrFalse(nil))
-}