Task 1. Download the monolith code and build your container
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~ /monolith-to-microservices
./setup.sh
cd ~ /monolith-to-microservices/monolith
npm start
gcloud services enable cloudbuild.googleapis.com
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-monolith-793:1.0.0 .
Task 2: Create a kubernetes cluster and deploy the application
gcloud config set compute/zone us-central1-a
gcloud services enable container.googleapis.com
gcloud container clusters create fancy-cluster-132 --num-nodes 3
kubectl create deployment fancy-monolith-793 --image=gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-monolith-793:1.0.0
kubectl expose deployment fancy-monolith-793 --type=LoadBalancer --port 80 --target-port 8080
Task 3. Create new microservices
cd ~ /monolith-to-microservices/microservices/src/orders
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-orders-158:1.0.0 .
cd ~ /monolith-to-microservices/microservices/src/products
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-products-288:1.0.0 .
Task 4. Deploy the new microservices
kubectl create deployment fancy-orders-158 --image=gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-orders-158:1.0.0
kubectl expose deployment fancy-orders-158 --type=LoadBalancer --port 80 --target-port 8081
kubectl create deployment fancy-products-288 --image=gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-products-288:1.0.0
kubectl expose deployment fancy-products-288 --type=LoadBalancer --port 80 --target-port 8082
Task 5. Configure and deploy the Frontend microservice
kubectl get svc
cd ~ /monolith-to-microservices/react-app
nano .env
...
REACT_APP_ORDERS_URL=http://< ORDERS_IP_ADDRESS> /api/orders
REACT_APP_PRODUCTS_URL=http://< PRODUCTS_IP_ADDRESS> /api/products
...
Task 6. Create a containerized version of the Frontend microservice
cd ~ /monolith-to-microservices/microservices/src/frontend
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-frontend-751:1.0.0 .
Task 7. Deploy the Frontend microservice
kubectl create deployment fancy-frontend-751 --image=gcr.io/${GOOGLE_CLOUD_PROJECT} /fancy-frontend-751:1.0.0
kubectl expose deployment fancy-frontend-751 --type=LoadBalancer --port 80 --target-port 8080