Files
client-go/examples/in-cluster
Ahmet Alp Balkan 8efad6dbf0 clientgo/examples/in-cluster: add instructions to run the example
This patch adds instructions for how to run the in-cluster client-go example.
To make this example executable, providing a Dockerfile and build steps so
that it can directly be run on minikube.

This is part of the body of work improving the client library samples.

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>

Kubernetes-commit: 8604ed6d9906ebfb33206b55467db41c87e9f148
2017-06-13 20:38:43 +00:00
..
2017-04-15 20:28:18 +00:00

Authenticating inside the cluster

This example shows you how you can write an application that authenticates to the Kubernetes API while it is running on a Kubernetes cluster.

client-go uses the Service Account token mounted inside the Pod at the /var/run/secrets/kubernetes.io/serviceaccount path when the rest.InClusterConfig() is used.

Running this example

First compile the application for Linux:

cd in-cluster
GOOS=linux go build -o ./app .

Then package it to a docker image using the provided Dockerfile to run it on Kubernetes.

If you are running a Minikube cluster, you can build this image directly on the Docker engine of the Minikube node without pushing it to a registry. To build the image on Minikube:

eval $(minikube docker-env)
docker build -t in-cluster .

If you are not using Minikube, you should build this image and push it to a registry that your Kubernetes cluster can pull from.

Then, run the image in a Pod with a single instance Deployment:

$ kubectl run --rm -i demo --image=in-cluster --image-pull-policy=Never

There are 4 pods in the cluster
There are 4 pods in the cluster
There are 4 pods in the cluster
...

The example now runs on Kubernetes API and successfully queries the number of pods in the cluster every 10 seconds.

Clean up

To stop this example and clean up the pod, press Ctrl+C on the kubectl run command and then run:

kubectl delete deployment demo