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");

Reply via email to