= Service Trait

// Start of autogenerated code - DO NOT EDIT! (badges)
// End of autogenerated code - DO NOT EDIT! (badges)
// Start of autogenerated code - DO NOT EDIT! (description)
The Service trait exposes the Integration with a Service resource so that it can be accessed by other applications
(or Integrations) in the same namespace.

NOTE: this trait is automatically disabled if the Knative Service trait is enabled.

It's enabled by default if the integration depends on a Camel component that can expose a HTTP endpoint.


This trait is available in the following profiles: **Kubernetes, Knative, 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 service.[key]=[value] --trait service.[key2]=[value2] integration.yaml
----
The following configuration options are available:

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

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

| service.auto
| bool
| To automatically detect from the code if a Service needs to be created.

| service.node-port
| bool
| Enable Service to be exposed as NodePort (default `false`).
Deprecated: Use service type instead.

| service.type
| github.com/apache/camel-k/v2/pkg/apis/camel/v1/trait.ServiceType
| The type of service to be used, either 'ClusterIP', 'NodePort' or 'LoadBalancer'.

| service.annotations
| map[string]string
| The annotations added to the Service object.

| service.labels
| map[string]string
| The labels added to the Service object.

| service.ports
| []string
| List of container ports available in the container to expose
(syntax: <port-name>;<port-number>;<container-port-number>[;<port-protocol]).
When omitted, `port-protocol` (admitted values `TCP`, `UDP` or `SCTP`) is `TCP`.
Don't use this for the primary http managed port (which is managed by container trait).
Don't use in Knative based environments.

|===

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

== Examples

* Expose a Service (we call it `hello`) on a port (`85``) which is used internally by your application (`8085`):
+
[source,console]
$ kamel run PlatformHttpServer.java -p quarkus.http.port=8085 -t container.ports=hello;8085 -t service.ports=hello;85;8085

* Expose an UDP Service (we call it `udp`) on a port (`95`) which is used internally by your application (`9095`):
+
[source,console]
$ kamel run MyUDPServer.java -t container.ports=udp;95;UDP -t service.ports=udp;95;9095;UDP
