= Platform Trait

// Start of autogenerated code - DO NOT EDIT! (description)
The platform trait is a base trait that is used to assign an integration platform to an integration.

In case the platform is missing, the trait is allowed to create a default platform.
This feature is especially useful in contexts where there's no need to provide a custom configuration for the platform
(e.g. on OpenShift the default settings work, since there's an embedded container image registry).


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

WARNING: The platform trait is a *platform trait*: disabling it may compromise the platform functionality.

// 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:
```
kamel run --trait platform.[key]=[value] --trait platform.[key2]=[value2] integration.groovy
```
The following configuration options are available:

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

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

| platform.create-default
| bool
| To create a default (empty) platform when the platform is missing.

| platform.auto
| bool
| To automatically detect from the environment if a default platform can be created (it will be created on OpenShift only).

|===

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