Skip to content

hazelcast-demos/zerodowntime

Repository files navigation

Demo notes

Set up

Create a kind cluster with correct port mapping
kind create cluster --config kind.yml
Set the Kubernetes context
kubectl config set-context --current --namespace=zerodowntime
Get back to the v1 of the application
git checkout 1.0
Build the image

The build will load the image to the Docker daemon.

./mvnw clean compile com.google.cloud.tools:jib-maven-plugin:dockerBuild

Load it into kind.

kind load docker-image hazelcast/hzshop:1.0
Get to the v2 of the application
git checkout master
Build the image and load it to the Docker daemon
./mvnw clean compile com.google.cloud.tools:jib-maven-plugin:dockerBuild

Load it into kind.

kind load docker-image hazelcast/hzshop:2.0
Load the remaining images in kind
kind load docker-image mysql:8.0
kind load docker-image hazelcast/forward:2.0

Execution

Schedule common parameters
kubectl apply -f infrastructure/kube/parameters.yml
Schedule the original database (blue)
kubectl apply -f infrastructure/kube/blue.yml
Schedule the v1 version of the application
kubectl apply -f infrastructure/kube/application.yml
Use the application to add products to the cart of any of the customers

It’s possible to add products to more than one cart!

Schedule the target database (green)
kubectl apply -f infrastructure/kube/green.yml
Schedule the CDC job from blue to green
kubectl apply -f infrastructure/kube/forward.yml
Schedule the v2 version of the application
kubectl apply -f infrastructure/kube/application2.yml
Continue adding products to the cart

At one point, you’ll notice the node you were on has changed but keeping you connected with your cart!