== Kubernetes Example - CDI

=== Introduction

This example illustrates the integration between Camel, CDI and
Kubernetes.

The example gets the list of pods from a Kubernetes cluster and emulates
the output of the `+kubectl get pods+` command.

The `+camel-cdi+` and `+camel-kubernetes+` components are used in this
example. The example assumes you have a running Kubernetes cluster in
your environment. For example, you can use
https://github.com/kubernetes/minikube[minikube] or the
https://github.com/fabric8io/fabric8-installer/tree/master/vagrant/openshift[vagrant
openshift image] from http://fabric8.io/[Fabric8 team].

By default, the example use the `+KUBERNETES_MASTER+` environment
variable to retrieve the Kubernetes master URL. Besides, it tries to
find the current login token and namespace by parsing the users
`+~/.kube/config+` file. However, you can edit the
`+application.properties+` file to override the default and provide the
Kubernetes master URL and OAuth token for your environment.

To retrieve the tokens in your kubeconfig file, you can execute the
following command:

[source,sh]
----
$ kubectl config view -o jsonpath='{range .users[?(@.user.token != "")]}{.name}{":\t"}{.user.token}{"\n"}{end}'
----

Alternatively, if you're using OpenShift, you can retrieve the token for
the current user with:

[source,sh]
----
$ oc whoami -t
----

=== Build

You can build this example using:

[source,sh]
----
$ mvn package
----

=== Run

You can run this example using:

[source,sh]
----
$ KUBERNETES_MASTER="https://$(minikube ip):8443/" mvn camel:run
----

When the Camel application runs, you should see the pods list being
logged periodically, e.g.:

....
2016-08-22 18:29:46,449 [ timer://client] INFO kubernetes-client - We currently have 11 pods:
NAME                                READY     STATUS    RESTARTS   AGE
content-repository-yhg9u            1/1       Running   34         49d
docker-registry-1-bv5vk             1/1       Running   34         49d
fabric8-docker-registry-9jd9z       1/1       Running   34         49d
fabric8-forge-8gnro                 1/1       Running   11         17d
fabric8-kw532                       1/1       Running   34         49d
gogs-2exwf                          1/1       Running   22         32d
jenkins-kixdv                       1/1       Running   12         18d
mysql-5-f8trz                       1/1       Running   8          13d
nexus-5j60s                         1/1       Running   71         49d
router-1-7eiu5                      2/2       Running   26         49d
spring-boot-camel-rest-s-13-559vm   1/1       Running   0          6h
....

The timer has a `+period+` option equals to `+10s+`.

The Camel application can be stopped pressing ctrl+c in the shell.

=== Help and contributions

If you hit any problem using Camel or have some feedback, then please
https://camel.apache.org/community/support/[let us know].

We also love contributors, so
https://camel.apache.org/community/contributing/[get involved] :-)

The Camel riders!
