This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push: new a2c29875a3b CAMEL-22144: camel-jbang: Kubernetes plugin management port for liveness/readiness a2c29875a3b is described below commit a2c29875a3b92ba5173c58691870c61c3e4732bb Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Jul 23 16:14:36 2025 +0200 CAMEL-22144: camel-jbang: Kubernetes plugin management port for liveness/readiness --- .../dsl/jbang/core/commands/ExportQuarkus.java | 22 +++++++++++++--------- .../dsl/jbang/core/commands/ExportSpringBoot.java | 22 +++++++++++++--------- .../core/commands/kubernetes/KubernetesExport.java | 11 +++++++++-- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java index cbf96574aed..4f0e5d4d8da 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java @@ -107,16 +107,20 @@ class ExportQuarkus extends Export { prop.remove("camel.main.modeline"); } // are we using http then enable embedded HTTP server (if not explicit configured already) - int port = httpServerPort(settings); - if (port == -1) { - port = 8080; - } - if (port != 8080) { - prop.put("quarkus.http.port", port); + if (!prop.containsKey("quarkus.http.port")) { + int port = httpServerPort(settings); + if (port == -1) { + port = 8080; + } + if (port != 8080) { + prop.put("quarkus.http.port", port); + } } - port = httpManagementPort(settings); - if (port != -1) { - prop.put("quarkus.management.port", port); + if (!prop.containsKey("quarkus.management.port")) { + port = httpManagementPort(settings); + if (port != -1) { + prop.put("quarkus.management.port", port); + } } return prop; }); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java index 687c856e2e0..1fb0f22a166 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java @@ -123,16 +123,20 @@ class ExportSpringBoot extends Export { prop.put("camel.main.run-controller", "true"); } // are we using http then enable embedded HTTP server (if not explicit configured already) - int port = httpServerPort(settings); - if (port == -1 && http) { - port = 8080; - } - if (port != -1 && port != 8080) { - prop.put("server.port", port); + if (!prop.containsKey("server.port")) { + int port = httpServerPort(settings); + if (port == -1 && http) { + port = 8080; + } + if (port != -1 && port != 8080) { + prop.put("server.port", port); + } } - port = httpManagementPort(settings); - if (port != -1) { - prop.put("management.server.port", port); + if (!prop.containsKey("management.server.port")) { + port = httpManagementPort(settings); + if (port != -1) { + prop.put("management.server.port", port); + } } return prop; }); diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java index 6ada2e40f1d..749b5ff7c2f 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExport.java @@ -349,9 +349,10 @@ public class KubernetesExport extends Export { Path settingsPath = CommandLineHelper.getWorkDir().resolve(Run.RUN_SETTINGS_FILE); var jkubeVersion = jkubeMavenPluginVersion(settingsPath, mapBuildProperties()); + var managementPort = httpManagementPort(settingsPath); buildProperties.add("jkube.version=%s".formatted(jkubeVersion)); - setContainerHealthPaths(); + setContainerHealthPaths(managementPort); // Run export int exit = super.doExport(); @@ -485,18 +486,24 @@ public class KubernetesExport extends Export { return null; } - private void setContainerHealthPaths() { + private void setContainerHealthPaths(int port) { // the camel-observability-services artifact is set in the pom template // it renames the container health base path to /observe, so this has to be in the container health probes http path // only quarkus and sb runtimes, because there is no published health endpoints when using runtime=main if (RuntimeType.quarkus == runtime) { // jkube reads quarkus properties to set the container health probes path buildProperties.add("quarkus.smallrye-health.root-path=/observe/health"); + if (buildProperties.stream().noneMatch(l -> l.startsWith("quarkus.management.port"))) { + buildProperties.add("quarkus.management.port=" + (port > 0 ? "" + port : "9876")); + } } else if (RuntimeType.springBoot == runtime) { List<String> newProps = new ArrayList<>(); // jkube reads spring-boot properties to set the kubernetes container health probes path // in this case, jkube reads from the application.properties and not from the build properties in pom.xml newProps.add("management.endpoints.web.base-path=/observe"); + if (newProps.stream().noneMatch(l -> l.startsWith("management.server.port"))) { + newProps.add("management.server.port=" + (port > 0 ? "" + port : "9876")); + } // jkube uses the old property to enable the readiness/liveness probes // TODO: rename this property once https://github.com/eclipse-jkube/jkube/issues/3690 is fixed newProps.add("management.health.probes.enabled=true");