Skip to content

robrich/kubernetes-test-drive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 

Repository files navigation

Kubernetes Test Drive

This code is the demos for the Kubernetes Test Drive presentation.

The code

In the presentation we dig into each file. Wander through all the code in the blue folder to see behind the curtain.

The demos

cd blue

docker build -t kubedemo:v1 src

docker run -p 5000:80 kubedemo:v1
docker container stop ...
# open browser to localhost:5000
docker container list
docker container stop ... # <-- include container name
docker container rm ... # <-- include container name

We ran the docker container. This didn't use Kubernetes at all.

kubectl cluster-info
kubectl apply -f kube/pod.yaml
kubectl get pods
kubectl describe pods kubedemo

We have a pod running, but we can't browse to it.

kubectl port-forward kubedemo 5000:80

We can now browse to localhost:5000 to see the container. This is the "cheater" way.

Stop the terminal, and let's kill this pod.

kubectl delete -f kube/pod.yaml
kubectl get all

The pod is gone. Let's schedule a deployment and a service that points to it.

kubectl apply -f kube/deployment.yaml
kubectl apply -f kube/service.yaml
kubectl get all

We now have a deployment and a service pointing to the deployment.

# since it's type:NodePort
kubectl get all
# svc/kubedemo-service  NodePort  0.0.0  <none>  80:**31580**/TCP  1s
# grab 30,000 port
http://localhost:31580

The product is now running. We can browse to it and see the website.

Now let's imagine we have a requirements change. Normally this would be done in the same folder, but let's switch to the green folder and "change" content there.

cd ..
cd green

We modified index.html. Let's build the next version of the docker image.

docker build -t kubedemo:v2 src
# We've changed kube/deployment.yaml to reference v2 in all 3 places.
kubectl apply -f kube/deployment.yaml
kubectl get all # <-- run this quickly a bunch of times and you might catch the scale up
# refresh the page

The website didn't go down, and we now have the new version running. Score! Zero down-time deployment.

Other useful commands:

# get deployment details
kubectl get all
kubectl describe po/kubedemo-deployment-... # <-- pick a pod from the list above
# get logs for each
kubectl get all
kubectl logs po/kubedemo-deployment-...

Time to clean up:

cd ..

kubectl delete -f blue/kube/service.yaml
kubectl delete -f green/kube/deployment.yaml

kubectl get all

The only service left is the Kubernetes API.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published