= Route Trait

// Start of autogenerated code - DO NOT EDIT! (description)
The Route trait can be used to configure the creation of OpenShift routes for the integration.


This trait is available in the following profiles: **OpenShift**.

// End of autogenerated code - DO NOT EDIT! (description)
// Start of autogenerated code - DO NOT EDIT! (configuration)
== Configuration

Trait properties can be specified when running any integration with the CLI:
[source,console]
----
$ kamel run --trait route.[key]=[value] --trait route.[key2]=[value2] integration.groovy
----
The following configuration options are available:

[cols="2m,1m,5a"]
|===
|Property | Type | Description

| route.enabled
| bool
| Can be used to enable or disable a trait. All traits share this common property.

| route.host
| string
| To configure the host exposed by the route.

| route.tls-termination
| string
| The TLS termination type, like `edge`, `passthrough` or `reencrypt`.

Refer to the OpenShift documentation for additional information.

| route.tls-certificate
| string
| The TLS certificate contents.

Refer to the OpenShift documentation for additional information.

| route.tls-key
| string
| The TLS certificate key contents.

Refer to the OpenShift documentation for additional information.

| route.tls-ca-certificate
| string
| The TLS cert authority certificate contents.

Refer to the OpenShift documentation for additional information.

| route.tls-destination-ca-certificate
| string
| The destination CA certificate provides the contents of the ca certificate of the final destination.  When using reencrypt
termination this file should be provided in order to have routers use it for health checks on the secure connection.
If this field is not specified, the router may provide its own destination CA and perform hostname validation using
the short service name (service.namespace.svc), which allows infrastructure generated certificates to automatically
verify.

Refer to the OpenShift documentation for additional information.

| route.tls-insecure-edge-termination-policy
| string
| To configure how to deal with insecure traffic, e.g. `Allow`, `Disable` or `Redirect` traffic.

Refer to the OpenShift documentation for additional information.

|===

// End of autogenerated code - DO NOT EDIT! (configuration)
