- 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
- 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!