== 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/support.html[let us know].

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

The Camel riders!
