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 <[email protected]>
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");