Created
April 23, 2024 22:32
-
-
Save FelipeAlafy/448b4d26611ef5a0a7e3b9f64d1870e4 to your computer and use it in GitHub Desktop.
Google Cloud Fundamentals skill badget Implementing LoadBalancer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# First Task | |
gcloud config set project PROJECT_ID_CAN_BE_FOUND_ON_YOUR_LAB | |
gcloud config set compute/region REGION | |
gcloud config set compute/zone ZONE | |
gcloud compute instances create nucleus-webserver1 --machine-type=e2-micro | |
#Seccond task - copy and past the following lines into your cloud console to create the startup.sh file which will be the base for your template startup script | |
cat << EOF > startup.sh | |
#! /bin/bash | |
apt-get update | |
apt-get install -y nginx | |
service nginx start | |
sed -i -- 's/nginx/Google Cloud Platform - '"\$HOSTNAME"'/' /var/www/html/index.nginx-debian.html | |
EOF | |
-- Other commands: | |
gcloud compute instance-templates create lb-backend-template \ | |
--region=REGION \ | |
--network=default \ | |
--subnet=default \ | |
--tags=allow-health-check \ | |
--machine-type=e2-medium \ | |
--image-family=debian-11 \ | |
--image-project=debian-cloud \ | |
--metadata-from-file startup-script=startup.sh | |
#Creating the pool | |
gcloud compute target-pools create nginx-pool | |
gcloud compute instance-groups managed create lb-backend-group --base-instance-name nginx --template=lb-backend-template --size=2 --target-pool nginx-pool --zone=us-east1-b | |
#Creating a firewall for tcp:80 | |
gcloud compute firewall-rules create www-firewall --allow tcp:80 | |
#Allowing tcp connection through the firewall | |
gcloud compute firewall-rules create permit-tcp-rule-586 \ | |
--network=default \ | |
--action=allow \ | |
--direction=ingress \ | |
--source-ranges=130.211.0.0/22,35.191.0.0/16 \ | |
--target-tags=allow-health-check \ | |
--rules=tcp:80 | |
--target-pool nginx-pool | |
# Creating an external IPV4 address | |
gcloud compute addresses create lb-ipv4-1 \ | |
--ip-version=IPV4 \ | |
--global | |
# Health check for port 80 | |
gcloud compute health-checks create http http-basic-check --port 80 | |
# Forwarding Rule to the nginx-pool | |
gcloud compute forwarding-rules create nginx-lb \ | |
--region REGION \ | |
--ports=80 \ | |
--target-pool nginx-pool | |
# Creating a basic http check | |
gcloud compute http-health-checks create http-basic-check | |
#Defining the ports to http:80 to the mangened group | |
gcloud compute instance-groups managed set-named-ports lb-backend-group --named-ports http:80 | |
#Backend service | |
gcloud compute backend-services add-backend web-backend-service --instance-group=lb-backend-group --instance-group-zone=ZONE --global | |
#URL Map | |
gcloud compute url-maps create web-map-http --default-service web-backend-service | |
#Proxy | |
gcloud compute target-http-proxies create http-lb-proxy --url-map web-map-http | |
#Forwarding rule to the proxy | |
gcloud compute forwarding-rules create http-content-rule \ | |
--address=lb-ipv4-1\ | |
--global \ | |
--target-http-proxy=http-lb-proxy \ | |
--ports=80 | |
#Adding the VM Instances to the firewall, it won't load at the browser if you don't do the followings steps, neither count as done | |
gcloud compute instances add-tags NAME_OF_INSTANCE_1 --tags http-server,https-server | |
gcloud compute instances add-tags NAME_OF_INSTANCE_2 --tags http-server,https-server | |
gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tc | |
p:80 --source-ranges=0.0.0.0/0 --target-tags=http-server | |
# OPTIONAL | |
# you can check your instances from the loadbalancer external ip address only http will work, because of the certification need for https | |
http://[EXTERNAL_IP]:80 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment