Créer un load balancer

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche

Présentation

Cette page a pour objet de décrire comment créer un load balancer dans GCP.

Création de l'équilibreur de charge pour un service Cloud Run

IP publique

Création IP

gcloud compute addresses create ${PROJECT_NAME}-cloudrun-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global \
--project=${PROJECT_ID}

Afficher l'adresse IP

gcloud compute addresses describe ${PROJECT_NAME}-cloudrun-ip \
--format="get(address)" \
--global \
--project=${PROJECT_ID}

Variabilisation de l'adresse IP

export CLOUDRUN_IP_ADDRESS=$(gcloud compute addresses describe ${PROJECT_NAME}-cloudrun-ip \
--format="get(address)" \
--global \
--project=${PROJECT_ID})

Certification SSL

Création du certificat

gcloud compute ssl-certificates create ${PROJECT_NAME}-cloudrun-cert \
--description="SSL cert for my CloudRun service" \
--domains=${PROJECT_NAME}.mydomain.com \
--global \
--project=${PROJECT_ID}

DNS

Ajout de l’enregistrement DNS

gcloud dns record-sets create ${PROJECT_NAME}.mydomain.com. \
--type="A" --zone="mydomain-com" \
--rrdatas="${CLOUDRUN_IP_ADDRESS}" \
--ttl="300" \
--project=my-shared-project

Points de terminaison

Création du groupe de points de terminaison de réseau

gcloud beta compute network-endpoint-groups create ${PROJECT_NAME}-cloudrun-neg \
--region=$REGION \
--network-endpoint-type=serverless \
--cloud-run-service=${PROJECT_NAME}-cloudrun \
--project=${PROJECT_ID}

Service de backends

Création du service de backends

gcloud beta compute backend-services create ${PROJECT_NAME}-cloudrun-be \
--load-balancing-scheme=EXTERNAL_MANAGED \
--global \
--project=${PROJECT_ID}

Ajout d’un backend au service de backends

gcloud beta compute backend-services add-backend ${PROJECT_NAME}-cloudrun-be \
--global \
--network-endpoint-group=${PROJECT_NAME}-cloudrun-neg \
--network-endpoint-group-region=$REGION \
--project=${PROJECT_ID}

Mappage d'URLs

Pour la redirection http vers https

Création d’un fichier temporaire :

cat <<EOF>/tmp/url.yaml
defaultUrlRedirect:
  httpsRedirect: true
  redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
  stripQuery: false
kind: compute#urlMap
name: ${PROJECT_NAME}-cloudrun-http-to-https
EOF

Validation du fichier :

gcloud compute url-maps validate --source=/tmp/url.yaml --project=${PROJECT_ID}

Import du fichier pour créer le mappage d’URLs :

gcloud compute url-maps import ${PROJECT_NAME}-cloudrun-http-to-https \
--source /tmp/url.yaml \
--global \
--project=${PROJECT_ID}


Pour l'écoute sur https

gcloud beta compute url-maps create ${PROJECT_NAME}-cloudrun-url-maps \
--default-service ${PROJECT_NAME}-cloudrun-be \
--project=${PROJECT_ID}

Création des proxies cibles

Proxy http

gcloud compute target-http-proxies create ${PROJECT_NAME}-cloudrun-http-proxy \
--url-map=${PROJECT_NAME}-cloudrun-http-to-https \
--global \
--project=${PROJECT_ID}

Proxy https

gcloud beta compute target-https-proxies create ${PROJECT_NAME}-cloudrun-https-proxy \
--ssl-certificates=${PROJECT_NAME}-cloudrun-cert \
--url-map=${PROJECT_NAME}-cloudrun-url-maps \
--project=${PROJECT_ID}

Création des équilibreurs de charge

HTTP

gcloud compute forwarding-rules create ${PROJECT_NAME}-cloudrun-http-rule \
--load-balancing-scheme=EXTERNAL \
--network-tier=PREMIUM \
--address=${PROJECT_NAME}-cloudrun-ip \
--global \
--target-http-proxy=${PROJECT_NAME}-cloudrun-http-proxy \
--ports=80 \
--project=${PROJECT_ID}

HTTPS

gcloud beta compute forwarding-rules create ${PROJECT_NAME}-cloudrun-https-rule \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM \
--address=${PROJECT_NAME}-cloudrun-ip \
--target-https-proxy=${PROJECT_NAME}-cloudrun-https-proxy \
--global \
--ports=443 \
--project=${PROJECT_ID}