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 0121227d3cb6 CAMEL-21935 camel-jbang - kubernetes plugin fails to run
when knative-service.enabled=true in openshift (#23995)
0121227d3cb6 is described below
commit 0121227d3cb6ddd74320f135070718764ed9228a
Author: Claudio Miranda <[email protected]>
AuthorDate: Fri Jun 12 17:42:32 2026 -0300
CAMEL-21935 camel-jbang - kubernetes plugin fails to run when
knative-service.enabled=true in openshift (#23995)
* Set the correct image registry and group when building in openshift
---
.../modules/ROOT/pages/camel-jbang-kubernetes.adoc | 16 ++++++++--------
.../jbang/core/commands/kubernetes/KubernetesExport.java | 2 ++
.../jbang/core/commands/kubernetes/KubernetesRun.java | 8 +++++++-
.../core/commands/kubernetes/traits/ContainerTrait.java | 3 +--
.../core/commands/kubernetes/KubernetesExportTest.java | 9 ++++++---
5 files changed, 24 insertions(+), 14 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
index d5ba00f683b3..fb01a58b061b 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
@@ -281,8 +281,6 @@ Use https://knative.dev/docs/serving/[Knative serving] for
serverless workloads
NOTE: Disabled by default — enable with `--trait knative-service.enabled=true`.
-WARN: Currently does not work on OpenShift.
-
[cols="2m,1m,5a"]
|===
|Property | Type | Description
@@ -737,13 +735,15 @@ Quick start for local development with Minikube (Camel
4.10+):
----
minikube start --addons registry --driver=docker
eval $(minikube -p minikube docker-env)
-camel kubernetes run demo.camel.yaml --cluster-type=minikube \
- --build-property=quarkus.kubernetes.image-pull-policy=Never \
- --image-registry "$(kubectl -n kube-system get service registry -o
jsonpath='{.spec.clusterIP}')" \
- --image-builder=docker
+camel kubernetes run demo.camel.yaml
----
-IMPORTANT: The `--build-property=quarkus.kubernetes.image-pull-policy=Never`
flag is required for Minikube deployments.
+== Deployment tips and troubleshooting
+
+* If there is any error with `camel kubernetes run`, set `--verbose` to
display additional logging.
+
+* You may want to examine the generated maven project in
`.camel-jbang-run/<name>`.
-NOTE: Docker multi-platform build is used. Follow the
https://docs.docker.com/build/building/multi-platform/#build-multi-platform-images[Docker
multi-platform requirements].
+* If there are issues building the container image or deploying the kubernetes
manifests, consider disabling the kubernetes cluster detection with
`--disable-auto`.
+* Note that Docker multi-platform build is used. It requires to have followed
these
https://docs.docker.com/build/building/multi-platform/#build-multi-platform-images[Docker
requirements].
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 63225809d096..9f0a084a1fd3 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
@@ -522,6 +522,8 @@ public class KubernetesExport extends Export {
return "localhost:5001";
} else if (ClusterType.MINIKUBE.isEqualTo(clusterType)) {
return "localhost:5000";
+ } else if (ClusterType.OPENSHIFT.isEqualTo(clusterType)) {
+ return "image-registry.openshift-image-registry.svc:5000";
}
return null;
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
index 2eeacfaf02f2..a8651d4642b3 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesRun.java
@@ -726,6 +726,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
}
// suppress maven transfer progress
args.add("-ntp");
+ args.add("-DskipTests");
args.add("--file");
args.add(new File(workingDir, "pom.xml").getAbsolutePath());
@@ -751,7 +752,8 @@ public class KubernetesRun extends KubernetesBaseCommand {
// will generate the regular Deployment, so we have to disable the
jkube resources task to not run and not generate the deployment.yml
// apply the knative service manifest and specify the knative
service.yml
args.add("-Djkube.skip.resource=true");
- args.add(prefix + ":build");
+ // run the "package" task instead of k8s:deploy
+ args.add("package");
args.add(prefix + ":apply");
if (isOpenshift) {
args.add("-Djkube.openshiftManifest=src/main/jkube/service.yml");
@@ -801,6 +803,10 @@ public class KubernetesRun extends KubernetesBaseCommand {
if (ClusterType.MINIKUBE == cluster) {
this.imageBuilder = "docker";
this.imagePush = false;
+ } else if (ClusterType.OPENSHIFT == cluster) {
+ if (ObjectHelper.isEmpty(imageGroup)) {
+ this.imageGroup = client().getNamespace();
+ }
}
if (verbose) {
printer().println(this.clusterType);
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/ContainerTrait.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/ContainerTrait.java
index 275722ab8644..469886680b4d 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/ContainerTrait.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/ContainerTrait.java
@@ -86,14 +86,13 @@ public class ContainerTrait extends BaseTrait {
}
container.withResources(resourceRequirementsBuilder.build());
- io.fabric8.kubernetes.api.model.Container cc = container.build();
context.doWithKnativeServices(s -> s.editOrNewSpec()
.editOrNewTemplate()
.editOrNewMetadata()
.addToLabels(KUBERNETES_LABEL_NAME, context.getName())
.endMetadata()
.editOrNewSpec()
- .addToContainers(cc)
+ .addToContainers(container.build())
.endSpec()
.endTemplate()
.endSpec());
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
index c6b5025e6625..8ff1cc443918 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/test/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesExportTest.java
@@ -487,7 +487,8 @@ class KubernetesExportTest extends
KubernetesExportBaseTestSupport {
Container container =
deployment.getSpec().getTemplate().getSpec().getContainers().get(0);
Assertions.assertEquals("route-service",
deployment.getMetadata().getName());
Assertions.assertEquals(1,
deployment.getSpec().getTemplate().getSpec().getContainers().size());
- Assertions.assertEquals("route-service:1.0-SNAPSHOT",
container.getImage());
+
Assertions.assertEquals("image-registry.openshift-image-registry.svc:5000/route-service:1.0-SNAPSHOT",
+ container.getImage());
Assertions.assertEquals(1, container.getPorts().size());
Assertions.assertEquals("http", container.getPorts().get(0).getName());
Assertions.assertEquals(8080,
container.getPorts().get(0).getContainerPort());
@@ -498,8 +499,10 @@ class KubernetesExportTest extends
KubernetesExportBaseTestSupport {
Assertions.assertEquals("1.0-SNAPSHOT", model.getVersion());
Properties props = model.getProperties();
- Assertions.assertEquals("route-service:1.0-SNAPSHOT",
props.get("jkube.image.name"));
- Assertions.assertEquals("route-service:1.0-SNAPSHOT",
props.get("jkube.container-image.name"));
+
Assertions.assertEquals("image-registry.openshift-image-registry.svc:5000/route-service:1.0-SNAPSHOT",
+ props.get("jkube.image.name"));
+
Assertions.assertEquals("image-registry.openshift-image-registry.svc:5000/route-service:1.0-SNAPSHOT",
+ props.get("jkube.container-image.name"));
Route route = getRoute(rt);
Assertions.assertEquals("route-service",
route.getMetadata().getName());