k3s/examples/update-demo
Takeshi Hagikura f92cc6a948 Replace the outdated cloudcfg.sh to kubecfg.sh
Replaces the outdated cloudcfg.sh to kubecfg.sh in the dynamic update demo.
2014-07-02 07:35:08 +09:00
..
image Initial add of cloud-demo 2014-06-26 18:52:08 -07:00
local Initial add of cloud-demo 2014-06-26 18:52:08 -07:00
README.md Replace the outdated cloudcfg.sh to kubecfg.sh 2014-07-02 07:35:08 +09: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.

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.