Skip to content

Instantly share code, notes, and snippets.

@philipz
Last active June 5, 2021 07:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save philipz/aa79b5f55e0125252a27b166adc79323 to your computer and use it in GitHub Desktop.
Save philipz/aa79b5f55e0125252a27b166adc79323 to your computer and use it in GitHub Desktop.
Build a Website on Google Cloud: Challenge Lab

########################################################################################

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}/fancytest: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 --num-nodes 3

kubectl create deployment fancytest --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/fancytest:1.0.0
kubectl expose deployment fancytest --type=LoadBalancer --port 80 --target-port 8080

############################################################################################### Task 3: Create a containerized version of your Microservices

cd ~/monolith-to-microservices/microservices/src/orders
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0 .

cd ~/monolith-to-microservices/microservices/src/products
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0 .

#################################################################################################

Task 4: Deploy the new microservices

kubectl create deployment orders --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0
kubectl expose deployment orders --type=LoadBalancer --port 80 --target-port 8081

kubectl create deployment products --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0
kubectl expose deployment products --type=LoadBalancer --port 80 --target-port 8082

###################################################################################################

Task 5: Configure the Frontend microservice

cd ~/monolith-to-microservices/react-app
nano .env

################################################################################################### 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}/frontend:1.0.0 .

#####################################################################################################

Task 7: Deploy the Frontend microservice

kubectl create deployment frontend --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0

kubectl expose deployment frontend --type=LoadBalancer --port 80 --target-port 8080
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment