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