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()); }