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

ricardozanini pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git


The following commit(s) were added to refs/heads/main by this push:
     new 5396c2c4ec Fix kie-issues-1909: Review usage of Fabric8 and tests, 
remove deprecated APIs (#3880)
5396c2c4ec is described below

commit 5396c2c4ecfd9e165a341eeac51a6169a3ba0f08
Author: Ricardo Zanini <[email protected]>
AuthorDate: Fri Apr 4 13:41:46 2025 -0300

    Fix kie-issues-1909: Review usage of Fabric8 and tests, remove deprecated 
APIs (#3880)
    
    * Fix kie-issues-1909: Review usage of Fabric8 and tests, remove deprecated 
APIs
    
    Signed-off-by: Ricardo Zanini <[email protected]>
    
    * Disable kubernetes test devservices
    
    Signed-off-by: Ricardo Zanini <[email protected]>
    
    * Add default namespace; align fabric8 version
    
    Signed-off-by: Ricardo Zanini <[email protected]>
    
    ---------
    
    Signed-off-by: Ricardo Zanini <[email protected]>
---
 .../catalog/KubernetesServiceCatalogTest.java      |   8 +-
 kogito-bom/pom.xml                                 |   4 +-
 kogito-build/kogito-dependencies-bom/pom.xml       |   2 +-
 .../fabric8-kubernetes-service-catalog/pom.xml     |   1 -
 .../runtime/pom.xml                                |  14 +--
 .../catalog/KubernetesResourceDiscovery.java       |   3 +
 .../k8s/service/catalog/DeploymentUtilsTest.java   | 123 ++++++++++-----------
 .../Fabric8KubernetesServiceCatalogTest.java       |  20 ++--
 .../k8s/service/catalog/IngressUtilsTest.java      |  46 ++++----
 .../catalog/KnativeServiceDiscoveryTest.java       |  47 ++++----
 .../catalog/KubernetesResourceDiscoveryTest.java   |  88 ++++++++-------
 .../catalog/OpenShiftServiceDiscoveryTest.java     | 110 +++++++++---------
 .../fabric8/k8s/service/catalog/PodUtilsTest.java  |  92 ++++++++-------
 .../k8s/service/catalog/StatefulSetUtilsTest.java  | 112 ++++++++++---------
 .../src/test/resources/application.properties      |   2 +
 .../resources/knative/quarkus-greeting-https.yaml  |   4 +-
 .../knative/quarkus-greeting-kubernetes.yaml       |   4 +-
 .../knative/quarkus-greeting-openshift.yaml        |   4 +-
 .../test/resources/knative/quarkus-greeting.yaml   |   4 +-
 .../utils/KnativeResourceDiscoveryTestUtil.java    |  58 ----------
 .../KogitoAddOnKnativeEventingProcessor.java       |  16 +--
 .../KogitoAddOnKnativeEventingProcessorTest.java   |  27 ++---
 .../src/test/resources/application.properties      |   1 +
 .../KnativeEventingConfigSourceFactory.java        |   4 +-
 .../src/test/resources/application.properties      |   1 +
 .../knative/serving/integration-tests/pom.xml      |   9 +-
 .../customfunctions/it/KnativeServingAddonIT.java  |  30 +++--
 quarkus/addons/knative/serving/runtime/pom.xml     |  10 --
 .../addons/kubernetes/integration-tests/pom.xml    |   2 +-
 .../quarkus/kubernetes/ConfigValueExpanderIT.java  |   4 +-
 .../src/test/resources/application.properties      |   1 +
 quarkus/addons/kubernetes/pom.xml                  |   1 +
 quarkus/addons/kubernetes/runtime/pom.xml          |   7 +-
 .../k8s/KnativeRouteEndpointDiscoveryTest.java     |  25 +++--
 .../KubernetesServiceEndpointDiscoveryTest.java    |  36 +++---
 .../KubeDiscoveryConfigCacheUpdaterTest.java       |  24 ++--
 .../src/test/resources/application.properties      |   1 +
 .../test-utils/pom.xml                             |  22 ++--
 .../quarkus/k8s/test/utils/KubeTestUtils.java      | 120 ++++++++++++++++++++
 .../utils/OpenShiftMockServerTestResource.java     |  50 +++++++++
 .../src/test/resources/application.properties      |  16 +--
 quarkus/bom/pom.xml                                |   3 +-
 42 files changed, 634 insertions(+), 522 deletions(-)

diff --git 
a/addons/common/kubernetes-service-catalog/src/test/java/org/kie/kogito/addons/k8s/resource/catalog/KubernetesServiceCatalogTest.java
 
b/addons/common/kubernetes-service-catalog/src/test/java/org/kie/kogito/addons/k8s/resource/catalog/KubernetesServiceCatalogTest.java
index d7a8a26a16..dbdca22379 100644
--- 
a/addons/common/kubernetes-service-catalog/src/test/java/org/kie/kogito/addons/k8s/resource/catalog/KubernetesServiceCatalogTest.java
+++ 
b/addons/common/kubernetes-service-catalog/src/test/java/org/kie/kogito/addons/k8s/resource/catalog/KubernetesServiceCatalogTest.java
@@ -36,13 +36,13 @@ import static 
org.kie.kogito.addons.k8s.resource.catalog.KubernetesProtocol.OPEN
  */
 public abstract class KubernetesServiceCatalogTest {
 
-    private static final String EXPECTED_KNATIVE_URI = 
"http://serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io";;
+    private static final String EXPECTED_KNATIVE_URI = 
"http://serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io";;
 
-    private static final String EXPECTED_KUBERNETES_URI = 
"http://serverless-workflow-greeting-quarkus-kubernetes.test.10.99.154.147.sslip.io";;
+    private static final String EXPECTED_KUBERNETES_URI = 
"http://serverless-workflow-greeting-quarkus-kubernetes.default.10.99.154.147.sslip.io";;
 
-    private static final String EXPECTED_OPENSHIFT_URI = 
"http://serverless-workflow-greeting-quarkus-openshift.test.10.99.154.147.sslip.io";;
+    private static final String EXPECTED_OPENSHIFT_URI = 
"http://serverless-workflow-greeting-quarkus-openshift.default.10.99.154.147.sslip.io";;
 
-    private static final String NAMESPACE = "test";
+    private static final String NAMESPACE = "default";
 
     private static final String KNATIVE_SERVICENAME = 
"serverless-workflow-greeting-quarkus";
 
diff --git a/kogito-bom/pom.xml b/kogito-bom/pom.xml
index 13acf8c512..346809d6d6 100755
--- a/kogito-bom/pom.xml
+++ b/kogito-bom/pom.xml
@@ -465,12 +465,12 @@
       </dependency>
       <dependency>
         <groupId>org.kie</groupId>
-        
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
+        <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>org.kie</groupId>
-        
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
+        <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
         <version>${project.version}</version>
         <classifier>sources</classifier>
       </dependency>
diff --git a/kogito-build/kogito-dependencies-bom/pom.xml 
b/kogito-build/kogito-dependencies-bom/pom.xml
index 94b76364ba..605eca46dc 100644
--- a/kogito-build/kogito-dependencies-bom/pom.xml
+++ b/kogito-build/kogito-dependencies-bom/pom.xml
@@ -81,7 +81,7 @@
     Don't add as a management dependency because it will break SpringBoot and 
Quarkus
     Kubernetes addons since they use a different version.
     -->
-    
<version.io.fabric8.kubernetes-client>6.13.3</version.io.fabric8.kubernetes-client>
+    
<version.io.fabric8.kubernetes-client>6.13.4</version.io.fabric8.kubernetes-client>
     <version.io.micrometer>1.12.2</version.io.micrometer>
     <version.org.flywaydb>10.17.3</version.org.flywaydb>
     <version.org.postgresql>42.7.4</version.org.postgresql>
diff --git a/quarkus/addons/fabric8-kubernetes-service-catalog/pom.xml 
b/quarkus/addons/fabric8-kubernetes-service-catalog/pom.xml
index 129e038d7f..b301743c8b 100644
--- a/quarkus/addons/fabric8-kubernetes-service-catalog/pom.xml
+++ b/quarkus/addons/fabric8-kubernetes-service-catalog/pom.xml
@@ -36,6 +36,5 @@
     <modules>
         <module>deployment</module>
         <module>runtime</module>
-        <module>test-utils</module>
     </modules>
 </project>
\ No newline at end of file
diff --git a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/pom.xml 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/pom.xml
index e37281d150..62c6fd99a2 100644
--- a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/pom.xml
+++ b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/pom.xml
@@ -65,14 +65,19 @@
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.kie</groupId>
+            <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-test-kubernetes-client</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-test-openshift-client</artifactId>
+            <groupId>io.fabric8</groupId>
+            <artifactId>openshift-server-mock</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -90,11 +95,6 @@
             <artifactId>assertj-core</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/main/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscovery.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/main/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscovery.java
index 5a21b1cff0..0ca0067410 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/main/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscovery.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/main/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscovery.java
@@ -78,6 +78,9 @@ class KubernetesResourceDiscovery extends 
AbstractResourceDiscovery {
     private KubernetesResourceUri resolveNamespace(KubernetesResourceUri uri, 
Supplier<String> defaultNamespaceSupplier) {
         if (uri.getNamespace() == null) {
             String defaultNamespace = defaultNamespaceSupplier.get();
+            if (defaultNamespace == null || defaultNamespace.isEmpty()) {
+                throw new IllegalArgumentException("Can't resolve namespace 
for uri " + uri + " using the default namespace supplier: " + 
defaultNamespaceSupplier.get());
+            }
 
             logDefaultNamespace(defaultNamespace);
 
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/DeploymentUtilsTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/DeploymentUtilsTest.java
index a3d2707ee7..14f48f2084 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/DeploymentUtilsTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/DeploymentUtilsTest.java
@@ -22,6 +22,8 @@ import java.net.URI;
 import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.kubernetes.api.model.ContainerPortBuilder;
 import io.fabric8.kubernetes.api.model.IntOrString;
@@ -30,38 +32,33 @@ import io.fabric8.kubernetes.api.model.Service;
 import io.fabric8.kubernetes.api.model.ServicePortBuilder;
 import io.fabric8.kubernetes.api.model.apps.Deployment;
 import io.fabric8.kubernetes.api.model.apps.ReplicaSet;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-/**
- * This tests also covers the queryServiceByLabelOrSelector method from {@link 
ServiceUtils}
- * and queryPodByOwnerReference from {@link PodUtils}
- */
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class DeploymentUtilsTest {
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
-
+    private final String namespace = "serverless-workflow-greeting-quarkus";
+    @Inject
+    OpenShiftClient client;
     @Inject
     KubernetesResourceDiscovery discovery;
 
-    private final String namespace = "serverless-workflow-greeting-quarkus";
-
     @Test
     public void testNotFoundDeployment() {
-        Deployment deployment = 
mockServer.getClient().apps().deployments().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment.yaml")).item();
+        Deployment deployment = 
client.apps().deployments().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment.yaml")).item();
         deployment.getMetadata().setName("test");
-        
mockServer.getClient().resource(deployment).inNamespace(namespace).createOrReplace();
+
+        KubeTestUtils.createWithStatusPreserved(client, deployment, namespace, 
Deployment.class);
+
         assertEquals(Optional.empty(),
                 
discovery.query(KubernetesResourceUri.parse("deployments.v1.apps/" + namespace 
+ "/invalid")));
     }
@@ -70,13 +67,13 @@ public class DeploymentUtilsTest {
     public void testDeploymentWithService() {
         var kubeURI = KubernetesResourceUri.parse("deployments.v1.apps/" + 
namespace + "/example-deployment-with-service");
 
-        Deployment deployment = 
mockServer.getClient().apps().deployments().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment.yaml")).item();
-        
mockServer.getClient().resource(deployment).inNamespace(namespace).createOrReplace();
+        Deployment deployment = 
client.apps().deployments().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment.yaml")).item();
+        KubeTestUtils.createWithStatusPreserved(client, deployment, namespace, 
Deployment.class);
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment-service.yaml")).item();
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment-service.yaml")).item();
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.11:80";, url.get());
@@ -86,21 +83,21 @@ public class DeploymentUtilsTest {
     public void testDeploymentWithServiceWithCustomPortName() {
         var kubeURI = KubernetesResourceUri.parse("deployments.v1.apps/" + 
namespace + "/custom-port-deployment?port-name=my-custom-port");
 
-        Deployment deployment = 
mockServer.getClient().apps().deployments().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment.yaml")).item();
+        Deployment deployment = 
client.apps().deployments().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment.yaml")).item();
         deployment.getMetadata().setName("custom-port-deployment");
         
deployment.getSpec().getTemplate().getSpec().getContainers().get(0).getPorts()
                 .add(new 
ContainerPortBuilder().withName("test-port").withContainerPort(4000).build());
-        
mockServer.getClient().resource(deployment).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, deployment, namespace, 
Deployment.class);
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment-service.yaml")).item();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment-service.yaml")).item();
         service.getMetadata().setName("custom-port-name-service");
         service.getSpec().getPorts().add(new ServicePortBuilder()
                 .withName("my-custom-port")
                 .withTargetPort(new IntOrString("test-port"))
                 .withPort(4009).build());
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.11:4009";, url.get());
@@ -110,20 +107,20 @@ public class DeploymentUtilsTest {
     public void testDeploymentNoService() {
         var kubeURI = KubernetesResourceUri.parse("deployments.v1.apps/" + 
namespace + "/example-deployment-no-service");
 
-        Deployment deployment = 
mockServer.getClient().apps().deployments().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment-no-service.yaml")).item();
-        Deployment createdDeployment = 
mockServer.getClient().resource(deployment).inNamespace(namespace).createOrReplace();
+        Deployment deployment = 
client.apps().deployments().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment-no-service.yaml")).item();
+        deployment = KubeTestUtils.createWithStatusPreserved(client, 
deployment, namespace, Deployment.class);
 
-        ReplicaSet rs = 
mockServer.getClient().apps().replicaSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/replica-set-deployment-no-service.yaml")).item();
-        
rs.getMetadata().getOwnerReferences().get(0).setUid(createdDeployment.getMetadata().getUid());
-        ReplicaSet createdRs = 
mockServer.getClient().resource(rs).inNamespace(namespace).createOrReplace();
+        ReplicaSet rs = client.apps().replicaSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/replica-set-deployment-no-service.yaml")).item();
+        
rs.getMetadata().getOwnerReferences().get(0).setUid(deployment.getMetadata().getUid());
+        rs = KubeTestUtils.createWithStatusPreserved(client, rs, namespace, 
ReplicaSet.class);
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/pod-deployment-no-service.yaml")).item();
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/pod-deployment-no-service.yaml")).item();
         pod.getMetadata().setName("pod-deployment-no-service");
-        
pod.getMetadata().getOwnerReferences().get(0).setUid(createdRs.getMetadata().getUid());
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+        
pod.getMetadata().getOwnerReferences().get(0).setUid(rs.getMetadata().getUid());
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.0.11:8080";, url.get());
@@ -133,23 +130,23 @@ public class DeploymentUtilsTest {
     public void testDeploymentNoService2Replicas() {
         var kubeURI = KubernetesResourceUri.parse("deployments.v1.apps/" + 
namespace + "/example-deployment-no-service-2-replicas");
 
-        Deployment deployment = 
mockServer.getClient().apps().deployments().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment-no-service.yaml")).item();
+        Deployment deployment = 
client.apps().deployments().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment-no-service.yaml")).item();
         
deployment.getMetadata().setName("example-deployment-no-service-2-replicas");
         deployment.getStatus().setReplicas(2);
-        Deployment createdDeployment = 
mockServer.getClient().resource(deployment).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, deployment, namespace, 
Deployment.class);
 
-        ReplicaSet rs = 
mockServer.getClient().apps().replicaSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/replica-set-deployment-no-service.yaml")).item();
+        ReplicaSet rs = client.apps().replicaSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/replica-set-deployment-no-service.yaml")).item();
         rs.getMetadata().setName("rs-2-replicas");
-        
rs.getMetadata().getOwnerReferences().get(0).setUid(createdDeployment.getMetadata().getUid());
-        ReplicaSet createdRs = 
mockServer.getClient().resource(rs).inNamespace(namespace).createOrReplace();
+        
rs.getMetadata().getOwnerReferences().get(0).setUid(deployment.getMetadata().getUid());
+        KubeTestUtils.createWithStatusPreserved(client, rs, namespace, 
ReplicaSet.class);
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/pod-deployment-no-service.yaml")).item();
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/pod-deployment-no-service.yaml")).item();
         pod.getMetadata().setName("pod-2-replicas");
-        
pod.getMetadata().getOwnerReferences().get(0).setUid(createdRs.getMetadata().getUid());
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+        
pod.getMetadata().getOwnerReferences().get(0).setUid(rs.getMetadata().getUid());
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertTrue(url.isEmpty());
@@ -159,27 +156,25 @@ public class DeploymentUtilsTest {
     public void testDeploymentNoServiceCustomPortName() {
         var kubeURI = KubernetesResourceUri.parse("deployments.v1.apps/" + 
namespace + "/custom-port-deployment-1?port-name=my-custom-port");
 
-        Deployment deployment = 
mockServer.getClient().apps().deployments().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/deployment-no-service.yaml")).item();
+        Deployment deployment = 
client.apps().deployments().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/deployment-no-service.yaml")).item();
         deployment.getMetadata().setName("custom-port-deployment-1");
         
deployment.getSpec().getTemplate().getSpec().getContainers().get(0).getPorts()
                 .add(new 
ContainerPortBuilder().withName("test-port").withContainerPort(4000).build());
-        Deployment createdDeployment = 
mockServer.getClient().resource(deployment).inNamespace(namespace).createOrReplace();
+        deployment = KubeTestUtils.createWithStatusPreserved(client, 
deployment, namespace, Deployment.class);
 
-        ReplicaSet rs = 
mockServer.getClient().apps().replicaSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/replica-set-deployment-no-service.yaml")).item();
+        ReplicaSet rs = client.apps().replicaSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/replica-set-deployment-no-service.yaml")).item();
         rs.getMetadata().setName("custom-port-rs");
-        
rs.getMetadata().getOwnerReferences().get(0).setUid(createdDeployment.getMetadata().getUid());
-        ReplicaSet createdRs = 
mockServer.getClient().resource(rs).inNamespace(namespace).createOrReplace();
+        
rs.getMetadata().getOwnerReferences().get(0).setUid(deployment.getMetadata().getUid());
+        rs = KubeTestUtils.createWithStatusPreserved(client, rs, namespace, 
ReplicaSet.class);
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deployment/pod-deployment-no-service.yaml")).item();
-        
pod.getMetadata().getOwnerReferences().get(0).setUid(createdRs.getMetadata().getUid());
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deployment/pod-deployment-no-service.yaml")).item();
+        
pod.getMetadata().getOwnerReferences().get(0).setUid(rs.getMetadata().getUid());
         pod.getSpec().getContainers().get(0).getPorts()
-                .add(new ContainerPortBuilder()
-                        .withName("my-custom-port")
-                        .withContainerPort(4009).build());
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+                .add(new 
ContainerPortBuilder().withName("my-custom-port").withContainerPort(4009).build());
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.0.11:4009";, url.get());
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/Fabric8KubernetesServiceCatalogTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/Fabric8KubernetesServiceCatalogTest.java
index 54bc48295f..549cbdfd45 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/Fabric8KubernetesServiceCatalogTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/Fabric8KubernetesServiceCatalogTest.java
@@ -20,28 +20,28 @@ package 
org.kie.kogito.addons.quarkus.fabric8.k8s.service.catalog;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.kie.kogito.addons.k8s.resource.catalog.KubernetesServiceCatalogTest;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
-import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KnativeResourceDiscoveryTestUtil.createServiceIfNotExists;
+import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils.createKnativeServiceIfNotExists;
 
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 class Fabric8KubernetesServiceCatalogTest extends KubernetesServiceCatalogTest 
{
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    @Inject
+    OpenShiftClient client;
 
     @BeforeEach
     void beforeEach() {
-        createServiceIfNotExists(mockServer, "knative/quarkus-greeting.yaml", 
getNamespace(), getKnativeServiceName());
-        createServiceIfNotExists(mockServer, 
"knative/quarkus-greeting-kubernetes.yaml", getNamespace(), 
getKubernetesServiceName());
-        createServiceIfNotExists(mockServer, 
"knative/quarkus-greeting-openshift.yaml", getNamespace(), 
getOpenshiftServicename());
+        createKnativeServiceIfNotExists(client, 
"knative/quarkus-greeting.yaml", getNamespace(), getKnativeServiceName());
+        createKnativeServiceIfNotExists(client, 
"knative/quarkus-greeting-kubernetes.yaml", getNamespace(), 
getKubernetesServiceName());
+        createKnativeServiceIfNotExists(client, 
"knative/quarkus-greeting-openshift.yaml", getNamespace(), 
getOpenshiftServicename());
     }
 
     @Inject
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/IngressUtilsTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/IngressUtilsTest.java
index 7542569f57..e42fec0c99 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/IngressUtilsTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/IngressUtilsTest.java
@@ -22,12 +22,13 @@ import java.net.URI;
 import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.kubernetes.api.model.networking.v1.Ingress;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
@@ -37,50 +38,55 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
  * This test covers the queryIngressByName method from {@link IngressUtils}
  */
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class IngressUtilsTest {
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    private final String namespace = "serverless-workflow-greeting-quarkus";
 
     @Inject
     KubernetesResourceDiscovery discovery;
 
-    private final String namespace = "serverless-workflow-greeting-quarkus";
+    @Inject
+    OpenShiftClient client;
 
     @Test
-    public void testIngressNotFound() {
-        Ingress ingress = mockServer.getClient()
-                .network().v1().ingresses()
+    void testIngressNotFound() {
+        Ingress ingress = client.network().v1().ingresses()
                 .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("ingress/ingress-with-ip.yaml")).item();
-        
mockServer.getClient().resource(ingress).inNamespace(namespace).createOrReplace();
+                
.load(getClass().getClassLoader().getResourceAsStream("ingress/ingress-with-ip.yaml"))
+                .item();
+
+        KubeTestUtils.createWithStatusPreserved(client, ingress, namespace, 
Ingress.class);
 
         assertEquals(Optional.empty(),
                 
discovery.query(KubernetesResourceUri.parse("ingresses.v1.networking.k8s.io/" + 
namespace + "/invalid")));
     }
 
     @Test
-    public void testIngressWithIP() {
+    void testIngressWithIP() {
         var kubeURI = 
KubernetesResourceUri.parse("ingresses.v1.networking.k8s.io/" + namespace + 
"/process-quarkus-ingress");
 
-        Ingress ingress = 
mockServer.getClient().network().v1().ingresses().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("ingress/ingress-with-ip.yaml")).item();
+        Ingress ingress = client.network().v1().ingresses()
+                .inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("ingress/ingress-with-ip.yaml"))
+                .item();
 
-        
mockServer.getClient().resource(ingress).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, ingress, namespace, 
Ingress.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://80.80.25.9:80";, url.get());
     }
 
     @Test
-    public void testIngressWithTLS() {
+    void testIngressWithTLS() {
         var kubeURI = 
KubernetesResourceUri.parse("ingresses.v1.networking.k8s.io/" + namespace + 
"/hello-app-ingress-tls");
 
-        Ingress ingress = 
mockServer.getClient().network().v1().ingresses().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("ingress/ingress-with-tls-and-host.yaml")).item();
+        Ingress ingress = client.network().v1().ingresses()
+                .inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("ingress/ingress-with-tls-and-host.yaml"))
+                .item();
 
-        
mockServer.getClient().resource(ingress).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, ingress, namespace, 
Ingress.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("https://80.80.25.9:443";, url.get());
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KnativeServiceDiscoveryTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KnativeServiceDiscoveryTest.java
index c048fed5a3..cd9864bc8e 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KnativeServiceDiscoveryTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KnativeServiceDiscoveryTest.java
@@ -22,25 +22,26 @@ import java.net.URI;
 import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
-import 
org.kie.kogito.addons.quarkus.k8s.test.utils.KnativeResourceDiscoveryTestUtil;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
-import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
+import static org.assertj.core.api.Assertions.assertThat;
 
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 class KnativeServiceDiscoveryTest {
 
-    private static final String REMOTE_SERVICE_HOST = 
"serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io";
+    private static final String REMOTE_SERVICE_HOST = 
"serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io";
+    private static final String NAMESPACE = "default";
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    @Inject
+    OpenShiftClient client;
 
     @Inject
     KnativeServiceDiscovery knativeServiceDiscovery;
@@ -48,34 +49,26 @@ class KnativeServiceDiscoveryTest {
     @Test
     void queryService() {
         String remoteServiceUrl = "http://"; + REMOTE_SERVICE_HOST;
-        KnativeResourceDiscoveryTestUtil.createServiceIfNotExists(mockServer, 
"knative/quarkus-greeting.yaml", "test", 
"serverless-workflow-greeting-quarkus", remoteServiceUrl);
-
-        Optional<URI> uri = knativeServiceDiscovery.query(new 
KnativeServiceUri("test", "serverless-workflow-greeting-quarkus"));
 
-        assertThat(uri).map(URI::getHost)
-                .hasValue(REMOTE_SERVICE_HOST);
+        KubeTestUtils.createKnativeServiceIfNotExists(client, 
"knative/quarkus-greeting.yaml", NAMESPACE, 
"serverless-workflow-greeting-quarkus", remoteServiceUrl);
 
-        assertThat(uri).map(URI::getPort)
-                .hasValue(-1);
+        Optional<URI> uri = knativeServiceDiscovery.query(new 
KnativeServiceUri(NAMESPACE, "serverless-workflow-greeting-quarkus"));
 
-        assertThat(uri).map(URI::getScheme)
-                .hasValue("http");
+        assertThat(uri).map(URI::getHost).hasValue(REMOTE_SERVICE_HOST);
+        assertThat(uri).map(URI::getPort).hasValue(-1);
+        assertThat(uri).map(URI::getScheme).hasValue("http");
     }
 
     @Test
     void https() {
         String remoteServiceUrl = "https://"; + REMOTE_SERVICE_HOST;
-        KnativeResourceDiscoveryTestUtil.createServiceIfNotExists(mockServer, 
"knative/quarkus-greeting-https.yaml", "test", 
"serverless-workflow-greeting-quarkus-https", remoteServiceUrl);
-
-        Optional<URI> url = knativeServiceDiscovery.query(new 
KnativeServiceUri("test", "serverless-workflow-greeting-quarkus-https"));
 
-        assertThat(url).map(URI::getHost)
-                .hasValue(REMOTE_SERVICE_HOST);
+        KubeTestUtils.createKnativeServiceIfNotExists(client, 
"knative/quarkus-greeting-https.yaml", NAMESPACE, 
"serverless-workflow-greeting-quarkus-https", remoteServiceUrl);
 
-        assertThat(url).map(URI::getPort)
-                .hasValue(-1);
+        Optional<URI> url = knativeServiceDiscovery.query(new 
KnativeServiceUri(NAMESPACE, "serverless-workflow-greeting-quarkus-https"));
 
-        assertThat(url).map(URI::getScheme)
-                .hasValue("https");
+        assertThat(url).map(URI::getHost).hasValue(REMOTE_SERVICE_HOST);
+        assertThat(url).map(URI::getPort).hasValue(-1);
+        assertThat(url).map(URI::getScheme).hasValue("https");
     }
 }
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscoveryTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscoveryTest.java
index 01f250e0b5..94b4994381 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscoveryTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/KubernetesResourceDiscoveryTest.java
@@ -22,41 +22,42 @@ import java.net.URI;
 import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.knative.client.KnativeClient;
 import io.fabric8.kubernetes.api.model.Service;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
- * This tests also covers the queryServiceByName method from {@link 
ServiceUtils}
+ * This test also covers the queryServiceByName method from {@link 
ServiceUtils}
  */
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class KubernetesResourceDiscoveryTest {
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    private final String namespace = "serverless-workflow-greeting-quarkus";
 
     @Inject
-    KubernetesResourceDiscovery kubernetesResourceDiscovery;
+    OpenShiftClient client;
 
-    private final String namespace = "serverless-workflow-greeting-quarkus";
+    @Inject
+    KubernetesResourceDiscovery kubernetesResourceDiscovery;
 
     @Test
     public void testServiceNodePort() {
         var kubeURI = KubernetesResourceUri.parse("services.v1/" + namespace + 
"/process-quarkus-example-pod-service");
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-node-port.yaml")).item();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-node-port.yaml")).item();
 
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = 
kubernetesResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.10:80";, url.get());
@@ -66,12 +67,13 @@ public class KubernetesResourceDiscoveryTest {
     public void testServiceNodePortCustomPortName() {
         var kubeURI = KubernetesResourceUri.parse("services.v1/" + namespace + 
"/custom-port-name-service?port-name=my-custom-port");
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-node-port.yaml")).item();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-node-port.yaml")).item();
         service.getMetadata().setName("custom-port-name-service");
         service.getSpec().getPorts().get(0).setName("my-custom-port");
         service.getSpec().getPorts().get(0).setPort(8089);
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = 
kubernetesResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.10:8089";, url.get());
@@ -81,9 +83,10 @@ public class KubernetesResourceDiscoveryTest {
     public void testServiceClusterIP() {
         var kubeURI = KubernetesResourceUri.parse("services.v1/" + namespace + 
"/process-quarkus-example-pod-clusterip-svc");
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = 
kubernetesResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.10:80";, url.get());
@@ -93,9 +96,10 @@ public class KubernetesResourceDiscoveryTest {
     public void testServiceExternalName() {
         var kubeURI = KubernetesResourceUri.parse("services.v1/" + namespace + 
"/process-quarkus-example-pod");
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-external-name.yaml")).item();
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-external-name.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = 
kubernetesResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://my-public.domain.org:80";, url.get());
@@ -103,9 +107,10 @@ public class KubernetesResourceDiscoveryTest {
 
     @Test
     public void testNotFoundService() {
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         assertEquals(Optional.empty(),
                 
kubernetesResourceDiscovery.query(KubernetesResourceUri.parse("services.v1/" + 
namespace + "/service-1")));
@@ -113,10 +118,11 @@ public class KubernetesResourceDiscoveryTest {
 
     @Test
     public void testNotSupportedTypeService() {
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
         service.getSpec().setType(KubeConstants.LOAD_BALANCER_TYPE);
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         assertEquals(Optional.empty(),
                 
kubernetesResourceDiscovery.query(KubernetesResourceUri.parse("services.v1/" + 
namespace + "/process-quarkus-example-pod-clusterip-svc")));
@@ -124,11 +130,13 @@ public class KubernetesResourceDiscoveryTest {
 
     @Test
     public void testServiceWithoutNamespace() {
-        var kubeURI = 
KubernetesResourceUri.parse("services.v1/process-quarkus-example-pod-service");
+        var kubeURI = KubernetesResourceUri.parse("services.v1/svc-no-port");
+
+        Service service = client.services().inNamespace("default")
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-node-port.yaml")).item();
+        service.getMetadata().setName("svc-no-port");
 
-        Service service = mockServer.getClient().services().inNamespace("test")
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-node-port.yaml")).item();
-        
mockServer.getClient().resource(service).inNamespace("test").createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, service, "default", 
Service.class);
 
         Optional<String> url = 
kubernetesResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.10:80";, url.get());
@@ -136,13 +144,13 @@ public class KubernetesResourceDiscoveryTest {
 
     @Test
     public void testNotFoundKnativeService() {
-        KnativeClient knativeClient = 
mockServer.getClient().adapt(KnativeClient.class);
+        KnativeClient knativeClient = client.adapt(KnativeClient.class);
+
         io.fabric8.knative.serving.v1.Service service = 
knativeClient.services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("knative/quarkus-greeting.yaml")).item();
+                
.load(getClass().getClassLoader().getResourceAsStream("knative/quarkus-greeting.yaml")).item();
         service.getMetadata().setName("test");
 
-        // ItemWritableOperation#create is deprecated. However, we can't use 
the new method while Quarkus LTS is not greater than 2.16.
-        knativeClient.services().inNamespace(namespace).create(service);
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
io.fabric8.knative.serving.v1.Service.class);
 
         assertEquals(Optional.empty(),
                 
kubernetesResourceDiscovery.query(KubernetesResourceUri.parse("services.v1.serving.knative.dev/"
 + namespace + "/invalid")));
@@ -152,14 +160,12 @@ public class KubernetesResourceDiscoveryTest {
     public void testKnativeService() {
         var kubeURI = 
KubernetesResourceUri.parse("services.v1.serving.knative.dev/" + namespace + 
"/serverless-workflow-greeting-quarkus");
 
-        KnativeClient knativeClient = 
mockServer.getClient().adapt(KnativeClient.class);
-        io.fabric8.knative.serving.v1.Service kService = 
knativeClient.services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("knative/quarkus-greeting.yaml")).item();
+        io.fabric8.knative.serving.v1.Service kService = 
client.adapt(KnativeClient.class).services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("knative/quarkus-greeting.yaml")).item();
 
-        // ItemWritableOperation#create is deprecated. However, we can't use 
the new method while Quarkus LTS is not greater than 2.16.
-        knativeClient.services().inNamespace(namespace).create(kService);
+        KubeTestUtils.createWithStatusPreserved(client, kService, namespace, 
io.fabric8.knative.serving.v1.Service.class);
 
         Optional<String> url = 
kubernetesResourceDiscovery.query(kubeURI).map(URI::toString);
-        
assertEquals("http://serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io";,
 url.get());
+        
assertEquals("http://serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io";,
 url.get());
     }
 }
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/OpenShiftServiceDiscoveryTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/OpenShiftServiceDiscoveryTest.java
index e27d9107c0..4b6a124384 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/OpenShiftServiceDiscoveryTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/OpenShiftServiceDiscoveryTest.java
@@ -22,127 +22,117 @@ import java.net.URI;
 import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.api.model.ReplicationController;
 import io.fabric8.kubernetes.api.model.Service;
 import io.fabric8.openshift.api.model.DeploymentConfig;
 import io.fabric8.openshift.api.model.Route;
-import io.fabric8.openshift.client.server.mock.OpenShiftServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.OpenShiftTestServer;
-import io.quarkus.test.kubernetes.client.WithOpenShiftTestServer;
 
 import jakarta.inject.Inject;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 @QuarkusTest
-@WithOpenShiftTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class OpenShiftServiceDiscoveryTest {
 
-    @OpenShiftTestServer
-    OpenShiftServer mockServer;
+    private final String namespace = "serverless-workflow-greeting-quarkus";
 
     @Inject
     OpenShiftResourceDiscovery kubeResourceDiscovery;
 
-    private final String namespace = "serverless-workflow-greeting-quarkus";
+    @Inject
+    OpenShiftClient client;
 
     @Test
-    public void testNotFoundDeploymentConfig() {
-        DeploymentConfig deploymentConfig = 
mockServer.getOpenshiftClient().deploymentConfigs().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config.yaml")).item();
+    void testNotFoundDeploymentConfig() {
+        DeploymentConfig deploymentConfig = 
client.deploymentConfigs().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config.yaml")).item();
         deploymentConfig.getMetadata().setName("test");
-        
mockServer.getOpenshiftClient().resource(deploymentConfig).inNamespace(namespace).createOrReplace();
+
+        KubeTestUtils.createWithStatusPreserved(client, deploymentConfig, 
namespace, DeploymentConfig.class);
+
         assertEquals(Optional.empty(),
                 
kubeResourceDiscovery.query(KubernetesResourceUri.parse("deploymentconfigs.v1.apps.openshift.io/"
 + namespace + "/invalid")));
     }
 
     @Test
-    public void testDeploymentConfigWithService() {
+    void testDeploymentConfigWithService() {
         var kubeURI = 
KubernetesResourceUri.parse("deploymentconfigs.v1.apps.openshift.io/" + 
namespace + "/example-dc-with-service");
 
-        DeploymentConfig deploymentConfig = mockServer.getOpenshiftClient()
-                .deploymentConfigs()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config.yaml")).item();
-        
mockServer.getOpenshiftClient().resource(deploymentConfig).inNamespace(namespace).createOrReplace();
+        DeploymentConfig deploymentConfig = 
client.deploymentConfigs().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config.yaml")).item();
+        KubeTestUtils.createWithStatusPreserved(client, deploymentConfig, 
namespace, DeploymentConfig.class);
 
-        Service service = mockServer.getOpenshiftClient()
-                .services()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config-service.yaml")).item();
-        
mockServer.getOpenshiftClient().resource(service).inNamespace(namespace).createOrReplace();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config-service.yaml")).item();
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = 
kubeResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.12:80";, url.get());
     }
 
     @Test
-    public void testDeploymentConfigWithoutService() {
+    void testDeploymentConfigWithoutService() {
         var kubeURI = 
KubernetesResourceUri.parse("deploymentconfigs.v1.apps.openshift.io/" + 
namespace + "/example-dc-no-service");
 
-        DeploymentConfig deploymentConfig = mockServer.getOpenshiftClient()
-                .deploymentConfigs()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config-no-service.yaml")).item();
-        DeploymentConfig createdDc = 
mockServer.getOpenshiftClient().resource(deploymentConfig).inNamespace(namespace).createOrReplace();
-
-        ReplicationController rc = mockServer.getOpenshiftClient()
-                .replicationControllers()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deploymentConfig/replication-controller-dc-no-svc.yaml")).item();
-        
rc.getMetadata().getOwnerReferences().get(0).setUid(createdDc.getMetadata().getUid());
-        ReplicationController createdRc = 
mockServer.getOpenshiftClient().resource(rc).inNamespace(namespace).createOrReplace();
-
-        Pod pod = mockServer.getOpenshiftClient()
-                .pods()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("deploymentConfig/pod-deployment-config-no-service.yaml")).item();
+        DeploymentConfig deploymentConfig = 
client.deploymentConfigs().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deploymentConfig/deployment-config-no-service.yaml")).item();
+        deploymentConfig = KubeTestUtils.createWithStatusPreserved(client, 
deploymentConfig, namespace, DeploymentConfig.class);
+
+        ReplicationController rc = 
client.replicationControllers().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deploymentConfig/replication-controller-dc-no-svc.yaml")).item();
+        
rc.getMetadata().getOwnerReferences().get(0).setUid(deploymentConfig.getMetadata().getUid());
+        rc = KubeTestUtils.createWithStatusPreserved(client, rc, namespace, 
ReplicationController.class);
+
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("deploymentConfig/pod-deployment-config-no-service.yaml")).item();
         pod.getMetadata().setName("example-dc-no-service-1-phlx4");
-        
pod.getMetadata().getOwnerReferences().get(0).setUid(createdRc.getMetadata().getUid());
-        
mockServer.getOpenshiftClient().resource(pod).inNamespace(namespace).createOrReplace();
+        
pod.getMetadata().getOwnerReferences().get(0).setUid(rc.getMetadata().getUid());
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = 
kubeResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.25.190:8080";, url.get());
     }
 
     @Test
-    public void testNotFoundRoute() {
-        Route route = mockServer.getOpenshiftClient()
-                .routes()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("route/route.yaml")).item();
-        
mockServer.getOpenshiftClient().resource(route).inNamespace(namespace).createOrReplace();
+    void testNotFoundRoute() {
+        Route route = client.routes().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("route/route.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, route, namespace, 
Route.class);
 
         assertEquals(Optional.empty(),
                 
kubeResourceDiscovery.query(KubernetesResourceUri.parse("routes.v1.route.openshift.io/"
 + namespace + "/invalid")));
     }
 
     @Test
-    public void testRoute() {
+    void testRoute() {
         var kubeURI = 
KubernetesResourceUri.parse("routes.v1.route.openshift.io/" + namespace + 
"/test-route");
 
-        Route route = mockServer.getOpenshiftClient()
-                .routes()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("route/route.yaml")).item();
-        
mockServer.getOpenshiftClient().resource(route).inNamespace(namespace).createOrReplace();
+        Route route = client.routes().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("route/route.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, route, namespace, 
Route.class);
 
         Optional<String> url = 
kubeResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("http://test-route.org:80";, url.get());
     }
 
     @Test
-    public void testRouteTLS() {
+    void testRouteTLS() {
         var kubeURI = 
KubernetesResourceUri.parse("routes.v1.route.openshift.io/" + namespace + 
"/test-route-tls");
 
-        Route route = mockServer.getOpenshiftClient()
-                .routes()
-                .inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("route/route-tls.yaml")).item();
-        
mockServer.getOpenshiftClient().resource(route).inNamespace(namespace).createOrReplace();
+        Route route = client.routes().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("route/route-tls.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, route, namespace, 
Route.class);
 
         Optional<String> url = 
kubeResourceDiscovery.query(kubeURI).map(URI::toString);
         assertEquals("https://secure-test-route-tls:443";, url.get());
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/PodUtilsTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/PodUtilsTest.java
index bacdf675d0..4ca9858aa9 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/PodUtilsTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/PodUtilsTest.java
@@ -23,107 +23,115 @@ import java.util.Map;
 import java.util.Optional;
 
 import org.junit.jupiter.api.Test;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.api.model.Service;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-/**
- * This tests also covers the queryServiceByLabelOrSelector method from {@link 
ServiceUtils}
- */
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class PodUtilsTest {
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    private final String namespace = "serverless-workflow-greeting-quarkus";
 
     @Inject
-    KubernetesResourceDiscovery discovery;
+    OpenShiftClient client;
 
-    private final String namespace = "serverless-workflow-greeting-quarkus";
+    @Inject
+    KubernetesResourceDiscovery discovery;
 
     @Test
-    public void testPodNotFound() {
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
+    void testPodNotFound() {
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
         pod.getMetadata().setName("test-pod");
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
+
         assertEquals(Optional.empty(),
                 discovery.query(KubernetesResourceUri.parse("pods.v1/" + 
namespace + "/hello")));
     }
 
     @Test
-    public void testPodWithNoService() {
-        var kubeURI = KubernetesResourceUri.parse("pods.v1/" + namespace + 
"/process-quarkus-example-pod-no-service");
+    void testPodWithNoService() {
+        final String tempNamespace = "temp-namespace";
+        var kubeURI = KubernetesResourceUri.parse("pods.v1/" + tempNamespace + 
"/test-pod-no-svc");
+
+        Pod pod = client.pods().inNamespace(tempNamespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
+        pod.getMetadata().setName("test-pod-no-svc");
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, pod, tempNamespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.0.21:8080";, url.get());
     }
 
     @Test
-    public void testPodWithNoServiceCustomPortName() {
+    void testPodWithNoServiceCustomPortName() {
         var kubeURI = KubernetesResourceUri.parse("pods.v1/" + namespace + 
"/pod-no-service-custom-port?port-name=my-custom-port");
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("pod/pod-no-service-custom-port-name.yaml")).item();
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("pod/pod-no-service-custom-port-name.yaml")).item();
+
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.0.22:52485";, url.get());
     }
 
     @Test
-    public void testPodWithService() {
+    void testPodWithService() {
         var kubeURI = KubernetesResourceUri.parse("pods.v1/" + namespace + 
"/test-pod-with-service");
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
         pod.getMetadata().setName("test-pod-with-service");
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
+
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
 
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.10:80";, url.get());
     }
 
     @Test
-    public void testPodWithServiceWithCustomLabel() {
+    void testPodWithServiceWithCustomLabel() {
         var kubeURI = KubernetesResourceUri.parse("pods.v1/" + namespace + 
"/test-pod-with-service-custom-label?labels=label-name=test-label;other-label=other-value");
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("pod/pod-no-service.yaml")).item();
         pod.getMetadata().setName("test-pod-with-service-custom-label");
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
-        service.getMetadata().setName(" 
process-quarkus-example-pod-clusterip-svc-custom-label");
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
-        Service service1 = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
+        
service.getMetadata().setName("process-quarkus-example-pod-clusterip-svc-custom-label");
+
+        KubeTestUtils.createWithStatusPreserved(client, service, namespace, 
Service.class);
+
+        Service service1 = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("service/service-clusterip.yaml")).item();
         Map<String, String> labels = service1.getMetadata().getLabels();
         labels.put("label-name", "test-label");
         service1.getMetadata().setLabels(labels);
         service1.getMetadata().setName("second-service");
         service1.getSpec().setClusterIP("20.20.20.20");
-        
mockServer.getClient().resource(service1).inNamespace(namespace).createOrReplace();
+
+        KubeTestUtils.createWithStatusPreserved(client, service1, namespace, 
Service.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://20.20.20.20:80";, url.get());
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/StatefulSetUtilsTest.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/StatefulSetUtilsTest.java
index c39d6eccbb..26440a09a6 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/StatefulSetUtilsTest.java
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/java/org/kie/kogito/addons/quarkus/fabric8/k8s/service/catalog/StatefulSetUtilsTest.java
@@ -23,6 +23,8 @@ import java.util.Optional;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.kubernetes.api.model.ContainerPortBuilder;
 import io.fabric8.kubernetes.api.model.IntOrString;
@@ -30,44 +32,41 @@ import io.fabric8.kubernetes.api.model.Pod;
 import io.fabric8.kubernetes.api.model.Service;
 import io.fabric8.kubernetes.api.model.ServicePortBuilder;
 import io.fabric8.kubernetes.api.model.apps.StatefulSet;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-/**
- * This tests also covers the queryServiceByLabelOrSelector method from {@link 
ServiceUtils}
- * and queryPodByOwnerReference from {@link PodUtils}
- */
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class StatefulSetUtilsTest {
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    private final String namespace = "serverless-workflow-greeting-quarkus";
 
     @Inject
-    KubernetesResourceDiscovery discovery;
+    OpenShiftClient client;
 
-    private final String namespace = "serverless-workflow-greeting-quarkus";
+    @Inject
+    KubernetesResourceDiscovery discovery;
 
     @BeforeEach
     public void removeResources() {
-        
mockServer.getClient().apps().statefulSets().inNamespace(namespace).delete();
-        mockServer.getClient().services().inNamespace(namespace).delete();
+        client.apps().statefulSets().inNamespace(namespace).delete();
+        client.services().inNamespace(namespace).delete();
     }
 
     @Test
     public void testNotFoundStatefulSet() {
-        StatefulSet statefulSet = 
mockServer.getClient().apps().statefulSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
+        StatefulSet statefulSet = 
client.apps().statefulSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
         statefulSet.getMetadata().setName("test");
-        
mockServer.getClient().resource(statefulSet).inNamespace(namespace).createOrReplace();
+
+        client.resource(statefulSet).inNamespace(namespace).createOr(existing 
-> client.resource(statefulSet).inNamespace(namespace).update());
+
         assertEquals(Optional.empty(),
                 
discovery.query(KubernetesResourceUri.parse("statefulsets.v1.apps/" + namespace 
+ "/invalid")));
     }
@@ -76,13 +75,15 @@ public class StatefulSetUtilsTest {
     public void testStatefulSetWithService() {
         var kubeURI = KubernetesResourceUri.parse("statefulsets.v1.apps/" + 
namespace + "/example-statefulset-with-service");
 
-        StatefulSet statefulSet = 
mockServer.getClient().apps().statefulSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset.yaml")).item();
-        
mockServer.getClient().resource(statefulSet).inNamespace(namespace).createOrReplace();
+        StatefulSet statefulSet = 
client.apps().statefulSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset.yaml")).item();
+
+        client.resource(statefulSet).inNamespace(namespace).createOr(existing 
-> client.resource(statefulSet).inNamespace(namespace).update());
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-service.yaml")).item();
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-service.yaml")).item();
+
+        client.resource(service).inNamespace(namespace).createOr(existing -> 
client.resource(service).inNamespace(namespace).update());
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.11:80";, url.get());
@@ -91,17 +92,19 @@ public class StatefulSetUtilsTest {
     @Test
     public void testStatefulSetWithServiceWithCustomPortName() {
         var kubeURI = KubernetesResourceUri.parse("statefulsets.v1.apps/" + 
namespace + "/custom-port-statefulset?port-name=my-custom-port-stateful");
-        StatefulSet statefulSet = 
mockServer.getClient().apps().statefulSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset.yaml")).item();
+
+        StatefulSet statefulSet = 
client.apps().statefulSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset.yaml")).item();
         statefulSet.getMetadata().setName("custom-port-statefulset");
         
statefulSet.getSpec().getTemplate().getSpec().getContainers().get(0).getPorts()
                 .add(new 
ContainerPortBuilder().withName("test-port").withContainerPort(4000).build());
         statefulSet.getMetadata().getLabels().put("app-custom", 
"custom-port-statefulset");
         statefulSet.getMetadata().getLabels().remove("app");
-        
mockServer.getClient().resource(statefulSet).inNamespace(namespace).createOrReplace();
 
-        Service service = 
mockServer.getClient().services().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-service.yaml")).item();
+        client.resource(statefulSet).inNamespace(namespace).createOr(existing 
-> client.resource(statefulSet).inNamespace(namespace).update());
+
+        Service service = client.services().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-service.yaml")).item();
         service.getMetadata().setName("custom-port-name-service-statefulset");
         service.getSpec().getPorts().add(new ServicePortBuilder()
                 .withName("my-custom-port-stateful")
@@ -109,7 +112,8 @@ public class StatefulSetUtilsTest {
                 .withPort(4009).build());
         service.getSpec().getSelector().put("app-custom", 
"custom-port-statefulset");
         service.getSpec().getSelector().remove("app");
-        
mockServer.getClient().resource(service).inNamespace(namespace).createOrReplace();
+
+        client.resource(service).inNamespace(namespace).createOr(existing -> 
client.resource(service).inNamespace(namespace).update());
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://10.10.10.11:4009";, url.get());
@@ -119,15 +123,16 @@ public class StatefulSetUtilsTest {
     public void testStatefulSetNoService() {
         var kubeURI = KubernetesResourceUri.parse("statefulsets.v1.apps/" + 
namespace + "/process-quarkus-example-statefulset-no-service");
 
-        StatefulSet statefulSet = 
mockServer.getClient().apps().statefulSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
-        StatefulSet createdDeployment = 
mockServer.getClient().resource(statefulSet).inNamespace(namespace).createOrReplace();
+        StatefulSet statefulSet = 
client.apps().statefulSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
+
+        statefulSet = KubeTestUtils.createWithStatusPreserved(client, 
statefulSet, namespace, StatefulSet.class);
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-pod-no-service.yaml")).item();
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-pod-no-service.yaml")).item();
         pod.getMetadata().setName("pod-deployment-no-service");
-        
pod.getMetadata().getOwnerReferences().get(0).setUid(createdDeployment.getMetadata().getUid());
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+        
pod.getMetadata().getOwnerReferences().get(0).setUid(statefulSet.getMetadata().getUid());
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.0.11:8080";, url.get());
@@ -137,17 +142,19 @@ public class StatefulSetUtilsTest {
     public void testStatefulSetNoService2Replicas() {
         var kubeURI = KubernetesResourceUri.parse("statefulsets.v1.apps/" + 
namespace + "/example-statefulset-no-service-2-replicas");
 
-        StatefulSet statefulSet = 
mockServer.getClient().apps().statefulSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
+        StatefulSet statefulSet = 
client.apps().statefulSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
         
statefulSet.getMetadata().setName("example-statefulset-no-service-2-replicas");
         statefulSet.getStatus().setReplicas(2);
-        StatefulSet createdstatefulSet = 
mockServer.getClient().resource(statefulSet).inNamespace(namespace).createOrReplace();
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-pod-no-service.yaml")).item();
+        statefulSet = KubeTestUtils.createWithStatusPreserved(client, 
statefulSet, namespace, StatefulSet.class);
+
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-pod-no-service.yaml")).item();
         pod.getMetadata().setName("pod-2-replicas");
-        
pod.getMetadata().getOwnerReferences().get(0).setUid(createdstatefulSet.getMetadata().getUid());
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+        
pod.getMetadata().getOwnerReferences().get(0).setUid(statefulSet.getMetadata().getUid());
+
+        KubeTestUtils.createWithStatusPreserved(client, pod, namespace, 
Pod.class);
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertTrue(url.isEmpty());
@@ -157,21 +164,22 @@ public class StatefulSetUtilsTest {
     public void testStatefulSetNoServiceCustomPortName() {
         var kubeURI = KubernetesResourceUri.parse("statefulsets.v1.apps/" + 
namespace + "/custom-port-statefulset-1?port-name=my-custom-port");
 
-        StatefulSet statefulSet = 
mockServer.getClient().apps().statefulSets().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
+        StatefulSet statefulSet = 
client.apps().statefulSets().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-no-service.yaml")).item();
         statefulSet.getMetadata().setName("custom-port-statefulset-1");
         
statefulSet.getSpec().getTemplate().getSpec().getContainers().get(0).getPorts()
                 .add(new 
ContainerPortBuilder().withName("test-port").withContainerPort(4000).build());
-        StatefulSet createdStatefulSet = 
mockServer.getClient().resource(statefulSet).inNamespace(namespace).createOrReplace();
 
-        Pod pod = mockServer.getClient().pods().inNamespace(namespace)
-                
.load(this.getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-pod-no-service.yaml")).item();
+        StatefulSet createdStatefulSet =
+                
client.resource(statefulSet).inNamespace(namespace).createOr(existing -> 
client.resource(statefulSet).inNamespace(namespace).update());
+
+        Pod pod = client.pods().inNamespace(namespace)
+                
.load(getClass().getClassLoader().getResourceAsStream("statefulset/statefulset-pod-no-service.yaml")).item();
         
pod.getMetadata().getOwnerReferences().get(0).setUid(createdStatefulSet.getMetadata().getUid());
         pod.getSpec().getContainers().get(0).getPorts()
-                .add(new ContainerPortBuilder()
-                        .withName("my-custom-port")
-                        .withContainerPort(4010).build());
-        
mockServer.getClient().resource(pod).inNamespace(namespace).createOrReplace();
+                .add(new 
ContainerPortBuilder().withName("my-custom-port").withContainerPort(4010).build());
+
+        client.resource(pod).inNamespace(namespace).createOr(existing -> 
client.resource(pod).inNamespace(namespace).update());
 
         Optional<String> url = discovery.query(kubeURI).map(URI::toString);
         assertEquals("http://172.17.0.11:4010";, url.get());
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/application.properties
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/application.properties
new file mode 100644
index 0000000000..3a22304f56
--- /dev/null
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/application.properties
@@ -0,0 +1,2 @@
+quarkus.devservices.enabled=false
+quarkus.kubernetes-client.namespace=default
\ No newline at end of file
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-https.yaml
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-https.yaml
index 50c124a0dd..20cad62212 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-https.yaml
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-https.yaml
@@ -52,7 +52,7 @@ spec:
       percent: 100
 status:
   address:
-    url: http://serverless-workflow-greeting-quarkus.test.svc.cluster.local
+    url: http://serverless-workflow-greeting-quarkus.default.svc.cluster.local
   conditions:
     - lastTransitionTime: '2022-08-17T13:59:00Z'
       status: 'True'
@@ -70,4 +70,4 @@ status:
     - latestRevision: true
       percent: 100
       revisionName: serverless-workflow-greeting-quarkus-00001
-  url: https://serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io
+  url: 
https://serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-kubernetes.yaml
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-kubernetes.yaml
index 255e9cd085..0d06b493d7 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-kubernetes.yaml
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-kubernetes.yaml
@@ -52,7 +52,7 @@ spec:
       percent: 100
 status:
   address:
-    url: http://serverless-workflow-greeting-quarkus.test.svc.cluster.local
+    url: http://serverless-workflow-greeting-quarkus.default.svc.cluster.local
   conditions:
     - lastTransitionTime: '2022-08-17T13:59:00Z'
       status: 'True'
@@ -70,4 +70,4 @@ status:
     - latestRevision: true
       percent: 100
       revisionName: serverless-workflow-greeting-quarkus-00001
-  url: 
http://serverless-workflow-greeting-quarkus-kubernetes.test.10.99.154.147.sslip.io
+  url: 
http://serverless-workflow-greeting-quarkus-kubernetes.default.10.99.154.147.sslip.io
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-openshift.yaml
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-openshift.yaml
index 4967f91e87..f8ef98956d 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-openshift.yaml
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting-openshift.yaml
@@ -52,7 +52,7 @@ spec:
       percent: 100
 status:
   address:
-    url: http://serverless-workflow-greeting-quarkus.test.svc.cluster.local
+    url: http://serverless-workflow-greeting-quarkus.default.svc.cluster.local
   conditions:
     - lastTransitionTime: '2022-08-17T13:59:00Z'
       status: 'True'
@@ -70,4 +70,4 @@ status:
     - latestRevision: true
       percent: 100
       revisionName: serverless-workflow-greeting-quarkus-00001
-  url: 
http://serverless-workflow-greeting-quarkus-openshift.test.10.99.154.147.sslip.io
+  url: 
http://serverless-workflow-greeting-quarkus-openshift.default.10.99.154.147.sslip.io
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting.yaml
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting.yaml
index cd9993e400..96e7dd0ee3 100644
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting.yaml
+++ 
b/quarkus/addons/fabric8-kubernetes-service-catalog/runtime/src/test/resources/knative/quarkus-greeting.yaml
@@ -52,7 +52,7 @@ spec:
       percent: 100
 status:
   address:
-    url: http://serverless-workflow-greeting-quarkus.test.svc.cluster.local
+    url: http://serverless-workflow-greeting-quarkus.default.svc.cluster.local
   conditions:
     - lastTransitionTime: '2022-08-17T13:59:00Z'
       status: 'True'
@@ -70,4 +70,4 @@ status:
     - latestRevision: true
       percent: 100
       revisionName: serverless-workflow-greeting-quarkus-00001
-  url: http://serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io
+  url: 
http://serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/KnativeResourceDiscoveryTestUtil.java
 
b/quarkus/addons/fabric8-kubernetes-service-catalog/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/KnativeResourceDiscoveryTestUtil.java
deleted file mode 100644
index 4ab6754563..0000000000
--- 
a/quarkus/addons/fabric8-kubernetes-service-catalog/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/KnativeResourceDiscoveryTestUtil.java
+++ /dev/null
@@ -1,58 +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 org.kie.kogito.addons.quarkus.k8s.test.utils;
-
-import java.io.InputStream;
-
-import io.fabric8.knative.client.KnativeClient;
-import io.fabric8.knative.serving.v1.Service;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
-
-public final class KnativeResourceDiscoveryTestUtil {
-
-    private KnativeResourceDiscoveryTestUtil() {
-    }
-
-    public static void createServiceIfNotExists(KubernetesServer k8sServer, 
String knativeYaml, String namespace, String serviceName) {
-        createServiceIfNotExists(k8sServer, knativeYaml, namespace, 
serviceName, null);
-    }
-
-    @SuppressWarnings("deprecation") // Quarkus LTS 2.13 compatibility
-    public static void createServiceIfNotExists(KubernetesServer k8sServer, 
String knativeYaml, String namespace, String serviceName, String 
remoteServiceUrl) {
-        if 
(k8sServer.getClient().services().inNamespace(namespace).withName(serviceName).get()
 == null) {
-            KnativeClient knativeClient = 
k8sServer.getClient().adapt(KnativeClient.class);
-
-            Service service = knativeClient.services()
-                    .inNamespace(namespace)
-                    .load(getResourceAsStream(knativeYaml))
-                    .item();
-
-            if (remoteServiceUrl != null) {
-                service.getStatus().setUrl(remoteServiceUrl);
-            }
-
-            // ItemWritableOperation#create is deprecated. However, we can't 
use the new method while Quarkus LTS is not greater than 2.16.
-            knativeClient.services().inNamespace(namespace).create(service);
-        }
-    }
-
-    private static InputStream getResourceAsStream(String knativeYaml) {
-        return 
KnativeResourceDiscoveryTestUtil.class.getClassLoader().getResourceAsStream(knativeYaml);
-    }
-}
diff --git 
a/quarkus/addons/knative/eventing/deployment/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessor.java
 
b/quarkus/addons/knative/eventing/deployment/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessor.java
index 1587962ba3..69d8142658 100644
--- 
a/quarkus/addons/knative/eventing/deployment/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessor.java
+++ 
b/quarkus/addons/knative/eventing/deployment/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessor.java
@@ -18,7 +18,6 @@
  */
 package org.kie.kogito.addons.quarkus.knative.eventing.deployment;
 
-import java.nio.file.Path;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
@@ -48,9 +47,8 @@ import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.builditem.GeneratedFileSystemResourceBuildItem;
+import io.quarkus.deployment.builditem.GeneratedResourceBuildItem;
 import io.quarkus.deployment.builditem.SystemPropertyBuildItem;
-import io.quarkus.deployment.pkg.builditem.OutputTargetBuildItem;
 import io.quarkus.smallrye.health.deployment.spi.HealthBuildItem;
 
 import static 
org.kie.kogito.addons.quarkus.knative.eventing.KnativeEventingConfigSourceFactory.INCLUDE_PROCESS_EVENTS;
@@ -94,14 +92,12 @@ public class KogitoAddOnKnativeEventingProcessor extends 
AnyEngineKogitoAddOnPro
      * This conditional was added in favor of the kogito serverless workflow 
operator dev mode image, since in dev
      * mode no Broker, nor Sink Binding is generated.
      *
-     * @param outputTarget Build item created by the quarkus deployment 
infrastructure with information about the current output target directory to 
generate the files
      * @param resourcesMetadata Build item generated by other processors (e.g. 
{@link KogitoProcessKnativeEventingProcessor})
      * @param generatedResources outcome of this build step with the contents 
of the `kogito.yml` file
      */
     @BuildStep(onlyIfNot = { IsTest.class, IsDevelopment.class })
-    void generate(OutputTargetBuildItem outputTarget,
-            Optional<KogitoKnativeResourcesMetadataBuildItem> 
resourcesMetadata,
-            BuildProducer<GeneratedFileSystemResourceBuildItem> 
generatedResources) {
+    void generate(Optional<KogitoKnativeResourcesMetadataBuildItem> 
resourcesMetadata,
+            BuildProducer<GeneratedResourceBuildItem> generatedResources) {
         if (resourcesMetadata.isPresent()) {
             final List<Trigger> triggers = 
this.generateTriggers(resourcesMetadata.get());
             final Optional<KogitoSource> kogitoSource = 
this.generateKogitoSource(resourcesMetadata.get());
@@ -112,7 +108,6 @@ public class KogitoAddOnKnativeEventingProcessor extends 
AnyEngineKogitoAddOnPro
 
             if (sinkBinding.isPresent() || kogitoSource.isPresent() || 
!triggers.isEmpty()) {
                 final Optional<Broker> broker = this.generateBroker();
-                final Path outputDir = 
outputTarget.getOutputDirectory().resolve(TARGET_KUBERNETES);
                 final byte[] resourcesBytes =
                         new KogitoKnativeGenerator()
                                 .addResources(triggers)
@@ -123,8 +118,9 @@ public class KogitoAddOnKnativeEventingProcessor extends 
AnyEngineKogitoAddOnPro
                 if (resourcesBytes == null || resourcesBytes.length == 0) {
                     LOGGER.warn("Couldn't generate Kogito Knative resources 
for service {}", resourcesMetadata.get().getDeployment().getName());
                 } else {
-                    generatedResources.produce(new 
GeneratedFileSystemResourceBuildItem(Path.of(TARGET_KUBERNETES, 
FILE_NAME).toString(), resourcesBytes));
-                    LOGGER.info("Generated Knative resources for Kogito 
Service {} in {}", resourcesMetadata.get().getDeployment().getName(), 
outputDir.resolve(FILE_NAME));
+                    generatedResources.produce(new 
GeneratedResourceBuildItem(TARGET_KUBERNETES + "/" + FILE_NAME, 
resourcesBytes));
+                    LOGGER.info("Generated Knative resources for Kogito 
Service {} in {}/{}",
+                            resourcesMetadata.get().getDeployment().getName(), 
TARGET_KUBERNETES, FILE_NAME);
                 }
             } else {
                 LOGGER.info("No events found in the Kogito resources defined 
in the project. Skipping Kogito Knative resources generation.");
diff --git 
a/quarkus/addons/knative/eventing/deployment/src/test/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessorTest.java
 
b/quarkus/addons/knative/eventing/deployment/src/test/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessorTest.java
index b194995fd5..6fa69b5c39 100644
--- 
a/quarkus/addons/knative/eventing/deployment/src/test/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessorTest.java
+++ 
b/quarkus/addons/knative/eventing/deployment/src/test/java/org/kie/kogito/addons/quarkus/knative/eventing/deployment/KogitoAddOnKnativeEventingProcessorTest.java
@@ -18,7 +18,6 @@
  */
 package org.kie.kogito.addons.quarkus.knative.eventing.deployment;
 
-import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Optional;
@@ -35,9 +34,8 @@ import org.mockito.ArgumentCaptor;
 
 import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
-import io.quarkus.deployment.builditem.GeneratedFileSystemResourceBuildItem;
+import io.quarkus.deployment.builditem.GeneratedResourceBuildItem;
 import io.quarkus.deployment.builditem.SystemPropertyBuildItem;
-import io.quarkus.deployment.pkg.builditem.OutputTargetBuildItem;
 import io.quarkus.smallrye.health.deployment.spi.HealthBuildItem;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -56,7 +54,6 @@ class KogitoAddOnKnativeEventingProcessorTest {
 
     @Test
     void checkKogitoFileIsGeneratedWithDefaultConfig() {
-        final OutputTargetBuildItem outputTargetBuildItem = new 
OutputTargetBuildItem(Paths.get("/"), "", false, null, Optional.empty());
         final Set<CloudEventMeta> ces = new HashSet<>();
         ces.add(new CloudEventMeta("myProducedEvent", "/local/test", 
EventKind.PRODUCED));
         ces.add(new CloudEventMeta("myConsumedEvent", "/local/test", 
EventKind.CONSUMED));
@@ -66,7 +63,7 @@ class KogitoAddOnKnativeEventingProcessorTest {
         final KogitoAddOnKnativeEventingProcessor eventingProcessor = 
buildTestProcessorWithDefaultConfig();
         final MockGeneratedFSProducer producer = new MockGeneratedFSProducer();
 
-        eventingProcessor.generate(outputTargetBuildItem, 
Optional.of(resourcesMetadataBuildItem), producer);
+        eventingProcessor.generate(Optional.of(resourcesMetadataBuildItem), 
producer);
 
         assertNotNull(producer.getItem().getData());
         assertTrue(producer.getItem().getData().length > 0);
@@ -78,7 +75,6 @@ class KogitoAddOnKnativeEventingProcessorTest {
 
     @Test
     void checkKogitoFileIsGeneratedOnlyProduced() {
-        final OutputTargetBuildItem outputTargetBuildItem = new 
OutputTargetBuildItem(Paths.get("/"), "", false, null, Optional.empty());
         final Set<CloudEventMeta> ces = new HashSet<>();
         ces.add(new CloudEventMeta("myProducedEvent", "/local/test", 
EventKind.PRODUCED));
         final KogitoServiceDeploymentTarget deploymentTarget = new 
KogitoServiceDeploymentTarget("apps", "v1", "Deployment", "kogito-service");
@@ -87,7 +83,7 @@ class KogitoAddOnKnativeEventingProcessorTest {
         final KogitoAddOnKnativeEventingProcessor eventingProcessor = 
buildTestProcessorWithDefaultConfig();
         final MockGeneratedFSProducer producer = new MockGeneratedFSProducer();
 
-        eventingProcessor.generate(outputTargetBuildItem, 
Optional.of(resourcesMetadataBuildItem), producer);
+        eventingProcessor.generate(Optional.of(resourcesMetadataBuildItem), 
producer);
 
         assertNotNull(producer.getItem().getData());
         assertTrue(producer.getItem().getData().length > 0);
@@ -99,7 +95,6 @@ class KogitoAddOnKnativeEventingProcessorTest {
 
     @Test
     void checkKogitoFileIsGeneratedWithKogitoSource() {
-        final OutputTargetBuildItem outputTargetBuildItem = new 
OutputTargetBuildItem(Paths.get("/"), "", false, null, Optional.empty());
         final Set<CloudEventMeta> ces = new HashSet<>();
         ces.add(new CloudEventMeta("myProducedEvent", "/local/test", 
EventKind.PRODUCED));
         final KogitoServiceDeploymentTarget deploymentTarget = new 
KogitoServiceDeploymentTarget("apps", "v1", "Deployment", "kogito-service");
@@ -109,7 +104,7 @@ class KogitoAddOnKnativeEventingProcessorTest {
         eventingProcessor.config.generateKogitoSource = true;
         final MockGeneratedFSProducer producer = new MockGeneratedFSProducer();
 
-        eventingProcessor.generate(outputTargetBuildItem, 
Optional.of(resourcesMetadataBuildItem), producer);
+        eventingProcessor.generate(Optional.of(resourcesMetadataBuildItem), 
producer);
 
         assertNotNull(producer.getItem().getData());
         assertTrue(producer.getItem().getData().length > 0);
@@ -121,7 +116,6 @@ class KogitoAddOnKnativeEventingProcessorTest {
 
     @Test
     void checkKogitoFileIsGeneratedOnlyConsumed() {
-        final OutputTargetBuildItem outputTargetBuildItem = new 
OutputTargetBuildItem(Paths.get("/"), "", false, null, Optional.empty());
         final Set<CloudEventMeta> ces = new HashSet<>();
         ces.add(new CloudEventMeta("myConsumedEvent", "/local/test", 
EventKind.CONSUMED));
         final KogitoServiceDeploymentTarget deploymentTarget = new 
KogitoServiceDeploymentTarget("apps", "v1", "Deployment", "kogito-service");
@@ -130,7 +124,7 @@ class KogitoAddOnKnativeEventingProcessorTest {
         final KogitoAddOnKnativeEventingProcessor eventingProcessor = 
buildTestProcessorWithDefaultConfig();
         final MockGeneratedFSProducer producer = new MockGeneratedFSProducer();
 
-        eventingProcessor.generate(outputTargetBuildItem, 
Optional.of(resourcesMetadataBuildItem), producer);
+        eventingProcessor.generate(Optional.of(resourcesMetadataBuildItem), 
producer);
 
         assertNotNull(producer.getItem().getData());
         assertTrue(producer.getItem().getData().length > 0);
@@ -142,7 +136,6 @@ class KogitoAddOnKnativeEventingProcessorTest {
 
     @Test
     void checkNotProducedIfNoCEs() {
-        final OutputTargetBuildItem outputTargetBuildItem = new 
OutputTargetBuildItem(Paths.get("/"), "", false, null, Optional.empty());
         final Set<CloudEventMeta> ces = new HashSet<>();
         final KogitoServiceDeploymentTarget deploymentTarget = new 
KogitoServiceDeploymentTarget("apps", "v1", "Deployment", "kogito-service");
         final KogitoKnativeResourcesMetadataBuildItem 
resourcesMetadataBuildItem =
@@ -150,7 +143,7 @@ class KogitoAddOnKnativeEventingProcessorTest {
         final KogitoAddOnKnativeEventingProcessor eventingProcessor = 
buildTestProcessorWithDefaultConfig();
         final MockGeneratedFSProducer producer = new MockGeneratedFSProducer();
 
-        eventingProcessor.generate(outputTargetBuildItem, 
Optional.of(resourcesMetadataBuildItem), producer);
+        eventingProcessor.generate(Optional.of(resourcesMetadataBuildItem), 
producer);
 
         assertNull(producer.getItem());
     }
@@ -224,16 +217,16 @@ class KogitoAddOnKnativeEventingProcessorTest {
         return eventingProcessor;
     }
 
-    private static final class MockGeneratedFSProducer implements 
BuildProducer<GeneratedFileSystemResourceBuildItem> {
+    private static final class MockGeneratedFSProducer implements 
BuildProducer<GeneratedResourceBuildItem> {
 
-        private GeneratedFileSystemResourceBuildItem item;
+        private GeneratedResourceBuildItem item;
 
         @Override
-        public void produce(GeneratedFileSystemResourceBuildItem item) {
+        public void produce(GeneratedResourceBuildItem item) {
             this.item = item;
         }
 
-        public GeneratedFileSystemResourceBuildItem getItem() {
+        public GeneratedResourceBuildItem getItem() {
             return item;
         }
     }
diff --git 
a/quarkus/addons/knative/eventing/deployment/src/test/resources/application.properties
 
b/quarkus/addons/knative/eventing/deployment/src/test/resources/application.properties
new file mode 100644
index 0000000000..b1970efd7d
--- /dev/null
+++ 
b/quarkus/addons/knative/eventing/deployment/src/test/resources/application.properties
@@ -0,0 +1 @@
+quarkus.kubernetes-client.devservices.enabled=false
\ No newline at end of file
diff --git 
a/quarkus/addons/knative/eventing/runtime/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/KnativeEventingConfigSourceFactory.java
 
b/quarkus/addons/knative/eventing/runtime/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/KnativeEventingConfigSourceFactory.java
index 088e353ba9..5a72079fa1 100644
--- 
a/quarkus/addons/knative/eventing/runtime/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/KnativeEventingConfigSourceFactory.java
+++ 
b/quarkus/addons/knative/eventing/runtime/src/main/java/org/kie/kogito/addons/quarkus/knative/eventing/KnativeEventingConfigSourceFactory.java
@@ -79,8 +79,8 @@ public final class KnativeEventingConfigSourceFactory 
implements ConfigSourceFac
         }
 
         final String sinkUrl = context.getValue(K_SINK).getValue();
-        if (sinkUrl == null || "".equals(sinkUrl)) {
-            LOGGER.warn("{} variable is empty or doesn't exist. Please make 
sure that this service is a Knative Source or has a SinkBinding bound to it.", 
K_SINK);
+        if (sinkUrl == null || sinkUrl.isEmpty()) {
+            LOGGER.debug("{} variable is empty or doesn't exist. Please make 
sure that this service is a Knative Source or has a SinkBinding bound to it.", 
K_SINK);
         }
 
         configuration.forEach((key, value) -> LOGGER.debug("Adding connector 
-> {} =  {}", key, value));
diff --git 
a/quarkus/addons/knative/eventing/runtime/src/test/resources/application.properties
 
b/quarkus/addons/knative/eventing/runtime/src/test/resources/application.properties
new file mode 100644
index 0000000000..b1970efd7d
--- /dev/null
+++ 
b/quarkus/addons/knative/eventing/runtime/src/test/resources/application.properties
@@ -0,0 +1 @@
+quarkus.kubernetes-client.devservices.enabled=false
\ No newline at end of file
diff --git a/quarkus/addons/knative/serving/integration-tests/pom.xml 
b/quarkus/addons/knative/serving/integration-tests/pom.xml
index 30ab460c3a..3dac05dcff 100644
--- a/quarkus/addons/knative/serving/integration-tests/pom.xml
+++ b/quarkus/addons/knative/serving/integration-tests/pom.xml
@@ -75,6 +75,7 @@
             <groupId>org.kie</groupId>
             <artifactId>kie-addons-quarkus-kubernetes</artifactId>
         </dependency>
+
         <dependency>
             <groupId>org.kie</groupId>
             
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog</artifactId>
@@ -110,12 +111,16 @@
             <artifactId>quarkus-test-kubernetes-client</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>io.fabric8</groupId>
+            <artifactId>openshift-server-mock</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.kie</groupId>
-            
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
+            <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
             <scope>test</scope>
         </dependency>
-
         <dependency>
             <groupId>org.apache.kie.sonataflow</groupId>
             <artifactId>sonataflow-quarkus-deployment</artifactId>
diff --git 
a/quarkus/addons/knative/serving/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/knative/serving/customfunctions/it/KnativeServingAddonIT.java
 
b/quarkus/addons/knative/serving/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/knative/serving/customfunctions/it/KnativeServingAddonIT.java
index fd48c99774..0e8686197e 100644
--- 
a/quarkus/addons/knative/serving/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/knative/serving/customfunctions/it/KnativeServingAddonIT.java
+++ 
b/quarkus/addons/knative/serving/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/knative/serving/customfunctions/it/KnativeServingAddonIT.java
@@ -48,21 +48,17 @@ import static 
com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static io.restassured.RestAssured.given;
 import static org.hamcrest.CoreMatchers.is;
-import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KnativeResourceDiscoveryTestUtil.createServiceIfNotExists;
+import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils.createKnativeServiceIfNotExists;
 import static 
org.kie.kogito.addons.quarkus.knative.serving.customfunctions.KnativeWorkItemHandler.APPLICATION_CLOUDEVENTS_JSON_CHARSET_UTF_8;
 
 @QuarkusTest
 @WithKubernetesTestServer
 class KnativeServingAddonIT {
 
+    public static final String AT_LEAST_ONE_NON_WHITE_CHARACTER_REGEX = 
".*\\S.*";
     private static final String NAMESPACE = "default";
-
     private static final String SERVICENAME = 
"serverless-workflow-greeting-quarkus";
-
     private static final String CLOUD_EVENT_PATH = "/cloud-event";
-
-    public static final String AT_LEAST_ONE_NON_WHITE_CHARACTER_REGEX = 
".*\\S.*";
-
     private static WireMockServer wireMockServer;
 
     private static String remoteServiceUrl;
@@ -78,11 +74,6 @@ class KnativeServingAddonIT {
         createWiremockServer();
     }
 
-    @BeforeEach
-    void beforeEach() {
-        createServiceIfNotExists(mockServer, "knative/quarkus-greeting.yaml", 
NAMESPACE, SERVICENAME, remoteServiceUrl);
-    }
-
     @AfterAll
     static void afterAll() {
         if (wireMockServer != null) {
@@ -90,6 +81,17 @@ class KnativeServingAddonIT {
         }
     }
 
+    private static void createWiremockServer() {
+        wireMockServer = new 
WireMockServer(WireMockConfiguration.wireMockConfig().dynamicPort());
+        wireMockServer.start();
+        remoteServiceUrl = wireMockServer.baseUrl();
+    }
+
+    @BeforeEach
+    void beforeEach() {
+        createKnativeServiceIfNotExists(mockServer.getClient(), 
"knative/quarkus-greeting.yaml", NAMESPACE, SERVICENAME, remoteServiceUrl);
+    }
+
     @Test
     void executeHttpGet() {
         mockExecuteHttpGetEndpoint();
@@ -347,10 +349,4 @@ class KnativeServingAddonIT {
                         .withJsonBody(JsonNodeFactory.instance.objectNode()
                                 .put("message", 
JsonNodeFactory.instance.arrayNode().add(23).add(24).toPrettyString()))));
     }
-
-    private static void createWiremockServer() {
-        wireMockServer = new 
WireMockServer(WireMockConfiguration.wireMockConfig().dynamicPort());
-        wireMockServer.start();
-        remoteServiceUrl = wireMockServer.baseUrl();
-    }
 }
diff --git a/quarkus/addons/knative/serving/runtime/pom.xml 
b/quarkus/addons/knative/serving/runtime/pom.xml
index fc784c365a..8f6b478585 100644
--- a/quarkus/addons/knative/serving/runtime/pom.xml
+++ b/quarkus/addons/knative/serving/runtime/pom.xml
@@ -88,16 +88,6 @@
             <artifactId>assertj-core</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
-            <scope>test</scope>
-        </dependency>
         <!-- this is used implicitly by Maven parallel builds so let's make 
Maven aware of it -->
         <dependency>
             <groupId>org.kie</groupId>
diff --git a/quarkus/addons/kubernetes/integration-tests/pom.xml 
b/quarkus/addons/kubernetes/integration-tests/pom.xml
index 462229b7d3..dc51c40578 100644
--- a/quarkus/addons/kubernetes/integration-tests/pom.xml
+++ b/quarkus/addons/kubernetes/integration-tests/pom.xml
@@ -98,7 +98,7 @@
         </dependency>
         <dependency>
             <groupId>org.kie</groupId>
-            
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
+            <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
             <scope>test</scope>
         </dependency>
 
diff --git 
a/quarkus/addons/kubernetes/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/kubernetes/ConfigValueExpanderIT.java
 
b/quarkus/addons/kubernetes/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/kubernetes/ConfigValueExpanderIT.java
index bf1560edec..a82716419d 100644
--- 
a/quarkus/addons/kubernetes/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/kubernetes/ConfigValueExpanderIT.java
+++ 
b/quarkus/addons/kubernetes/integration-tests/src/test/java/org/kie/kogito/addons/quarkus/kubernetes/ConfigValueExpanderIT.java
@@ -28,7 +28,7 @@ import 
io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import static io.restassured.RestAssured.given;
 import static org.hamcrest.CoreMatchers.is;
-import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KnativeResourceDiscoveryTestUtil.createServiceIfNotExists;
+import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils.createKnativeServiceIfNotExists;
 
 @QuarkusIntegrationTest
 @WithKubernetesTestServer
@@ -43,7 +43,7 @@ class ConfigValueExpanderIT {
 
     @BeforeEach
     void beforeEach() {
-        createServiceIfNotExists(mockServer, "knative/quarkus-greeting.yaml", 
NAMESPACE, SERVICENAME);
+        createKnativeServiceIfNotExists(mockServer.getClient(), 
"knative/quarkus-greeting.yaml", NAMESPACE, SERVICENAME);
     }
 
     @Test
diff --git 
a/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
 
b/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
new file mode 100644
index 0000000000..b1970efd7d
--- /dev/null
+++ 
b/quarkus/addons/kubernetes/integration-tests/src/test/resources/application.properties
@@ -0,0 +1 @@
+quarkus.kubernetes-client.devservices.enabled=false
\ No newline at end of file
diff --git a/quarkus/addons/kubernetes/pom.xml 
b/quarkus/addons/kubernetes/pom.xml
index af741a3122..508620154f 100644
--- a/quarkus/addons/kubernetes/pom.xml
+++ b/quarkus/addons/kubernetes/pom.xml
@@ -37,6 +37,7 @@
     <module>runtime</module>
     <module>deployment</module>
     <module>integration-tests</module>
+    <module>test-utils</module>
   </modules>
 
 
diff --git a/quarkus/addons/kubernetes/runtime/pom.xml 
b/quarkus/addons/kubernetes/runtime/pom.xml
index 2447f4b5d8..0e0ab7f800 100644
--- a/quarkus/addons/kubernetes/runtime/pom.xml
+++ b/quarkus/addons/kubernetes/runtime/pom.xml
@@ -65,11 +65,6 @@
       <artifactId>quarkus-test-kubernetes-client</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>io.quarkus</groupId>
-      <artifactId>quarkus-test-openshift-client</artifactId>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-junit5</artifactId>
@@ -87,7 +82,7 @@
     </dependency>
     <dependency>
       <groupId>org.kie</groupId>
-      
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
+      <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git 
a/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KnativeRouteEndpointDiscoveryTest.java
 
b/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KnativeRouteEndpointDiscoveryTest.java
index 8bb2ccc044..c2ff5ad565 100644
--- 
a/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KnativeRouteEndpointDiscoveryTest.java
+++ 
b/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KnativeRouteEndpointDiscoveryTest.java
@@ -65,8 +65,12 @@ public class KnativeRouteEndpointDiscoveryTest {
         // configure mock
         final RouteStatus status = new RouteStatus();
         status.setUrl("http://192.168.2.32";);
-        final Route route = new 
RouteBuilder().withNewMetadata().withName("ksvc1").withNamespace("test").and().withStatus(status).build();
-        knativeClient.routes().create(route);
+        final Route route = new RouteBuilder()
+                
.withNewMetadata().withName("ksvc1").withNamespace("test").endMetadata()
+                .withStatus(status)
+                .build();
+
+        knativeClient.routes().resource(route).create();
 
         final Optional<Endpoint> endpoint = 
endpointDiscovery.findEndpoint("test", "ksvc1");
         assertTrue(endpoint.isPresent());
@@ -74,7 +78,7 @@ public class KnativeRouteEndpointDiscoveryTest {
         try {
             new URL(endpoint.get().getUrl());
         } catch (MalformedURLException e) {
-            fail("The generated URL " + endpoint.get().getUrl() + " is 
invalid"); //verbose
+            fail("The generated URL " + endpoint.get().getUrl() + " is 
invalid");
         }
     }
 
@@ -91,9 +95,11 @@ public class KnativeRouteEndpointDiscoveryTest {
                 .withNewMetadata()
                 .withLabels(labels)
                 .withName("ksvc2").withNamespace("test")
-                .and().withStatus(status)
+                .endMetadata()
+                .withStatus(status)
                 .build();
-        knativeClient.routes().create(route);
+
+        knativeClient.routes().resource(route).create();
 
         final List<Endpoint> endpoint = endpointDiscovery.findEndpoint("test", 
labels);
         assertFalse(endpoint.isEmpty());
@@ -101,7 +107,7 @@ public class KnativeRouteEndpointDiscoveryTest {
         try {
             new URL(endpoint.get(0).getUrl());
         } catch (MalformedURLException e) {
-            fail("The generated URL " + endpoint.get(0).getUrl() + " is 
invalid"); //verbose
+            fail("The generated URL " + endpoint.get(0).getUrl() + " is 
invalid");
         }
     }
 
@@ -111,8 +117,11 @@ public class KnativeRouteEndpointDiscoveryTest {
         endpointDiscovery.setKnativeClient(knativeClient);
 
         // configure mock
-        final Route route = new 
RouteBuilder().withNewMetadata().withName("ksvc3").withNamespace("test").and().build();
-        knativeClient.routes().create(route);
+        final Route route = new RouteBuilder()
+                
.withNewMetadata().withName("ksvc3").withNamespace("test").endMetadata()
+                .build();
+
+        knativeClient.routes().resource(route).create();
 
         final Optional<Endpoint> endpoint = 
endpointDiscovery.findEndpoint("test", "ksvc3");
         assertTrue(endpoint.isEmpty());
diff --git 
a/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KubernetesServiceEndpointDiscoveryTest.java
 
b/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KubernetesServiceEndpointDiscoveryTest.java
index 98c38f833d..ad7acb6f94 100644
--- 
a/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KubernetesServiceEndpointDiscoveryTest.java
+++ 
b/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/KubernetesServiceEndpointDiscoveryTest.java
@@ -29,15 +29,15 @@ import java.util.Optional;
 import org.junit.jupiter.api.Test;
 import org.kie.kogito.addons.k8s.Endpoint;
 import org.kie.kogito.addons.k8s.EndpointDiscovery;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
 import io.fabric8.kubernetes.api.model.Service;
 import io.fabric8.kubernetes.api.model.ServiceBuilder;
 import io.fabric8.kubernetes.api.model.ServicePort;
 import io.fabric8.kubernetes.api.model.ServiceSpec;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 import jakarta.inject.Named;
@@ -47,35 +47,43 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 public class KubernetesServiceEndpointDiscoveryTest {
 
-    @KubernetesTestServer
-    KubernetesServer mockServer;
+    @Inject
+    OpenShiftClient client;
 
     @Named("default")
     @Inject
     EndpointDiscovery endpointDiscovery;
 
     private void createServiceIfNotExist(final String name, Map<String, 
String> labels, Integer... ports) {
-        if 
(mockServer.getClient().services().inNamespace("test").withName(name).get() != 
null) {
+        if (client.services().inNamespace("test").withName(name).get() != 
null) {
             return;
         }
+
         final List<ServicePort> sPorts = new ArrayList<>();
-        for (Integer integer : ports) {
+        for (Integer portNumber : ports) {
             final ServicePort port = new ServicePort();
-            port.setPort(integer);
+            port.setPort(portNumber);
             sPorts.add(port);
         }
+
         final Service svc = new ServiceBuilder()
                 .withNewMetadata()
-                .withName(name).withNamespace("test")
+                .withName(name)
+                .withNamespace("test")
                 .withLabels(labels)
-                .and().withSpec(new ServiceSpec()).build();
+                .endMetadata()
+                .withSpec(new ServiceSpec())
+                .build();
+
         svc.getSpec().setClusterIP("127.0.0.1");
         svc.getSpec().setPorts(sPorts);
 
-        mockServer.getClient().resource(svc).createOrReplace();
+        client.resource(svc)
+                .inNamespace("test")
+                .createOr(existing -> 
client.resource(svc).inNamespace("test").update());
     }
 
     @Test
@@ -87,7 +95,7 @@ public class KubernetesServiceEndpointDiscoveryTest {
         try {
             new URL(endpoint.get().getUrl());
         } catch (MalformedURLException e) {
-            fail("The generated URL " + endpoint.get().getUrl() + " is 
invalid"); //verbose
+            fail("The generated URL " + endpoint.get().getUrl() + " is 
invalid");
         }
     }
 
@@ -100,7 +108,7 @@ public class KubernetesServiceEndpointDiscoveryTest {
         try {
             new URL(endpoints.get(0).getUrl());
         } catch (MalformedURLException e) {
-            fail("The generated URL " + endpoints.get(0).getUrl() + " is 
invalid"); //verbose
+            fail("The generated URL " + endpoints.get(0).getUrl() + " is 
invalid");
         }
     }
 }
diff --git 
a/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/config/KubeDiscoveryConfigCacheUpdaterTest.java
 
b/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/config/KubeDiscoveryConfigCacheUpdaterTest.java
index f19c12b145..175bffa6b6 100644
--- 
a/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/config/KubeDiscoveryConfigCacheUpdaterTest.java
+++ 
b/quarkus/addons/kubernetes/runtime/src/test/java/org/kie/kogito/addons/quarkus/k8s/config/KubeDiscoveryConfigCacheUpdaterTest.java
@@ -23,34 +23,34 @@ import java.net.URI;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.kie.kogito.addons.k8s.resource.catalog.KubernetesServiceCatalog;
+import 
org.kie.kogito.addons.quarkus.k8s.test.utils.OpenShiftMockServerTestResource;
 
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.openshift.client.OpenShiftClient;
+import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
-import io.quarkus.test.kubernetes.client.KubernetesTestServer;
-import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
 
 import jakarta.inject.Inject;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KnativeResourceDiscoveryTestUtil.createServiceIfNotExists;
+import static 
org.kie.kogito.addons.quarkus.k8s.test.utils.KubeTestUtils.createKnativeServiceIfNotExists;
 
 @QuarkusTest
-@WithKubernetesTestServer
+@QuarkusTestResource(OpenShiftMockServerTestResource.class)
 class KubeDiscoveryConfigCacheUpdaterTest {
 
-    @KubernetesTestServer
-    static KubernetesServer mockServer;
-
-    KubeDiscoveryConfigCacheUpdater kubeDiscoveryConfigCacheUpdater;
-
-    final String remoteServiceUrl = 
"http://serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io";;
+    private static final String remoteServiceUrl = 
"http://serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io";;
 
     @Inject
     KubernetesServiceCatalog kubernetesServiceCatalog;
 
+    @Inject
+    OpenShiftClient client;
+
+    KubeDiscoveryConfigCacheUpdater kubeDiscoveryConfigCacheUpdater;
+
     @BeforeEach
     void beforeEach() {
-        createServiceIfNotExists(mockServer, "knative/quarkus-greeting.yaml", 
"test", "serverless-workflow-greeting-quarkus", remoteServiceUrl);
+        createKnativeServiceIfNotExists(client, 
"knative/quarkus-greeting.yaml", "test", 
"serverless-workflow-greeting-quarkus", remoteServiceUrl);
         kubeDiscoveryConfigCacheUpdater = new 
KubeDiscoveryConfigCacheUpdater(kubernetesServiceCatalog);
     }
 
diff --git 
a/quarkus/addons/kubernetes/runtime/src/test/resources/application.properties 
b/quarkus/addons/kubernetes/runtime/src/test/resources/application.properties
index aaca2db7c0..e894d463d1 100644
--- 
a/quarkus/addons/kubernetes/runtime/src/test/resources/application.properties
+++ 
b/quarkus/addons/kubernetes/runtime/src/test/resources/application.properties
@@ -18,3 +18,4 @@
 #
 
 quarkus.tls.trust-all=true
+quarkus.kubernetes-client.devservices.enabled=false
\ No newline at end of file
diff --git 
a/quarkus/addons/fabric8-kubernetes-service-catalog/test-utils/pom.xml 
b/quarkus/addons/kubernetes/test-utils/pom.xml
similarity index 77%
rename from quarkus/addons/fabric8-kubernetes-service-catalog/test-utils/pom.xml
rename to quarkus/addons/kubernetes/test-utils/pom.xml
index 86a2acc9ed..1bca46f194 100644
--- a/quarkus/addons/fabric8-kubernetes-service-catalog/test-utils/pom.xml
+++ b/quarkus/addons/kubernetes/test-utils/pom.xml
@@ -25,11 +25,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.kie</groupId>
-        
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-parent</artifactId>
+        <artifactId>kie-addons-quarkus-kubernetes-parent</artifactId>
         <version>999-SNAPSHOT</version>
     </parent>
-    
<artifactId>kogito-addons-quarkus-fabric8-kubernetes-service-catalog-test-utils</artifactId>
-    <name>Kogito Add-On Fabric8 Kubernetes Service Catalog Tests Utils</name>
+    <artifactId>kie-addons-quarkus-kubernetes-test-utils</artifactId>
+    <name>KIE Add-On Kubernetes Tests Utils</name>
     <description>Util classes intended to be used in test scope.</description>
 
   <properties>
@@ -41,10 +41,6 @@
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-kubernetes-client</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-cache</artifactId>
-        </dependency>
         <dependency>
             <groupId>io.fabric8</groupId>
             <artifactId>knative-client</artifactId>
@@ -53,6 +49,10 @@
             <groupId>io.fabric8</groupId>
             <artifactId>kubernetes-client</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.fabric8</groupId>
+            <artifactId>openshift-server-mock</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.kie</groupId>
             <artifactId>kie-addons-kubernetes</artifactId>
@@ -61,17 +61,9 @@
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-test-kubernetes-client</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-test-openshift-client</artifactId>
-        </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-junit5</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.github.tomakehurst</groupId>
-            <artifactId>wiremock-jre8</artifactId>
-        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git 
a/quarkus/addons/kubernetes/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/KubeTestUtils.java
 
b/quarkus/addons/kubernetes/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/KubeTestUtils.java
new file mode 100644
index 0000000000..1926189ab2
--- /dev/null
+++ 
b/quarkus/addons/kubernetes/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/KubeTestUtils.java
@@ -0,0 +1,120 @@
+/*
+ * 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 org.kie.kogito.addons.quarkus.k8s.test.utils;
+
+import java.io.InputStream;
+import java.lang.reflect.Method;
+
+import io.fabric8.knative.client.KnativeClient;
+import io.fabric8.knative.serving.v1.Service;
+import io.fabric8.kubernetes.api.model.HasMetadata;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClientException;
+import io.fabric8.kubernetes.client.dsl.Resource;
+
+public final class KubeTestUtils {
+
+    private KubeTestUtils() {
+    }
+
+    public static <T extends HasMetadata> T 
createWithStatusPreserved(KubernetesClient client, T resource, String 
namespace, Class<T> resourceType) {
+        T created = null;
+        try {
+            created = 
client.resources(resourceType).inNamespace(namespace).resource(resource).createOr(existing
 -> {
+                // Reload latest version to avoid 409 conflict
+                T latest = 
client.resources(resourceType).inNamespace(namespace).withName(resource.getMetadata().getName()).get();
+
+                if (latest != null) {
+                    // Overwrite with user-defined spec but preserve 
server-assigned fields
+                    
resource.getMetadata().setResourceVersion(latest.getMetadata().getResourceVersion());
+                    return 
client.resources(resourceType).inNamespace(namespace).resource(resource).update();
+                }
+                return resource; // fallback
+            });
+        } catch (KubernetesClientException e) {
+            throw new RuntimeException("Unable to create or update resource: " 
+ resource.getMetadata().getName(), e);
+        }
+
+        Object status = extractStatus(resource);
+        if (status != null) {
+            applyStatus(client, created, namespace, resourceType, status);
+        }
+
+        return created;
+    }
+
+    private static <T extends HasMetadata> void applyStatus(KubernetesClient 
client, T resource, String namespace, Class<T> resourceType, Object status) {
+        try {
+            Resource<T> resourceHandle = 
client.resources(resourceType).inNamespace(namespace).withName(resource.getMetadata().getName());
+
+            T latest = resourceHandle.get();
+            if (latest != null && status != null) {
+                Method setStatusMethod = 
latest.getClass().getMethod("setStatus", status.getClass());
+                setStatusMethod.invoke(latest, status);
+                
client.resources(resourceType).inNamespace(namespace).resource(latest).patchStatus();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to set status on resource", e);
+        }
+    }
+
+    private static <T> Object extractStatus(T resource) {
+        try {
+            return resource.getClass().getMethod("getStatus").invoke(resource);
+        } catch (Exception e) {
+            throw new RuntimeException("Unable to get status from resource", 
e);
+        }
+    }
+
+    public static void createKnativeServiceIfNotExists(KubernetesClient 
client, String yamlPath, String namespace, String serviceName) {
+        createKnativeServiceIfNotExists(client, yamlPath, namespace, 
serviceName, null);
+    }
+
+    public static void createKnativeServiceIfNotExists(KubernetesClient 
client, String yamlPath, String namespace, String serviceName, String 
remoteServiceUrl) {
+        if 
(client.services().inNamespace(namespace).withName(serviceName).get() == null) {
+            KnativeClient knativeClient = client.adapt(KnativeClient.class);
+
+            Service service = 
knativeClient.services().inNamespace(namespace).load(getResourceAsStream(yamlPath)).item();
+
+            if (remoteServiceUrl != null) {
+                service.getStatus().setUrl(remoteServiceUrl);
+            }
+
+            
knativeClient.services().inNamespace(namespace).resource(service).createOr(existing
 -> knativeClient.services().inNamespace(namespace).resource(service).update());
+
+            Object status = extractStatus(service);
+            if (status != null) {
+                try {
+                    Service latest = 
knativeClient.services().inNamespace(namespace).withName(service.getMetadata().getName()).get();
+
+                    if (latest != null && latest.getStatus() == null) {
+                        latest.getClass().getMethod("setStatus", 
status.getClass()).invoke(latest, status);
+                        
knativeClient.services().inNamespace(namespace).resource(latest).patchStatus();
+                    }
+                } catch (Exception e) {
+                    throw new RuntimeException("Unable to patch Knative 
service status", e);
+                }
+            }
+        }
+    }
+
+    private static InputStream getResourceAsStream(String yamlPath) {
+        return 
KubeTestUtils.class.getClassLoader().getResourceAsStream(yamlPath);
+    }
+}
diff --git 
a/quarkus/addons/kubernetes/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/OpenShiftMockServerTestResource.java
 
b/quarkus/addons/kubernetes/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/OpenShiftMockServerTestResource.java
new file mode 100644
index 0000000000..cc308cffd0
--- /dev/null
+++ 
b/quarkus/addons/kubernetes/test-utils/src/main/java/org/kie/kogito/addons/quarkus/k8s/test/utils/OpenShiftMockServerTestResource.java
@@ -0,0 +1,50 @@
+/*
+ * 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 org.kie.kogito.addons.quarkus.k8s.test.utils;
+
+import java.util.Map;
+
+import io.fabric8.openshift.client.server.mock.OpenShiftServer;
+import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+
+public class OpenShiftMockServerTestResource implements 
QuarkusTestResourceLifecycleManager {
+
+    private OpenShiftServer server;
+
+    @Override
+    public Map<String, String> start() {
+        server = new OpenShiftServer(true, true);
+        server.before(); // Start mock server
+
+        return Map.of(
+                "quarkus.kubernetes-client.master-url", 
server.getOpenshiftClient().getMasterUrl().toString(),
+                "quarkus.kubernetes-client.trust-certs", "true");
+    }
+
+    @Override
+    public void stop() {
+        if (server != null) {
+            server.after(); // Stop mock server
+        }
+    }
+
+    public OpenShiftServer getServer() {
+        return server;
+    }
+}
diff --git 
a/quarkus/addons/microprofile-config-service-catalog/runtime/src/test/resources/application.properties
 
b/quarkus/addons/microprofile-config-service-catalog/runtime/src/test/resources/application.properties
index 0f4c3394f4..c6ba0dc979 100644
--- 
a/quarkus/addons/microprofile-config-service-catalog/runtime/src/test/resources/application.properties
+++ 
b/quarkus/addons/microprofile-config-service-catalog/runtime/src/test/resources/application.properties
@@ -17,13 +17,13 @@
 # under the License.
 #
 
-org.kie.kogito.addons.discovery.knative\:serverless-workflow-greeting-quarkus 
= http\:\/\/serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io
-org.kie.kogito.addons.discovery.knative\:test\/serverless-workflow-greeting-quarkus
 = http\:\/\/serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io
-org.kie.kogito.addons.discovery.knative\:services.v1.serving.knative.dev\/serverless-workflow-greeting-quarkus
 = http\:\/\/serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io
-org.kie.kogito.addons.discovery.knative\:services.v1.serving.knative.dev\/test\/serverless-workflow-greeting-quarkus
 = http\:\/\/serverless-workflow-greeting-quarkus.test.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.knative\:serverless-workflow-greeting-quarkus 
= http\:\/\/serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.knative\:default\/serverless-workflow-greeting-quarkus
 = http\:\/\/serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.knative\:services.v1.serving.knative.dev\/serverless-workflow-greeting-quarkus
 = http\:\/\/serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.knative\:services.v1.serving.knative.dev\/default\/serverless-workflow-greeting-quarkus
 = http\:\/\/serverless-workflow-greeting-quarkus.default.10.99.154.147.sslip.io
 
-org.kie.kogito.addons.discovery.kubernetes\:services.v1.serving.knative.dev\/serverless-workflow-greeting-quarkus-kubernetes
 = 
http\:\/\/serverless-workflow-greeting-quarkus-kubernetes.test.10.99.154.147.sslip.io
-org.kie.kogito.addons.discovery.kubernetes\:services.v1.serving.knative.dev\/test\/serverless-workflow-greeting-quarkus-kubernetes
 = 
http\:\/\/serverless-workflow-greeting-quarkus-kubernetes.test.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.kubernetes\:services.v1.serving.knative.dev\/serverless-workflow-greeting-quarkus-kubernetes
 = 
http\:\/\/serverless-workflow-greeting-quarkus-kubernetes.default.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.kubernetes\:services.v1.serving.knative.dev\/default\/serverless-workflow-greeting-quarkus-kubernetes
 = 
http\:\/\/serverless-workflow-greeting-quarkus-kubernetes.default.10.99.154.147.sslip.io
 
-org.kie.kogito.addons.discovery.openshift\:services.v1.serving.knative.dev\/serverless-workflow-greeting-quarkus-openshift
 = 
http\:\/\/serverless-workflow-greeting-quarkus-openshift.test.10.99.154.147.sslip.io
-org.kie.kogito.addons.discovery.openshift\:services.v1.serving.knative.dev\/test\/serverless-workflow-greeting-quarkus-openshift
 = 
http\:\/\/serverless-workflow-greeting-quarkus-openshift.test.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.openshift\:services.v1.serving.knative.dev\/serverless-workflow-greeting-quarkus-openshift
 = 
http\:\/\/serverless-workflow-greeting-quarkus-openshift.default.10.99.154.147.sslip.io
+org.kie.kogito.addons.discovery.openshift\:services.v1.serving.knative.dev\/default\/serverless-workflow-greeting-quarkus-openshift
 = 
http\:\/\/serverless-workflow-greeting-quarkus-openshift.default.10.99.154.147.sslip.io
diff --git a/quarkus/bom/pom.xml b/quarkus/bom/pom.xml
index fe3db0e497..981fa6edc2 100755
--- a/quarkus/bom/pom.xml
+++ b/quarkus/bom/pom.xml
@@ -37,7 +37,8 @@
   <description>Internal BOM descriptor for Kogito modules targeting Quarkus 
use-cases. Specific dependencies targeting the Quarkus platform must be added 
here.</description>
 
   <properties>
-    
<version.io.fabric8.kubernetes-client>6.13.3</version.io.fabric8.kubernetes-client>
+    <!-- Keep it aligned with 
https://github.com/quarkusio/quarkus/blob/3.15/pom.xml#L72 -->
+    
<version.io.fabric8.kubernetes-client>6.13.4</version.io.fabric8.kubernetes-client>
   </properties>
   <dependencyManagement>
     <dependencies>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to