This is an automated email from the ASF dual-hosted git repository.

cdeppisch 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 459109411df CAMEL-21690: Fix image-push option on Kubernetes run 
command
459109411df is described below

commit 459109411dfec8eea569a2c8832bd8ce2a000fbc
Author: Christoph Deppisch <cdeppi...@redhat.com>
AuthorDate: Fri Jan 31 11:31:03 2025 +0100

    CAMEL-21690: Fix image-push option on Kubernetes run command
    
    - Most of the Kubernetes environments require the container image push as 
part of the Kubernetes run command
    - Set --image-push=true as a default value
    - Remove container.image-push trait option in favor of using --image-push 
command option (the container trait is primarily to configure the container 
spec in the Kubernetes deployment Manifest)
    - Skip image build and image push when printing the Kubernetes Manifest 
with --output option
---
 .../modules/ROOT/pages/camel-jbang-kubernetes.adoc         | 14 ++++++++------
 .../src/test/resources/application-jkube.properties        |  3 ++-
 .../jbang/core/commands/kubernetes/KubernetesExport.java   | 12 ++++++------
 .../dsl/jbang/core/commands/kubernetes/KubernetesRun.java  | 10 ++++++++--
 .../core/commands/kubernetes/traits/model/Container.java   | 13 -------------
 .../commands/kubernetes/traits/model/ContainerBuilder.java |  7 -------
 6 files changed, 24 insertions(+), 35 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 0b3eaabe6ac..582a5069ee1 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
@@ -229,10 +229,6 @@ The container trait is able to customize the container 
specification with the fo
 | string[]
 | The pull secrets for private registries
 
-| container.image-push
-| boolean
-| Enable image push to the registry
-
 | container.request-cpu
 | string
 | The minimum amount of CPU required.
@@ -1366,7 +1362,7 @@ The following steps have been known to be working with 
Camel 4.8.1+:
 
 1. `minikube start --addons registry --driver=docker`
 2. `eval $(minikube -p minikube docker-env)`
-3. `camel kubernetes run 'demo.camel.yaml' --cluster-type=minikube 
--build-property=quarkus.kubernetes.image-pull-policy=Never`
+3. `camel kubernetes run demo.camel.yaml --cluster-type=minikube 
--build-property=quarkus.kubernetes.image-pull-policy=Never`
 
 Most important `--build-property=quarkus.kubernetes.image-pull-policy=Never` 
without that it is not working, which is not clear from the current Minikube 
docs.
 
@@ -1374,7 +1370,13 @@ The following steps have been known to be working with 
Camel 4.9+:
 
 1. `minikube start --addons registry --driver=docker`
 2. `eval $(minikube -p minikube docker-env)`
-3. `camel kubernetes run demo.camel.yaml '--cluster-type=minikube' 
'--build-property=quarkus.kubernetes.image-pull-policy=Never' '--trait 
container.image-push=true' '--image-registry' '$(kubectl -n kube-system get 
service registry -o jsonpath='{.spec.clusterIP}')' '--image-builder=docker'`
+3. `camel kubernetes run demo.camel.yaml --cluster-type=minikube 
--build-property=quarkus.kubernetes.image-pull-policy=Never --trait 
container.image-push=true --image-registry '$(kubectl -n kube-system get 
service registry -o jsonpath='{.spec.clusterIP}')' --image-builder=docker`
+
+The following steps have been known to be working with Camel 4.10+:
+
+1. `minikube start --addons registry --driver=docker`
+2. `eval $(minikube -p minikube docker-env)`
+3. `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`
 
 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-core/src/test/resources/application-jkube.properties
 
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/application-jkube.properties
index 39fd8d53603..1f39b56d0cd 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/resources/application-jkube.properties
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/resources/application-jkube.properties
@@ -18,9 +18,10 @@ jib.label=abc
 label.runtime=camel-main
 jkube.version=1.18.0
 jkube.skip.build=true
+jkube.skip.push=true
 jkube.imagePullPolicy=Always
 jkube.enricher.jkube-controller.type=Deployment
 jkube.enricher.jkube-service.port=80:8080,443:8080
 jkube.enricher.jkube-project-label.group=foo
 jkube.enricher.jkube-project-label.provider=asf
-jkube.recreate=true
\ No newline at end of file
+jkube.recreate=true
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 4cf5e3acf0c..92665066248 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
@@ -104,6 +104,10 @@ public class KubernetesExport extends Export {
                         description = "The image builder used to build the 
container image (e.g. docker, jib, podman).")
     protected String imageBuilder;
 
+    @CommandLine.Option(names = { "--image-push" }, defaultValue = "true",
+                        description = "Whether to push the container image to 
a given image registry.")
+    protected boolean imagePush = true;
+
     @CommandLine.Option(names = { "--cluster-type" },
                         description = "The target cluster type. Special 
configurations may be applied to different cluster types such as Kind or 
Minikube or Openshift.")
     protected String clusterType;
@@ -266,16 +270,13 @@ public class KubernetesExport extends Export {
             
buildProperties.add("jkube.container-image.imagePullPolicy=%s".formatted(imagePullPolicy));
         }
 
-        var skipPush = !container.getImagePush();
+        buildProperties.add("jkube.skip.push=%b".formatted(!imagePush));
+
         if (ClusterType.OPENSHIFT.isEqualTo(clusterType)) {
             if (!"docker".equals(imageBuilder)) {
                 printer().printf("OpenShift forcing --image-builder=docker%n");
                 imageBuilder = "docker";
             }
-            if (skipPush) {
-                printer().printf("OpenShift forcing --trait 
container.image-push=true%n");
-                container.setImagePush(true);
-            }
             
buildProperties.add("jkube.maven.plugin=%s".formatted("openshift-maven-plugin"));
         } else {
             
buildProperties.add("jkube.maven.plugin=%s".formatted("kubernetes-maven-plugin"));
@@ -284,7 +285,6 @@ public class KubernetesExport extends Export {
         if ("docker".equals(imageBuilder) || "jib".equals(imageBuilder)) {
             
buildProperties.add("jkube.build.strategy=%s".formatted(imageBuilder));
         }
-        buildProperties.add("jkube.skip.push=%b".formatted(skipPush));
 
         // Runtime specific for Main
         if (runtime == RuntimeType.main) {
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 d7beb50109a..ce4f930a0cd 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
@@ -148,9 +148,9 @@ public class KubernetesRun extends KubernetesBaseCommand {
                         description = "Whether to build container image as 
part of the run.")
     boolean imageBuild = true;
 
-    @CommandLine.Option(names = { "--image-push" }, defaultValue = "false",
+    @CommandLine.Option(names = { "--image-push" }, defaultValue = "true",
                         description = "Whether to push image to given image 
registry as part of the run.")
-    boolean imagePush = false;
+    boolean imagePush = true;
 
     @CommandLine.Option(names = { "--image-platforms" },
                         description = "List of target platforms. Each platform 
is defined using the pattern.")
@@ -377,6 +377,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
         export.image = image;
         export.imageRegistry = imageRegistry;
         export.imageGroup = imageGroup;
+        export.imagePush = imagePush;
         export.imageBuilder = imageBuilder;
         export.clusterType = clusterType;
         export.serviceAccount = serviceAccount;
@@ -561,6 +562,10 @@ public class KubernetesRun extends KubernetesBaseCommand {
             args.add("-Djkube.namespace=%s".formatted(namespace));
         }
 
+        // skip image build and push because we only want to build the 
Kubernetes manifest
+        args.add("-Djkube.skip.build=true");
+        args.add("-Djkube.skip.push=true");
+
         args.add("package");
 
         if (!quiet) {
@@ -606,6 +611,7 @@ public class KubernetesRun extends KubernetesBaseCommand {
 
         if (imagePush) {
             args.add("-Djkube.%s.push=true".formatted(imageBuilder));
+            args.add("-Djkube.skip.push=false");
         }
 
         if (!ObjectHelper.isEmpty(namespace)) {
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/Container.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/Container.java
index ffd92bf2b47..16ef61364d9 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/Container.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/Container.java
@@ -79,11 +79,6 @@ public class Container {
     @JsonSetter(
                 nulls = Nulls.SKIP)
     private List<String> imagePullSecrets;
-    @JsonProperty("imagePush")
-    @JsonPropertyDescription("Enable image push to the registry")
-    @JsonSetter(
-                nulls = Nulls.SKIP)
-    private boolean imagePush;
     @JsonProperty("limitCPU")
     @JsonPropertyDescription("The maximum amount of CPU to be provided 
(default 500 millicores).")
     @JsonSetter(
@@ -220,14 +215,6 @@ public class Container {
         this.imagePullSecrets = imagePullSecret;
     }
 
-    public boolean getImagePush() {
-        return imagePush;
-    }
-
-    public void setImagePush(boolean imagePush) {
-        this.imagePush = imagePush;
-    }
-
     public String getLimitCPU() {
         return this.limitCPU;
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/ContainerBuilder.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/ContainerBuilder.java
index c13bec0e0e7..823218b08db 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/ContainerBuilder.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/model/ContainerBuilder.java
@@ -28,7 +28,6 @@ public final class ContainerBuilder {
     private String image;
     private Container.ImagePullPolicy imagePullPolicy;
     private List<String> imagePullSecrets;
-    private boolean imagePush;
     private String limitCPU;
     private String limitMemory;
     private String name;
@@ -94,11 +93,6 @@ public final class ContainerBuilder {
         return this;
     }
 
-    public ContainerBuilder withImagePush(boolean imagePush) {
-        this.imagePush = imagePush;
-        return this;
-    }
-
     public ContainerBuilder withLimitCPU(String limitCPU) {
         this.limitCPU = limitCPU;
         return this;
@@ -170,7 +164,6 @@ public final class ContainerBuilder {
         container.setImage(image);
         container.setImagePullPolicy(imagePullPolicy);
         container.setImagePullSecrets(imagePullSecrets);
-        container.setImagePush(imagePush);
         container.setLimitCPU(limitCPU);
         container.setLimitMemory(limitMemory);
         container.setName(name);

Reply via email to