= Kubernetes Components
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-kubernetes/src/main/docs/kubernetes-summary.adoc
//attributes written by hand, not generated
:docTitle: Kubernetes
:since: 2.17

*Since Camel {since}*

The Kubernetes components integrate your application with Kubernetes standalone or on top of Openshift.


== {docTitle} components

See the following for usage of each component:

indexDescriptionList::[attributes='group={docTitle}',descAttribute=description]

== Installation

Maven users will need to add the following dependency to
their `pom.xml` for this component:
[source,xml]
------------------------------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-kubernetes</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------


== Headers

[width="100%",options="header"]
|=======================================================================
|Name |Type |Description

|CamelKubernetesOperation |String |The Producer operation

|CamelKubernetesNamespaceName |String |The Namespace name

|CamelKubernetesNamespaceLabels |Map |The Namespace Labels

|CamelKubernetesServiceLabels |Map |The Service labels

|CamelKubernetesServiceName |String |The Service name

|CamelKubernetesServiceSpec |io.fabric8.kubernetes.api.model.ServiceSpec |The Spec for a Service

|CamelKubernetesReplicationControllersLabels |Map |Replication controller labels

|CamelKubernetesReplicationControllerName |String |Replication controller name

|CamelKubernetesReplicationControllerSpec |io.fabric8.kubernetes.api.model.ReplicationControllerSpec |The Spec for a Replication Controller

|CamelKubernetesReplicationControllerReplicas |Integer |The number of replicas for a Replication Controller during the Scale operation

|CamelKubernetesPodsLabels |Map |Pod labels

|CamelKubernetesPodName |String |Pod name

|CamelKubernetesPodSpec |io.fabric8.kubernetes.api.model.PodSpec |The Spec for a Pod

|CamelKubernetesPersistentVolumesLabels |Map |Persistent Volume labels

|CamelKubernetesPersistentVolumesName |String |Persistent Volume name

|CamelKubernetesPersistentVolumesClaimsLabels |Map |Persistent Volume Claim labels

|CamelKubernetesPersistentVolumesClaimsName |String |Persistent Volume Claim name

|CamelKubernetesPersistentVolumesClaimsSpec |io.fabric8.kubernetes.api.model.PersistentVolumeClaimSpec |The Spec for a Persistent Volume claim

|CamelKubernetesSecretsLabels |Map |Secret labels

|CamelKubernetesSecretsName |String |Secret name

|CamelKubernetesSecret |io.fabric8.kubernetes.api.model.Secret |A Secret Object

|CamelKubernetesResourcesQuotaLabels |Map |Resource Quota labels

|CamelKubernetesResourcesQuotaName |String |Resource Quota name

|CamelKubernetesResourceQuotaSpec |io.fabric8.kubernetes.api.model.ResourceQuotaSpec |The Spec for a Resource Quota

|CamelKubernetesServiceAccountsLabels |Map |Service Account labels

|CamelKubernetesServiceAccountName |String |Service Account name

|CamelKubernetesServiceAccount |io.fabric8.kubernetes.api.model.ServiceAccount |A Service Account object

|CamelKubernetesNodesLabels |Map |Node labels

|CamelKubernetesNodeName |String |Node name

|CamelKubernetesBuildsLabels |Map |Openshift Build labels

|CamelKubernetesBuildName |String |Openshift Build name

|CamelKubernetesBuildConfigsLabels |Map |Openshift Build Config labels

|CamelKubernetesBuildConfigName |String |Openshift Build Config name

|CamelKubernetesEventAction |io.fabric8.kubernetes.client.Watcher.Action |Action watched by the consumer

|CamelKubernetesEventTimestamp |String |Timestamp of the action watched by the consumer

|CamelKubernetesConfigMapName |String |ConfigMap name

|CamelKubernetesConfigMapsLabels |Map |ConfigMap labels

|CamelKubernetesConfigData |Map |ConfigMap Data
|=======================================================================


== Usage

=== Producer examples

Here we show some examples of producer using camel-kubernetes.

=== Create a pod

[source,java]
-------------------------------------------------------------
from("direct:createPod")
    .toF("kubernetes-pods://%s?oauthToken=%s&operation=createPod", host, authToken);
-------------------------------------------------------------

By using the KubernetesConstants.KUBERNETES_POD_SPEC header you can specify your PodSpec and pass it to this operation.

=== Delete a pod

[source,java]
-------------------------------------------------------------
from("direct:createPod")
    .toF("kubernetes-pods://%s?oauthToken=%s&operation=deletePod", host, authToken);
-------------------------------------------------------------

By using the KubernetesConstants.KUBERNETES_POD_NAME header you can specify your Pod name and pass it to this operation.

include::camel-spring-boot::page$kubernetes-starter.adoc[]
