k3s/examples/update-demo
Brendan Burns 854b9e14bd Augment the update example to turn black if the server is not responding. 2014-07-24 21:46:35 -07:00
..
image Initial add of cloud-demo 2014-06-26 18:52:08 -07:00
local Augment the update example to turn black if the server is not responding. 2014-07-24 21:46:35 -07:00
README.md adding firewall instructions to the README 2014-07-14 15:24:50 -07:00

README.md

Live update example

This example demonstrates the usage of Kubernetes to perform a live update on a running group of pods.

Step Zero: Prerequisites

This example assumes that you have forked the repository and turned up a Kubernetes cluster:

$ cd kubernetes
$ hack/dev-build-and-up.sh
$ hack/build-go.sh

This example also assumes that you have Docker installed on your local machine.

It also assumes that $DOCKER_USER is set to your docker user id.

You may need to open the firewall for port 8080 using the console or the gcutil tool. The following command will allow traffic from any source to instances tagged kubernetes-minion:

$ gcutil addfirewall --allowed=tcp:8080 --target_tags=kubernetes-minion kubernetes-minion-8080

Step One: Build the image

$ cd kubernetes/examples/update-demo/image
$ docker build -t $DOCKER_USER/data .
$ docker push $DOCKER_USER/data

Step Two: Run the controller

Now we will turn up two replicas of that image. They all serve on port 8080, mapped to internal port 80

$ cd kubernetes
$ cluster/kubecfg.sh -p 8080:80 run $DOCKER_USER/data 2 dataController

Step Three: Turn up the UX for the demo

In a different terminal:

$ cd kubernetes
$ cluster/kubecfg.sh -proxy -www examples/update-demo/local/

Now visit the the demo website. You should see two light blue squares with pod IDs and ip addresses.

Step Four: Try resizing the controller

Now we will increase the number of replicas from two to four:

$ cd kubernetes
$ cluster/kubecfg.sh resize dataController 4

If you go back to the demo website you should eventually see four boxes, one for each pod.

Step Five: Update the docker image

We will now update the docker image to serve a different color.

$ cd kubernetes/examples/update-demo/image
$ ${EDITOR} data.json

Edit the color value so that it is a new color. For example:

{
  "color": "#F00"
}

Will set the color to red.

Once you are happy with the color, build a new image:

$ docker build -t $DOCKER_USER/data .
$ docker push $DOCKER_USER/data

Step Six: Roll the update out to your servers

We will now update the servers that are running out in your cluster.

$ cd kubernetes
$ cluster/kubecfg.sh -u=30s rollingupdate dataController

Watch the UX, it will update one pod every 30 seconds until all of the pods have the new color.