Services gérés de l'interface Private Service Connect

1. Introduction

Une interface Private Service Connect est une ressource qui permet au réseau cloud privé virtuel (VPC) d'un producteur d'établir des connexions vers différentes destinations dans un réseau VPC client. Les réseaux de producteurs et les réseaux utilisateurs peuvent appartenir à différents projets et organisations.

Si un rattachement de réseau accepte une connexion provenant d'une interface Private Service Connect, Google Cloud attribue à l'interface une adresse IP provenant d'un sous-réseau client spécifié par le rattachement de réseau. Les réseaux utilisateur et producteur sont connectés et peuvent communiquer à l'aide d'adresses IP internes.

Une connexion entre un rattachement de réseau et une interface Private Service Connect est semblable à la connexion entre un point de terminaison Private Service Connect et un rattachement de service, mais présente deux différences majeures:

  • Un rattachement de réseau permet à un réseau de producteur d'établir des connexions avec un réseau de client (sortie de service géré), tandis qu'un point de terminaison permet à un réseau de consommateur d'établir des connexions avec un réseau de producteur (entrée de service géré).
  • Une connexion d'interface Private Service Connect est transitive. Cela signifie qu'un réseau de producteur peut communiquer avec d'autres réseaux connectés au réseau du client.

Ce que vous allez faire

Vous allez créer un seul rattachement psc-network-attachment dans le VPC du client, ce qui aura pour effet de créer deux interfaces PSC en tant que backends pour l'équilibreur de charge interne L4. Le tigre du VPC producteur enverra une requête curl à Cosmo dans le VPC backend-vpc. Dans le VPC du producteur, vous allez créer une route statique vers le prochain saut 192.168.20.0/28 du trafic de destination en tant qu'équilibreur de charge interne, qui utilisera le backend et les interfaces PSC ultérieures pour acheminer le trafic vers le cosmo. Voir Figure 1 pour une présentation.

La même approche peut être utilisée avec les services gérés par Google qui sont appairés au VPC du client lorsque vous utilisez l'accès aux services privés.

Figure 1

36dbc7f825a21cbd.png

Points abordés

  • Créer un rattachement de réseau
  • Comment un producteur peut utiliser un rattachement de réseau pour créer une interface PSC en tant que backends
  • Établir la communication du producteur vers le consommateur en utilisant l'ILB comme prochain saut
  • Comment autoriser l'accès de la VM du producteur (tigre) à la VM du consommateur (cosmo) via l'appairage de VPC

Prérequis

2. Avant de commencer

Mettre à jour le projet pour qu'il soit compatible avec le tutoriel

Ce tutoriel utilise $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. Configuration client

Créer le VPC consommateur

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

Créer le sous-réseau du rattachement de réseau Private Service Connect

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1

Créer le VPC de backend

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks create backend-vpc --project=$projectid --subnet-mode=custom

Créer les sous-réseaux VPC de backend

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks subnets create cosmo-subnet-1 --project=$projectid --range=192.168.20.0/28 --network=backend-vpc --region=us-central1

Créer les règles de pare-feu backend-vpc

Dans Cloud Shell, créez une règle d'entrée pour le trafic depuis le sous-réseau psc-network-attachment vers Cosmo.

gcloud compute firewall-rules create allow-ingress-to-cosmo \
    --network=backend-vpc \
    --action=ALLOW \
    --rules=ALL \
    --direction=INGRESS \
    --priority=1000 \
    --source-ranges="192.168.10.0/28" \
    --destination-ranges="192.168.20.0/28" \
    --enable-logging

Configuration Cloud Router et NAT

Cloud NAT est utilisé dans le tutoriel sur l'installation de packages logiciels, car l'instance de VM ne possède pas d'adresse IP publique. Cloud NAT permet aux VM disposant d'adresses IP privées d'accéder à Internet.

Dans Cloud Shell, créez le routeur cloud.

gcloud compute routers create cloud-router-for-nat --network backend-vpc --region us-central1

Dans Cloud Shell, créez la passerelle NAT.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

4. Activer IAP

Pour autoriser IAP à se connecter à vos instances de VM, créez une règle de pare-feu qui:

  • S'applique à toutes les instances de VM auxquelles vous souhaitez rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP pour le transfert TCP.

Dans Cloud Shell, créez la règle de pare-feu IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network backend-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

5. Créer des instances de VM consommatrices

Dans Cloud Shell, créez l'instance de VM consommateur "cosmo".

gcloud compute instances create cosmo \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=cosmo-subnet-1 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to cosmo's backend server !!' | tee /var/www/html/index.html
      EOF"

Obtenez et stockez les adresses IP des instances:

Dans Cloud Shell, exécutez une description sur les instances de VM cosmo.

gcloud compute instances describe cosmo --zone=us-central1-a | grep  networkIP:

6. Rattachement de réseau Private Service Connect

Les rattachements de réseau sont des ressources régionales qui représentent le côté consommateur d'une interface Private Service Connect. Vous associez un seul sous-réseau à un rattachement de réseau, et le producteur attribue des adresses IP à l'interface Private Service Connect à partir de ce sous-réseau. Le sous-réseau doit se trouver dans la même région que le rattachement de réseau. Un rattachement de réseau doit se trouver dans la même région que le service producteur.

Créer le rattachement de réseau

Dans Cloud Shell, créez le rattachement de réseau.

gcloud compute network-attachments create psc-network-attachment \
    --region=us-central1 \
    --connection-preference=ACCEPT_MANUAL \
    --producer-accept-list=$projectid \
    --subnets=intf-subnet

Lister les rattachements de réseau

Dans Cloud Shell, affichez la liste du rattachement de réseau.

gcloud compute network-attachments list

Décrire les rattachements de réseau

Dans Cloud Shell, décrivez le rattachement de réseau.

gcloud compute network-attachments describe psc-network-attachment --region=us-central1

Notez l'URI psc-network-attachment qui sera utilisé par le producteur lors de la création des interfaces Private Service Connect. En voici un exemple :

user$ gcloud compute network-attachments describe psc-network-attachment --region=us-central1
connectionPreference: ACCEPT_MANUAL
creationTimestamp: '2023-06-07T11:27:33.116-07:00'
fingerprint: 8SDsvG6TfYQ=
id: '5014253525248340730'
kind: compute#networkAttachment
name: psc-network-attachment
network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc
producerAcceptLists:
- $projectid
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment
subnetworks:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/intf-subnet

7. Établir un appairage VPC entre le VPC consommateur et de backend

Vous allez créer une connexion d'appairage de VPC entre le VPC consommateur et le VPC de backend. Cette approche reproduit la manière dont Google établit la connectivité aux VPC des clients pour les services gérés, en plus de l'appairage entre organisations pour la connectivité réseau. L'appairage de VPC doit être configuré à partir de chaque VPC.

Appairage du VPC du client au VPC de backend

Créer une connexion d'appairage de VPC du client au VPC de backend

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks peerings create consumer-to-backend-vpc \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=backend-vpc \
    --stack-type=IPV4_ONLY

Créer une connexion d'appairage de VPC du backend au VPC du client

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks peerings create backend-to-consumer-vpc \
    --network=backend-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc \
    --stack-type=IPV4_ONLY

Valider les détails de l'état de l'appairage de VPC

Dans Cloud Shell, vérifiez que l'appairage de VPC est dans l'état "Actif" et "Connecté" de l'état.

gcloud compute networks peerings list

Exemple :

user@cloudshell$ gcloud compute networks peerings list
NAME: backend-to-consumer-vpc
NETWORK: backend-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: consumer-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU: 
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.

NAME: consumer-to-backend-vpc
NETWORK: consumer-vpc
PEER_PROJECT: $projectid
PEER_NETWORK: backend-vpc
STACK_TYPE: IPV4_ONLY
PEER_MTU: 
IMPORT_CUSTOM_ROUTES: False
EXPORT_CUSTOM_ROUTES: False
STATE: ACTIVE
STATE_DETAILS: [2023-06-07T11:42:27.634-07:00]: Connected.

8. Configuration du producteur

Créer le VPC de producteur

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud compute networks create producer-vpc --project=$projectid --subnet-mode=custom

Créer les sous-réseaux du producteur

Dans Cloud Shell, créez le sous-réseau utilisé pour la vNIC0 de la ou des interfaces psc.

gcloud compute networks subnets create prod-subnet --project=$projectid --range=10.20.1.0/28 --network=producer-vpc --region=us-central1

Dans Cloud Shell, créez le sous-réseau utilisé pour l'instance "tigre".

gcloud compute networks subnets create prod-subnet-2 --project=$projectid --range=10.30.1.0/28 --network=producer-vpc --region=us-central1

Dans Cloud Shell, créez le sous-réseau utilisé pour l'équilibreur de charge interne.

gcloud compute networks subnets create prod-subnet-3 --project=$projectid --range=172.16.10.0/28 --network=producer-vpc --region=us-central1

Configuration Cloud Router et NAT

Cloud NAT est utilisé dans le tutoriel sur l'installation de packages logiciels, car l'instance de VM ne possède pas d'adresse IP publique. Cloud NAT permet aux VM disposant d'adresses IP privées d'accéder à Internet.

Dans Cloud Shell, créez le routeur cloud.

gcloud compute routers create cloud-router-for-nat-producer --network producer-vpc --region us-central1

Dans Cloud Shell, créez la passerelle NAT.

gcloud compute routers nats create cloud-nat-us-central1-producer --router=cloud-router-for-nat-producer --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

Activer IAP

Pour autoriser IAP à se connecter à vos instances de VM, créez une règle de pare-feu qui:

  • S'applique à toutes les instances de VM auxquelles vous souhaitez rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP pour le transfert TCP.

Dans Cloud Shell, créez la règle de pare-feu IAP.

gcloud compute firewall-rules create ssh-iap-producer \
    --network producer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Créer des instances de VM producteur

Dans Cloud Shell, créez l'instance de VM consommateur, "tiger"

gcloud compute instances create tiger \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=prod-subnet-2 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump"

9. Créer des règles de pare-feu de producteur

Dans le VPC du producteur, créez une règle de pare-feu d'entrée qui autorise la communication de "prod-subnet-2" vers toutes les instances du VPC "producteur-vpc".

Dans Cloud Shell, créez la règle de pare-feu du producteur.

gcloud compute --project=$projectid firewall-rules create allow-tiger-ingress --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=10.30.1.0/28 --enable-logging

10. Créer l'interface Private Service Connect

Une interface Private Service Connect est une ressource qui permet au réseau cloud privé virtuel (VPC) d'un producteur d'établir des connexions vers différentes destinations dans un réseau VPC client. Les réseaux de producteurs et les réseaux utilisateurs peuvent appartenir à différents projets et organisations.

Si un rattachement de réseau accepte une connexion provenant d'une interface Private Service Connect, Google Cloud attribue à l'interface une adresse IP provenant d'un sous-réseau client spécifié par le rattachement de réseau. Les réseaux utilisateur et producteur sont connectés et peuvent communiquer à l'aide d'adresses IP internes.

Dans ce tutoriel, vous allez créer deux instances avec le rattachement de réseau Private Service Connect qui servira de backend à l'équilibreur de charge interne.

Dans Cloud Shell, créez l'interface Private Service Connect (lapin) et insérez l'URL psc-network-attachment UR précédemment identifiée à partir du résultat de la description du rattachement de réseau.

gcloud compute instances create rabbit --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart"

Dans Cloud Shell, créez l'interface Private Service Connect (fox) et insérez l'URI psc-network-attachment UR précédemment identifiée à partir de la sortie de description du rattachement de réseau.

gcloud compute instances create fox --zone us-central1-a --machine-type=f1-micro --can-ip-forward --network-interface subnet=prod-subnet,network=producer-vpc,no-address --network-interface network-attachment=https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/networkAttachments/psc-network-attachment --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump
      sudo apt-get install apache2 -y
      sudo service apache2 restart"

Validation à plusieurs cartes d'interface réseau

Vérifiez que l'interface PSC est configurée avec l'adresse IP appropriée. La vNIC0 utilisera le sous-réseau prod-subnet du producteur (10.20.1.0/28) et la vNIC1 utilisera le sous-réseau intf-subnet consommateur (192.168.10.0/28).

gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:

gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:

Exemple :

user$ gcloud compute instances describe rabbit --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.2
  networkIP: 192.168.10.2

user$ gcloud compute instances describe fox --zone=us-central1-a | grep networkIP:
  networkIP: 10.20.1.3
  networkIP: 192.168.10.3

11. Créer un groupe d'instances non géré et l'ajouter à un groupe d'instances non géré

Dans la section suivante, vous allez créer un groupe d'instances non géré composé des instances d'interface PSC rabbit et fox.

Dans Cloud Shell, créez le groupe d'instances non géré.

gcloud compute instance-groups unmanaged create psc-interface-instances-ig --project=$projectid --zone=us-central1-a

Dans Cloud Shell, ajoutez les instances "fox" et "rabbit" au groupe d'instances.

gcloud compute instance-groups unmanaged add-instances psc-interface-instances-ig --project=$projectid --zone=us-central1-a --instances=fox,rabbit

12. Créer une vérification d'état TCP, des services de backend, une règle de transfert et pare-feu

Dans Cloud Shell, créez la vérification de l'état du backend.

gcloud compute health-checks create http hc-http-80 --port=80

Dans Cloud Shell, créez le service de backend.

gcloud compute backend-services create psc-interface-backend --load-balancing-scheme=internal --protocol=tcp --region=us-central1 --health-checks=hc-http-80
gcloud compute backend-services add-backend psc-interface-backend --region=us-central1 --instance-group=psc-interface-instances-ig --instance-group-zone=us-central1-a

Créer la règle de transfert dans Cloud Shell

gcloud compute forwarding-rules create psc-ilb --region=us-central1 --load-balancing-scheme=internal --network=producer-vpc --subnet=prod-subnet-3 --address=172.16.10.10 --ip-protocol=TCP --ports=all --backend-service=psc-interface-backend --backend-service-region=us-central1

Depuis Cloud Shell, créez une règle de pare-feu pour activer les vérifications de l'état du backend.

gcloud compute firewall-rules create ilb-health-checks --allow tcp:80,tcp:443 --network producer-vpc --source-ranges 130.211.0.0/22,35.191.0.0/16 

13. Créer des tables d'adresses IP Linux pour les interfaces PSC - rabbit

À partir de l'instance d'interface PSC, configurez des tables d'adresses IP Linux pour permettre la communication entre le producteur et les sous-réseaux du client.

Rechercher le nom du système d'exploitation invité de votre interface Private Service Connect

Pour configurer le routage, vous devez connaître le nom de l'OS invité de votre interface Private Service Connect, qui est différent du nom de l'interface dans Google Cloud.

Dans Cloud Shell, connectez-vous à la VM psc-interface, Rabbit, à l'aide d'IAP.

gcloud compute ssh rabbit --project=$projectid --zone=us-central1-a --tunnel-through-iap

Dans Cloud Shell, obtenez l'adresse IP de l'instance psc-interface.

ip a

Exemple :

user@rabbit:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.2/32 brd 10.20.1.2 scope global dynamic ens4
       valid_lft 59396sec preferred_lft 59396sec
    inet6 fe80::4001:aff:fe14:102/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.2/32 brd 192.168.10.2 scope global dynamic ens5
       valid_lft 66782sec preferred_lft 66782sec
    inet6 fe80::4001:c0ff:fea8:a02/64 scope link 
       valid_lft forever preferred_lft forever

Trouver l'adresse IP de passerelle de votre interface PSC

Dans la liste des interfaces réseau, recherchez et enregistrez le nom d'interface associé à l'adresse IP de votre interface Private Service Connect, par exemple ens5 (vNIC1).

Pour configurer le routage, vous devez connaître l'adresse IP de la passerelle par défaut de votre interface Private Service Connect

Dans Cloud Shell, nous utiliserons 1, car l'interface PSC est associée à vNIC1.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

L'exemple génère la gw 192.168.10.1 par défaut

user@rabbit:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

Ajouter des routes pour les sous-réseaux utilisateur

Vous devez ajouter une route à la passerelle par défaut de votre interface Private Service Connect pour chaque sous-réseau client qui se connecte à cette interface. Cela garantit que le trafic lié au réseau du consommateur sort de l'interface Private Service Connect.

Valider la table de routage

Dans Cloud Shell, validez les routes actuelles.

ip route show

Example.

user@rabbit:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 

Dans Cloud Shell, ajoutez la route vers le sous-réseau "cosmo-subnet-1".

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

Valider la table de routage

Dans Cloud Shell, validez les routes ajoutées mises à jour.

ip route show

Example.

user@rabbit:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5 

Créer des règles pour les tables d'adresses IP

Dans Cloud Shell, validez les tables d'adresses IP actuelles.

sudo iptables -t nat -L -n -v

Exemple :

user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination  

Mettre à jour les tables d'adresses IP dans Cloud Shell

sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1

Dans Cloud Shell, validez les tables d'adresses IP mises à jour.

sudo iptables -t nat -L -n -v

Exemple :

user@rabbit:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens5    0.0.0.0/0            0.0.0.0/0

14. Créer des tables d'adresses IP Linux pour les interfaces PSC(fox)

À partir de l'instance d'interface PSC, configurez des tables d'adresses IP Linux pour permettre la communication entre le producteur et les sous-réseaux du client.

Rechercher le nom du système d'exploitation invité de votre interface Private Service Connect

Pour configurer le routage, vous devez connaître le nom de l'OS invité de votre interface Private Service Connect, qui est différent du nom de l'interface dans Google Cloud.

Ouvrez un nouvel onglet Cloud Shell et mettez à jour les paramètres de votre projet.

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Connectez-vous à la VM psc-interface de Fox à l'aide d'IAP dans Cloud Shell.

gcloud compute ssh fox --project=$projectid --zone=us-central1-a --tunnel-through-iap

Dans Cloud Shell, obtenez l'adresse IP de l'instance psc-interface.

ip a

Exemple :

user@fox:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:0a:14:01:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.20.1.3/32 brd 10.20.1.3 scope global dynamic ens4
       valid_lft 65601sec preferred_lft 65601sec
    inet6 fe80::4001:aff:fe14:103/64 scope link 
       valid_lft forever preferred_lft forever
3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:03 brd ff:ff:ff:ff:ff:ff
    altname enp0s5
    inet 192.168.10.3/32 brd 192.168.10.3 scope global dynamic ens5
       valid_lft 63910sec preferred_lft 63910sec
    inet6 fe80::4001:c0ff:fea8:a03/64 scope link 
       valid_lft forever preferred_lft forever

Trouver l'adresse IP de passerelle de votre interface PSC

Dans la liste des interfaces réseau, recherchez et enregistrez le nom d'interface associé à l'adresse IP de votre interface Private Service Connect, par exemple ens5 (vNIC1).

Pour configurer le routage, vous devez connaître l'adresse IP de la passerelle par défaut de votre interface Private Service Connect

Dans Cloud Shell, nous utiliserons 1, car l'interface PSC est associée à vNIC1.

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo

L'exemple génère la gw 192.168.10.1 par défaut

user@fox:~$ curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google" && echo
192.168.10.1

Ajouter des routes pour les sous-réseaux utilisateur

Vous devez ajouter une route à la passerelle par défaut de votre interface Private Service Connect pour chaque sous-réseau client qui se connecte à cette interface. Cela garantit que le trafic lié au réseau du consommateur sort de l'interface Private Service Connect.

Valider la table de routage

Dans Cloud Shell, validez les routes actuelles.

ip route show

Example.

user@fox:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 

Dans Cloud Shell, ajoutez la route vers le sous-réseau "cosmo-subnet-1".

sudo ip route add 192.168.20.0/28 via 192.168.10.1 dev ens5

Valider la table de routage

Dans Cloud Shell, validez les routes ajoutées mises à jour.

ip route show

Example.

user@fox:~$ ip route show
default via 10.20.1.1 dev ens4 
10.20.1.0/28 via 10.20.1.1 dev ens4 
10.20.1.1 dev ens4 scope link 
192.168.10.0/28 via 192.168.10.1 dev ens5 
192.168.10.1 dev ens5 scope link 
192.168.20.0/28 via 192.168.10.1 dev ens5

Créer des règles pour les tables d'adresses IP

Dans Cloud Shell, validez les tables d'adresses IP actuelles.

sudo iptables -t nat -L -n -v

Exemple :

user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Dans Cloud Shell, mettez à jour les tables d'adresses IP.

sudo iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1

Dans Cloud Shell, validez les tables d'adresses IP mises à jour.

sudo iptables -t nat -L -n -v

Exemple :

user@fox:~$ sudo iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      ens5    0.0.0.0/0            0.0.0.0/0  

15. Mettre à jour la table de routage

Dans "producteur-vpc", créez une route statique vers le sous-réseau du client 192.168.20.0/28, en tant qu'équilibreur de charge interne. Une fois créé, tout paquet (dans le VPC "producer-vpc") vers la destination 192.168.20.0/28 sera dirigé vers l'équilibreur de charge interne.

Ouvrez un nouvel onglet Cloud Shell et mettez à jour les paramètres de votre projet.

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Dans Cloud Shell, mettez à jour la table de routage "producer-vpc" avec une route statique.

gcloud beta compute routes create producer-to-cosmo-subnet-1 --project=$projectid --network=producer-vpc --priority=1000 --destination-range=192.168.20.0/28 --next-hop-ilb=psc-ilb --next-hop-ilb-region=us-central1

16. Validez la connectivité entre le tigre et le cosmo

Validation des boucles

Vérifions que l'instance de VM du producteur, tiger, peut communiquer avec l'instance consommateur cosmo en exécutant une commande curl.

Ouvrez un nouvel onglet Cloud Shell et mettez à jour les paramètres de votre projet.

Dans Cloud Shell, effectuez les opérations suivantes:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Connectez-vous à l'instance "tiger" à l'aide d'IAP dans Cloud Shell.

gcloud compute ssh tiger --project=$projectid --zone=us-central1-a --tunnel-through-iap

Exécutez une commande curl sur l'adresse IP de Cosmo identifiée plus tôt dans le tutoriel à partir de l'instance de tigre.

curl -v <cosmo's IP Address>

Exemple :

user@tiger:~$ curl -v 192.168.20.2
*   Trying 192.168.20.2:80...
* Connected to 192.168.20.2 (192.168.20.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 192.168.20.2
> User-Agent: curl/7.74.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 09 Jun 2023 03:49:42 GMT
< Server: Apache/2.4.56 (Debian)
< Last-Modified: Fri, 09 Jun 2023 03:28:37 GMT
< ETag: "27-5fda9f6ea060e"
< Accept-Ranges: bytes
< Content-Length: 39
< Content-Type: text/html
< 
Welcome to cosmo's backend server !!

Félicitations ! Vous avez réussi à valider la connectivité du VPC producteur-vpc à backend-vpc en exécutant une commande curl.

17. Effectuer un nettoyage

Dans Cloud Shell, supprimez les composants du tutoriel.

gcloud compute instances delete cosmo --zone=us-central1-a --quiet

gcloud compute instances delete rabbit --zone=us-central1-a --quiet

gcloud compute instances delete fox --zone=us-central1-a --quiet

gcloud compute instances delete tiger --zone=us-central1-a --quiet

gcloud compute network-attachments delete psc-network-attachment --region=us-central1 --quiet

gcloud compute firewall-rules delete allow-ingress-to-cosmo allow-tiger-ingress ilb-health-checks ssh-iap-consumer   ssh-iap-producer --quiet

gcloud beta compute routes delete producer-to-cosmo-subnet-1 --quiet 

gcloud compute forwarding-rules delete psc-ilb --region=us-central1 --quiet
gcloud compute backend-services delete psc-interface-backend --region=us-central1 --quiet
gcloud compute instance-groups unmanaged delete psc-interface-instances-ig --zone=us-central1-a --quiet
gcloud compute health-checks delete hc-http-80 --quiet
gcloud compute networks subnets delete cosmo-subnet-1 prod-subnet prod-subnet-2 prod-subnet-3 intf-subnet --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet

gcloud compute routers delete cloud-router-for-nat-producer --region=us-central1 --quiet

gcloud compute networks delete consumer-vpc --quiet

gcloud compute networks delete producer-vpc --quiet

gcloud compute networks delete backend-vpc --quiet

18. Félicitations

Félicitations ! Vous avez configuré et validé une interface Private Service Connect, et vous avez validé la connectivité client et producteur via l'appairage de VPC.

Vous avez créé l'infrastructure consommateur et ajouté un rattachement de réseau permettant au producteur de créer une VM dotée de plusieurs cartes d'interface réseau pour relier les communications du client et du producteur. Vous avez découvert comment utiliser l'interface PSC pour communiquer avec des services propriétaires/tiers via l'appairage de VPC, à l'aide d'un équilibreur de charge interne et d'une route statique dans le VPC du producteur.

Cosmopup trouve les tutoriels géniaux !

e6d3675ca7c6911f.jpeg

Et ensuite ?

Découvrez quelques-uns de ces tutoriels...

Complément d'informations et Vidéos

Documents de référence