= Environment Trait

// Start of autogenerated code - DO NOT EDIT! (description)
The environment trait is used internally to inject standard environment variables in the integration container,
such as `NAMESPACE`, `POD_NAME` and others.


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

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

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

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

| environment.container-meta
| bool
| 

|===

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