diff --git a/camel-k-master/deployment/pom.xml b/camel-k-master/deployment/pom.xml
index e7334e815..6fc638086 100644
--- a/camel-k-master/deployment/pom.xml
+++ b/camel-k-master/deployment/pom.xml
@@ -44,6 +44,12 @@
org.apache.camel.quarkus
camel-quarkus-kubernetes-deployment
+
+ org.apache.camel.quarkus
+ camel-quarkus-kubernetes-cluster-service-deployment
+
+
+
diff --git a/camel-k-master/impl/pom.xml b/camel-k-master/impl/pom.xml
index 265fbca66..e01edb041 100644
--- a/camel-k-master/impl/pom.xml
+++ b/camel-k-master/impl/pom.xml
@@ -43,6 +43,10 @@
org.apache.camel
camel-kubernetes
+
+ org.apache.camel.quarkus
+ camel-quarkus-kubernetes-cluster-service
+
org.apache.camel.k
camel-k-core-support
diff --git a/camel-k-master/impl/src/main/java/org/apache/camel/k/master/MasterContextCustomizer.java b/camel-k-master/impl/src/main/java/org/apache/camel/k/master/MasterContextCustomizer.java
index cc0a887aa..90bc8d07f 100644
--- a/camel-k-master/impl/src/main/java/org/apache/camel/k/master/MasterContextCustomizer.java
+++ b/camel-k-master/impl/src/main/java/org/apache/camel/k/master/MasterContextCustomizer.java
@@ -17,6 +17,7 @@
package org.apache.camel.k.master;
import java.util.Collections;
+import java.util.Optional;
import org.apache.camel.CamelContext;
import org.apache.camel.RuntimeCamelException;
@@ -40,7 +41,22 @@ public class MasterContextCustomizer implements ContextCustomizer {
@Override
public void apply(CamelContext camelContext) {
try {
+ boolean existsService = false;
KubernetesClusterService clusterService = new KubernetesClusterService();
+
+ if (this.rebalancing == null || this.rebalancing) {
+ RebalancingCamelClusterService existingRebalancingService = camelContext.hasService(RebalancingCamelClusterService.class);
+ if (existingRebalancingService != null){
+ existsService = true;
+ clusterService = (KubernetesClusterService)existingRebalancingService.getDelegate();
+ }
+ } else {
+ if (camelContext.hasService(KubernetesClusterService.class) != null) {
+ clusterService = camelContext.hasService(KubernetesClusterService.class);
+ existsService = true;
+ }
+ }
+
String resourceName = this.kubernetesResourceName;
if (ObjectHelper.isEmpty(resourceName)) {
resourceName = this.configMapName;
@@ -55,11 +71,13 @@ public void apply(CamelContext camelContext) {
clusterService.setLeaseResourceType(this.leaseResourceType);
}
- if (this.rebalancing == null || this.rebalancing) {
- RebalancingCamelClusterService rebalancingService = new RebalancingCamelClusterService(clusterService, clusterService.getRenewDeadlineMillis());
- camelContext.addService(rebalancingService);
- } else {
- camelContext.addService(clusterService);
+ if (!existsService) {
+ if (this.rebalancing == null || this.rebalancing) {
+ RebalancingCamelClusterService rebalancingService = new RebalancingCamelClusterService(clusterService, clusterService.getRenewDeadlineMillis());
+ camelContext.addService(rebalancingService);
+ } else {
+ camelContext.addService(clusterService);
+ }
}
} catch (Exception ex) {
throw new RuntimeCamelException(ex);
diff --git a/camel-k-master/runtime/pom.xml b/camel-k-master/runtime/pom.xml
index bf1ce7dfc..ac39a6d8a 100644
--- a/camel-k-master/runtime/pom.xml
+++ b/camel-k-master/runtime/pom.xml
@@ -44,6 +44,10 @@
org.apache.camel.quarkus
camel-quarkus-kubernetes
+
+ org.apache.camel.quarkus
+ camel-quarkus-kubernetes-cluster-service
+
diff --git a/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy b/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy
index 7727ac7b5..1de6480be 100644
--- a/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy
+++ b/support/camel-k-maven-plugin/src/it/generate-catalog/verify.groovy
@@ -62,8 +62,6 @@ new File(basedir, "catalog.yaml").withReader {
assert catalog.spec.runtime.capabilities['master'].runtimeProperties[1].value == '${camel.k.master.resourceName}'
assert catalog.spec.runtime.capabilities['master'].runtimeProperties[2].key == 'quarkus.camel.cluster.kubernetes.resource-type'
assert catalog.spec.runtime.capabilities['master'].runtimeProperties[2].value == '${camel.k.master.resourceType}'
- assert catalog.spec.runtime.capabilities['master'].buildTimeProperties[0].key == 'quarkus.camel.cluster.kubernetes.enabled'
- assert catalog.spec.runtime.capabilities['master'].buildTimeProperties[0].value == '${camel.k.master.enabled}'
// Telemetry properties
assert catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[0].key == 'quarkus.opentelemetry.tracer.exporter.otlp.endpoint'
assert catalog.spec.runtime.capabilities['telemetry'].runtimeProperties[0].value == '${camel.k.telemetry.endpoint}'
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
index feeaa685a..6f8c9a617 100644
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
+++ b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
@@ -506,9 +506,7 @@ private void addCapabilities(RuntimeSpec.Builder runtimeSpec, CamelCatalogSpec.B
properties.add(Property.from("quarkus.camel.cluster.kubernetes.resource-name", "${camel.k.master.resourceName}"));
properties.add(Property.from("quarkus.camel.cluster.kubernetes.resource-type", "${camel.k.master.resourceType}"));
properties.add(Property.from("quarkus.camel.cluster.kubernetes.labels.\"${camel.k.master.labelKey}\"", "${camel.k.master.labelValue}"));
- List buildTimeProps = new ArrayList<>();
- buildTimeProps.add(Property.from("quarkus.camel.cluster.kubernetes.enabled", "${camel.k.master.enabled}"));
- addCapability(runtimeSpec, catalogSpec, "master", artifacts, properties, buildTimeProps, new ArrayList<>(), true);
+ addCapability(runtimeSpec, catalogSpec, "master", artifacts, properties, new ArrayList<>(), new ArrayList<>(), true);
artifacts.clear();
artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-hashicorp-vault"));