Skip to main content

Google Cloud Platform

Cloud Storage

Prix de stockage :

Taille des données

1 Go

500 Go

1 To

50 To

Standard

0.017 8.607 17.628 881.408

Nearline

0.009 4.304 8.814 440.704

ColdLine

0.003 1.721 3.526 176.282

Archive

0.001 0.516 1.058 52.884

Prix de récupération des données : 

Taille des données

1 Go

500 Go

1 To

50 To

Standard

0 0 0 0

Nearline

0,01 5 10.24 512

ColdLine

0.02 10 20.48 1024

Archive

0,05 25 51.2 2560

Durée minimale de stockage : 

Type de stockage  Durée minimale de stockage

Standard

0

Nearline

30 jours

ColdLine

90 jours

Archive

180 jours

image-1638101883654.png

Cloud Load Balancing :.

Le tableau ci-dessous use de la statistique provenant de cette source qui affirme que de nos jour, une page internet pèse en moyenne 2.3 Mo. 

Ce tableau détermine le prix de Google Cloud Balancing en fonction des utilisateur par mois (prix du load balancing compris).:

Utilisateurs

1 page

10 pages

50 pages pages

100 pages

101  0,00000184  0,0000184  0,000092  0,000184
10010  0,0000184  0,000184  0,00092  0,00184
1 000100  0,000184  0,00184  0,0092  0,0184
1 0000,001840,01840,0920,184
10 000  0,0184  0,184  0,92  1,84
100 0000,1841,849,218,4
1 000 0001,8418,492184
10 000 00018,41849201840

Prix du cloud load balancer seul : 

Nombre de jour par mois * heures par jour * Prix par heure = 31 * 24 * 0,025 = 18.6 $ 

Prix de transfert de données par Mo = 0.000008 $ 

 

Ce tableau détermine le prix de Google Cloud Balancing en fonction des utilisateur par mois avec le prix du load balancer :

Utilisateurs1 page10 pages50 pages100 pages
118,6000018418,600018418,60009218,600184
1018,600018418,60018418,6009218,60184
10018,60018418,6018418,609218,6184
1 00018,6018418,618418,69218,784
10 00018,618418,78419,5220,44
100 00018,78420,4427,837
1 000 00020,4437110,6202,6
10 000 00037202,6938,61858,6

 

 

 

 

IP Pricing :

image-1636578882146.png

Faire un choix d'hébergement : 

image-1636639714986.png

Network Pricing :

image-1636578924024.png

Réductions liées à l'utilisation de vos VM :

image-1636642121306.png

Récapitulatif des service de stockage et des bases de données

image-1636797761156.png

Schémas décisionnel : 

image-1636798128988.png

 

Quelques notes : 

LINUX : 

Example de clef SSH : 

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAnD6qhcMV+JPyHIeU4817qk2F5I5HeK8JcjzWsIdCx925QZ1bZ7o8Peo3AuDYTitk0gFiLmfaJrKr3Gtt1731CsFDbOLkA/mwfdAXk9zpuEviIaODy9pOVLGmqMafsQFeETEzTxUrbkkaGqL1ELJy0OYTy+FVsRzKWQdpnbC7DptKnLDaVsuO3TQBjOnNJk1EeXIs6LlxxRb4gQE7z+onyjIDqoscC4K/9sOdzoqk/V/ZfUVNha1K+ePMp3pcF27ikRslhHUK384X/akrPXAmJ58S5pun54XeRAAqENrsGBX/qO4lxmd9NzDgbhtqSj3DOzM3K4gI5hJva1EYrN39hQ== nehemie

Windows : 

Activer le compte Administrateur : 

net user Administrator /passwordreq:yes
net user administrator *
net user Administrator /active:yes

Vous devez réaliser cette procédure si vous souhaitez activer les service ADDS dans le cloud ! 

 

Définir des variables : 

export PROJECT_ID=XXXXXXXX
export ZONE=us-central1-a

Afficher les zones : 

gcloud compute zones list | grep us-central1

Créer une instance de VM :

gcloud compute instances create VM1 --machine-type n1-standard-2 --zone $ZONE --project $PROJECT_ID
gcloud compute instances describe VM1 --zone $ZONE --project $PROJECT_ID
gcloud compute ssh VM1 --zone $ZONE --project $PROJECT_ID

Créer un cluster :

gcloud container clusters create mon-cluster --project $PROJECT_ID
gcloud container clusters get-credentials mon-cluster --project $PROJECT_ID
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment hello-server --type=LoadBalancer --port 8080

Supprimer un cluster : 

gcloud container clusters delete mon-cluster --project $PROJECT_ID

 

Équilibrage de charge HTTP et Réseau :

gcloud config set project IDPROJET

gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

gcloud compute instances create www1 \
  --image-family debian-9 \
  --image-project debian-cloud \
  --zone us-central1-a \
  --tags network-lb-tag \
  --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"


gcloud compute instances create www2 \
  --image-family debian-9 \
  --image-project debian-cloud \
  --zone us-central1-a \
  --tags network-lb-tag \
  --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

gcloud compute instances create www3 \
  --image-family debian-9 \
  --image-project debian-cloud \
  --zone us-central1-a \
  --tags network-lb-tag \
  --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"




Règle de parefeu pour autorisé le trafique entrant :
gcloud compute firewall-rules create www-firewall-network-lb \
    --target-tags network-lb-tag --allow tcp:80




Afficher les instances :
gcloud compute instances list

www1 : 34.133.245.113
www2 : 104.154.73.144
www3 : 34.71.227.111

Vérification du bon fonctionnement :
curl 34.133.245.113
curl 104.154.73.144
curl 34.71.227.111


Tâche 3 : Configurer le service d'équilibrage de charge

Création d'une adresse IP Externe pour l'équilibrage ::
gcloud compute addresses create network-lb-ip-1 \
 --region us-central1


Ajout d'une ancienne ressource :
gcloud compute http-health-checks create basic-check

Ajout du pool cible :

gcloud compute target-pools create www-pool \
    --region us-central1 --http-health-check basic-check



Ajoutez les instances au pool :

gcloud compute target-pools add-instances www-pool \
    --instances www1,www2,www3

Ajout d'une règle de transfet :
gcloud compute forwarding-rules create www-rule \
    --region us-central1 \
    --ports 80 \
    --address network-lb-ip-1 \
    --target-pool www-pool


Saisissez la commande suivante pour afficher l'adresse IP externe définie dans la règle de transfert www-rule utilisée par l'équilibreur de charge :
gcloud compute forwarding-rules describe www-rule --region us-central1


while true; do curl -m1 35.225.251.108; done



Tâche 5 : Créer un équilibreur de charge HTTP

gcloud compute instance-templates create lb-backend-template \
   --region=us-central1 \
   --network=default \
   --subnet=default \
   --tags=allow-health-check \
   --image-family=debian-9 \
   --image-project=debian-cloud \
   --metadata=startup-script='#! /bin/bash
     apt-get update
     apt-get install apache2 -y
     a2ensite default-ssl
     a2enmod ssl
     vm_hostname="$(curl -H "Metadata-Flavor:Google" \
     http://169.254.169.254/computeMetadata/v1/instance/name)"
     echo "Page served from: $vm_hostname" | \
     tee /var/www/html/index.html
     systemctl restart apache2'


Commencez par créer le modèle de l'équilibreur de charge :
gcloud compute instance-groups managed create lb-backend-group \
   --template=lb-backend-template --size=2 --zone=us-central1-a

Créez la règle de pare-feu fw-allow-health-check. Il s'agit d'une règle d'entrée qui autorise le trafic provenant des systèmes de vérification d'état Google Cloud (130.211.0.0/22 et 35.191.0.0/16). Cet exemple utilise le tag cible allow-health-check pour identifier les VM.
gcloud compute firewall-rules create fw-allow-health-check \
    --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


Maintenant que vos instances sont opérationnelles, configurez une adresse IP externe statique globale que vos clients utiliseront pour accéder à votre équilibreur de charge.
gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --global

Savoir quelle adresse :
gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

= 34.117.115.143
Créez une vérification d'état pour l'équilibreur de charge :

    gcloud compute health-checks create http http-basic-check \
        --port 80
Créer un service de backend :
    gcloud compute backend-services create web-backend-service \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --global


Ajoutez votre groupe d'instances en tant que backend au service de backend :
    gcloud compute backend-services add-backend web-backend-service \
        --instance-group=lb-backend-group \
        --instance-group-zone=us-central1-a \
        --global


Créez un mappage d'URL pour acheminer les requêtes entrantes vers le service de backend par défaut :
    gcloud compute url-maps create web-map-http \
        --default-service web-backend-service

Créez un proxy HTTP cible, qui va acheminer les requêtes vers votre mappage d'URL :
    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map web-map-http


Créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy :
    gcloud compute forwarding-rules create http-content-rule \
        --address=lb-ipv4-1\
        --global \
        --target-http-proxy=http-lb-proxy \
        --ports=80

Notes Challenge : 

gcloud config set project qwiklabs-gcp-04-9e1e3d54216e




# 1
gcloud compute instances create nucleus-jumphost-262 --machine-type=f1-micro --zone=us-east1-b

# 2
gcloud container clusters create mon-cluster --project qwiklabs-gcp-04-9e1e3d54216e --zone=us-east1-b
gcloud container clusters get-credentials mon-cluster --project qwiklabs-gcp-04-9e1e3d54216e --zone=us-east1-b

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:2.0
kubectl expose deployment hello-server --type=LoadBalancer --port 8083
gcloud container clusters get-credentials mon-cluster --zone=us-east1-b

# 3
gcloud config set compute/zone us-east1-b



# Créer un modèle d'instance  OK
gcloud compute instance-templates create ngnix-group-template \
   --region=europe-west1 \
   --network=default \
   --machine-type=f1-micro \
   --tags network-lb-tag \
   --metadata=startup-script="#! /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"



# Créer un pool cible

gcloud compute target-pools create nginx-pool \
    --region europe-west1 

# Créer un groupe d'instances géré

gcloud compute instance-groups managed create lb-backend-group \
   --template=ngnix-group-template --size=2 --zone=europe-west1-b --base-instance-name nginx 

# Créer la règle de pare feu :

gcloud compute firewall-rules create grant-tcp-rule-473 \
    --allow=tcp:80

gcloud compute forwarding-rules create nginx-lb \
--region europe-west1  \
--ports=80 \
--target-pool nginx-pool

5 .Create a health check :

gcloud compute http-health-checks create http-basic-check

gcloud compute instance-groups managed \
set-named-ports nginx-group \
--named-ports http:80


# Créer un service de backend et l'associer au groupe d'instances géré


gcloud compute backend-services create web-backend-service \
    --protocol HTTP --http-health-checks http-basic-check --global


gcloud compute backend-services add-backend web-backend-service \
    --instance-group ngnix-group \
    --instance-group-zone=europe-west1-b \
    --global



# Créer un mappage d'URL et un proxy HTTP cible pour acheminer les demandes vers votre mappage d'URL

gcloud compute url-maps create web-map \
    --default-service nginx-backend

gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map

# Créer une règle de transfert

gcloud compute forwarding-rules create http-content-rule \
    --global \
    --target-http-proxy http-lb-proxy \
    --ports 80


####### Correction 


gcloud config set compute/zone europe-west1-b



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

1 .Create an instance template :

gcloud compute instance-templates create nginx-template \
--metadata-from-file startup-script=startup.sh

2 .Create a target pool :

gcloud compute target-pools create nginx-pool

3 .Create a managed instance group :

gcloud compute instance-groups managed create nginx-group \
--base-instance-name nginx \
--size 2 \
--template nginx-template \
--target-pool nginx-pool

gcloud compute instances list

4 .Create a firewall rule to allow traffic (80/tcp) :

gcloud compute firewall-rules create allow-tcp-rule-375 --allow tcp:80

gcloud compute forwarding-rules create nginx-lb \
--region europe-west1 \
--ports=80 \
--target-pool nginx-pool

gcloud compute forwarding-rules list

5 .Create a health check :

gcloud compute http-health-checks create http-basic-check

gcloud compute instance-groups managed \
set-named-ports nginx-group \
--named-ports http:80

6 .Create a backend service and attach the manged instance group :

gcloud compute backend-services create nginx-backend \
--protocol HTTP --http-health-checks http-basic-check --global

gcloud compute backend-services add-backend nginx-backend \
--instance-group nginx-group \
--instance-group-zone europe-west1-b \
--global

7 .Create a URL map and target HTTP proxy to route requests to your URL map :

gcloud compute url-maps create web-map \
--default-service nginx-backend

gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map

8 .Create a forwarding rule :

gcloud compute forwarding-rules create http-content-rule \
--global \
--target-http-proxy http-lb-proxy \
--ports 80

gcloud compute forwarding-rules list

 

Google Kubernetes Engine : 

Définition de la zone de préférence GCP (Google Cloud Project) :

export MY_ZONE=us-central1-a

Création d'un cluster avec deux noeuds : 

gcloud container clusters create webfrontend --zone $MY_ZONE --num-nodes 2

Déploiement d'une image :

kubectl create deploy nginx --image=nginx:1.17.10

Exposition du service : 

kubectl expose deployment nginx --port 80 --type LoadBalancer

Définition des nombre de PODs qui s'exécutent sur le service : 

kubectl scale deployment nginx --replicas 3

Deployment Manager and Stackdriver : 

Deployment Manager = Création d'un déploiement et maintien de celui-ci 

Stackdriver = Monitoring

Create a Deployment Manager deployment :

Fichier mydeploy.yml

resources:
- name: my-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: zones/us-central1-a/machineTypes/n1-standard-1
    metadata:
      items:
      - key: startup-script
        value: "apt-get update; apt-get install nginx-light -y"
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-9-stretch-v20201216
    networkInterfaces:
    - network: global/networks/default

Créer un déploiement : 

gcloud deployment-manager deployments create my-first-depl --config mydeploy.yaml

 

Mettre à jour un déploiement : 

gcloud deployment-manager deployments update my-first-depl --config mydeploy.yaml

 

Stackdriver :

Eteindre la machine virtuelle, définir Allow full access to all Cloud APIs dans le menu Édition de celle-ci en utilisant le Service account dropdown. Puis rallumer la machine. 

Installation des agents sur la machine :

curl -sSO https://dl.google.com/cloudagents/install-monitoring-agent.sh
sudo bash install-monitoring-agent.sh

curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sudo bash install-logging-agent.sh

Puis, dans le menu Monitoring, nous pouvons allez dans les metrics, les données du processeur sont automatiquement remontées.

 

Google Cloud Shell :

Cloud shell provides the following:

  • Temporary Compute Engine VM
  • Command-line access to the instance via a browser
  • 5 GB of persistent disk storage ($HOME dir)
  • Pre-installed Cloud SDK and other tools
  • gcloud: for working with Compute Engine and many Google Cloud services
  • gsutil: for working with Cloud Storage
  • kubectl: for working with Google Kubernetes Engine and Kubernetes
  • bq: for working with BigQuery
  • Language support for Java, Go, Python, Node.js, PHP, and Ruby
  • Web preview functionality
  • Built-in authorization for access to resources and instances

 

Créer un IAM Service Account :

Création de L'IAM service Account :
  • Se rendre dans AM & admin > Service accounts
  • Cliquer sur Create service account.
  • Lui donner un nom
  • Définir les autorisations voulues
  • Finaliser la création
  • Se rendre dans le menu "Key"
  • Faire Add key
  • Sélectionner une Key Json
  • Puis une clef sera automatiquement télécharger, vous la renommerez "credentials.json".
Utiliser le service accourt depuis un VM :
  • Se connecter en SSH à la VM
  • Uploader le fichier "credentials.json"
  • Puis réaliser la commande ci-dessous :
gcloud auth activate-service-account --key-file credentials.json

 

 

 

Cloud SQL :

image-1636809431476.png

image-1636809525878.png

Choisir Cloud SQL :

image-1636809604303.png

image-1636814946543.png

Décider quel mode d'interconnexion choisir : 

image-1636853654658.png

Shared VPC contre VPC peering :

image-1636853864919.png

Choisir un type de load balancing : 

image-1637010759048.png

image-1637010801367.png

 

Procéder à un déploiement automatique avec deployment-manager :

nano instance-template.jinja
resources:
- name: {{ env["name"] }}
  type: compute.v1.instance  
  properties:
     machineType: zones/{{ properties["zone"] }}/machineTypes/{{ properties["machineType"] }}
     zone: {{ properties["zone"] }}
     networkInterfaces:
      - network: {{ properties["network"] }}
        subnetwork: {{ properties["subnetwork"] }}
        accessConfigs:
        - name: External NAT
          type: ONE_TO_ONE_NAT
     disks:
      - deviceName: {{ env["name"] }}
        type: PERSISTENT
        boot: true
        autoDelete: true
        initializeParams:
          sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
nano config.yaml
    imports:
    - path: instance-template.jinja

    resources:
    # Create the auto-mode network
    - name: mynetwork
      type: compute.v1.network
      properties:
        autoCreateSubnetworks: true

    # Create the firewall rule
    - name: mynetwork-allow-http-ssh-rdp-icmp
      type: compute.v1.firewall
      properties:
        network: $(ref.mynetwork.selfLink)
        sourceRanges: ["0.0.0.0/0"]
        allowed:
        - IPProtocol: TCP
          ports: [22, 80, 3389]
        - IPProtocol: ICMP

     # Create the mynet-us-vm instance
    - name: mynet-us-vm
      type: instance-template.jinja
      properties:
        zone: us-central1-a
        machineType: n1-standard-1
        network: $(ref.mynetwork.selfLink)
        subnetwork: regions/us-central1/subnetworks/mynetwork

    # Create the mynet-eu-vm instance
    - name: mynet-eu-vm
      type: instance-template.jinja
      properties:
        zone: europe-west1-d
        machineType: n1-standard-1
        network: $(ref.mynetwork.selfLink)  
        subnetwork: regions/europe-west1/subnetworks/mynetwork

Préparation au déploiement : 

gcloud deployment-manager deployments create dminfra --config=config.yaml --preview

Déploiement : 

gcloud deployment-manager deployments update dminfra

Procéder à un déploiement automatique avec Terraform :

Création du dossier pour la configuration :

mkdir tfinfra ; cd tfinfra 

Définition du provider :

nano provider.tf
provider "google" {}

Définition du réseau à créer : 

nano mynetwork.tf
# Create the mynetwork network
resource "google_compute_network" "mynetwork" {
  name                    = "mynetwork"
  auto_create_subnetworks = true
}

# Add a firewall rule to allow HTTP, SSH, RDP, and ICMP traffic on mynetwork
resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" {
  name    = "mynetwork-allow-http-ssh-rdp-icmp"
  network = google_compute_network.mynetwork.self_link

  allow {
    protocol = "tcp"
    ports    = ["22", "80", "3389"]
  }
  allow {
    protocol = "icmp"
  }
  source_ranges = ["0.0.0.0/0"]
}

# Create the mynet-us-vm instance
module "mynet-us-vm" {
  source           = "./instance"
  instance_name    = "mynet-us-vm"
  instance_zone    = "us-central1-a"
  instance_network = google_compute_network.mynetwork.self_link
}

# Create the mynet-eu-vm" instance
module "mynet-eu-vm" {
  source           = "./instance"
  instance_name    = "mynet-eu-vm"
  instance_zone    = "europe-west1-d"
  instance_network = google_compute_network.mynetwork.self_link
}

Définition de l'instance à créer : 

nano instances/main.tf
variable "instance_name" {}
variable "instance_zone" {}
variable "instance_type" {
  default = "n1-standard-1"
  }
variable "instance_network" {}

resource "google_compute_instance" "vm_instance" {
  name         = "${var.instance_name}"
  zone         = "${var.instance_zone}"
  machine_type = "${var.instance_type}"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
      }
  }
  network_interface {
    network = "${var.instance_network}"
    access_config {
      # Allocate a one-to-one NAT IP to the instance
    }
  }
}
Initialisation de terraforma :
terraform init

Affichage du plan  :

terraform plan

Réaliser le déploiement :

terraform apply

 

Dataflow VS Dataproc :

image-1637018445589.png

 

image-1637936920146.png

 

image-1638011822473.png

image-1638011962382.png

image-1638011982306.png

image-1638013135528.png

image-1638015477252.png

 

image-1638016831388.png

 

image-1638031190770.png

 

image-1638068307453.png

 

image-1638101654058.png

 

image-1638101724955.png

 

image-1638101832535.png

 

image-1638102070955.png

 

image-1638102131442.png

 

image-1638102178204.png

image-1638102253582.png