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 e882d9fab7b CAMEL-21456 : camel-jbang-kubernetes - Add TLS support to 
ingress trait (#16427)
e882d9fab7b is described below

commit e882d9fab7b40860598dfe85026311c0cb5e23ba
Author: Gaƫlle Fournier <gaelle.fournier.w...@gmail.com>
AuthorDate: Tue Dec 3 12:42:46 2024 +0100

    CAMEL-21456 : camel-jbang-kubernetes - Add TLS support to ingress trait 
(#16427)
---
 .../user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc | 10 +++++++++-
 .../jbang/core/commands/kubernetes/traits/IngressTrait.java    | 10 ++++++++++
 .../jbang/core/commands/kubernetes/KubernetesExportTest.java   |  5 +++++
 3 files changed, 24 insertions(+), 1 deletion(-)

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 450a99950b0..9dbd9aa3933 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-kubernetes.adoc
@@ -1029,6 +1029,14 @@ The ingress trait provides the following configuration 
options:
 | bool
 | To automatically add an Ingress Resource whenever the route uses an HTTP 
endpoint consumer (default `true`).
 
+| ingress.tls-hosts
+| []string
+| To configure specific hosts exposed through SNI TLS extension by the ingess.
+
+| ingress.tls-secret-name
+| string
+| To indicate the secret containing the TLS private key and certificate to use 
for TLS.
+
 |===
 
 The syntax to specify container trait options is as follows:
@@ -1104,7 +1112,7 @@ The Route trait provides the following configuration 
options:
 | string
 | To configure the host exposed by the route.
 
-| ingress.tls-termination
+| route.tls-termination
 | string
 | The TLS termination type, like `edge`, `passthrough` or `reencrypt`. Refer 
to the OpenShift route documentation for additional information.
 
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/IngressTrait.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/IngressTrait.java
index 03b2f7e5f0b..b09f591ce30 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/IngressTrait.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/IngressTrait.java
@@ -23,6 +23,8 @@ import 
io.fabric8.kubernetes.api.model.networking.v1.HTTPIngressPathBuilder;
 import io.fabric8.kubernetes.api.model.networking.v1.IngressBuilder;
 import io.fabric8.kubernetes.api.model.networking.v1.IngressRule;
 import io.fabric8.kubernetes.api.model.networking.v1.IngressRuleBuilder;
+import io.fabric8.kubernetes.api.model.networking.v1.IngressTLS;
+import io.fabric8.kubernetes.api.model.networking.v1.IngressTLSBuilder;
 import org.apache.camel.dsl.jbang.core.commands.kubernetes.ClusterType;
 import 
org.apache.camel.dsl.jbang.core.commands.kubernetes.traits.model.Container;
 import 
org.apache.camel.dsl.jbang.core.commands.kubernetes.traits.model.Ingress;
@@ -97,6 +99,14 @@ public class IngressTrait extends BaseTrait {
                 .withRules(rule)
                 .endSpec();
 
+        if (ingressTrait.getTlsHosts() != null && 
ingressTrait.getTlsSecretName() != null) {
+            IngressTLS tls = new IngressTLSBuilder()
+                    .withHosts(ingressTrait.getTlsHosts())
+                    .withSecretName(ingressTrait.getTlsSecretName())
+                    .build();
+            ingressBuilder.editSpec().withTls(tls).endSpec();
+        }
+
         context.add(ingressBuilder);
     }
 
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 67aaeaec70c..e549fbcbd4b 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
@@ -194,6 +194,8 @@ class KubernetesExportTest extends KubernetesExportBaseTest 
{
                 "--trait", "ingress.pathType=ImplementationSpecific",
                 "--trait", 
"ingress.annotations=nginx.ingress.kubernetes.io/rewrite-target=/$2",
                 "--trait", 
"ingress.annotations=nginx.ingress.kubernetes.io/use-regex=true",
+                "--trait", "ingress.tls-hosts=acme.com,acme2.com",
+                "--trait", "ingress.tls-secret-name=acme-tls-secret",
                 "--runtime=" + rt.runtime());
         var exit = command.doCall();
         Assertions.assertEquals(0, exit);
@@ -225,6 +227,9 @@ class KubernetesExportTest extends KubernetesExportBaseTest 
{
         Assertions.assertEquals("/$2",
                 
ingress.getMetadata().getAnnotations().get("nginx.ingress.kubernetes.io/rewrite-target"));
         Assertions.assertEquals("true", 
ingress.getMetadata().getAnnotations().get("nginx.ingress.kubernetes.io/use-regex"));
+        
Assertions.assertTrue(ingress.getSpec().getTls().get(0).getHosts().contains("acme.com"));
+        
Assertions.assertTrue(ingress.getSpec().getTls().get(0).getHosts().contains("acme2.com"));
+        Assertions.assertEquals("acme-tls-secret", 
ingress.getSpec().getTls().get(0).getSecretName());
 
     }
 

Reply via email to