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

1. Introduction

Une interface Private Service Connect est une ressource qui permet à un réseau VPC (Virtual Private Cloud) de producteur d'initier des connexions avec différentes destinations dans un réseau VPC consommateur. Les réseaux de producteurs et les réseaux de clients peuvent appartenir à différents projets et organisations.

Si un rattachement de réseau accepte une connexion depuis une interface Private Service Connect, Google Cloud attribue à l'interface une adresse IP 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, avec toutefois deux différences majeures :

  • Un rattachement de réseau permet à un réseau producteur d'établir des connexions avec un réseau consommateur (sortie de service géré), tandis qu'un point de terminaison permet à un réseau consommateur d'établir des connexions avec un réseau 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 psc-network-attachment dans le VPC consommateur, ce qui générera deux interfaces PSC en tant que backends de l'équilibreur de charge interne de couche 4. Depuis le VPC du producteur, Tiger enverra une requête cURL à Cosmo dans le backend-vpc. Dans le VPC du producteur, vous allez créer une route statique vers le trafic de destination 192.168.20.0/28, avec le prochain saut comme équilibreur de charge interne qui utilisera le backend et les interfaces PSC suivantes pour acheminer le trafic vers Cosmo. Pour obtenir une vue d'ensemble, consultez la figure 1.

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

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 backend
  • Établir une communication du producteur au consommateur à l'aide d'ILB comme prochain saut
  • Autoriser l'accès de la VM producteur (tiger) à la VM consommateur (cosmo) via l'appairage de VPC

Prérequis

2. Avant de commencer

Mettre à jour le projet pour prendre en charge le tutoriel

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

Dans Cloud Shell, procédez comme suit :

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

3. Configuration par le consommateur

Créer le VPC consommateur

Dans Cloud Shell, procédez comme suit :

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

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

Dans Cloud Shell, procédez comme suit :

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, procédez comme suit :

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

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

Dans Cloud Shell, procédez comme suit :

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 du 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 de Cloud Router et de NAT

Cloud NAT est utilisé dans le tutoriel pour l'installation de packages logiciels, car l'instance de VM ne dispose 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 permettre à IAP de 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 être accessible à l'aide d'IAP.
  • Autorise le trafic entrant à partir de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP qu'IAP utilise 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 consommateur

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 commande "describe" 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é utilisateur 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 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, listez le rattachement 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 de VPC entre le VPC consommateur et le VPC de backend

Vous allez créer une connexion d'appairage de VPC entre le VPC consommateur et le VPC de backend. Cela reproduit la façon dont Google établit la connectivité aux VPC des clients pour les services gérés, en plus de l'appairage inter-organisation pour la connectivité réseau. L'appairage de VPC doit être configuré à partir de chaque VPC.

Appairage de VPC entre le VPC du consommateur et le VPC de backend

Créer une connexion d'appairage de VPC entre le VPC consommateur et le VPC de backend

Dans Cloud Shell, procédez comme suit :

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 consommateur

Dans Cloud Shell, procédez comme suit :

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 à l'état "Actif" et "Connecté".

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 producteur

Dans Cloud Shell, procédez comme suit :

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 vNIC0 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 "tiger".

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 de Cloud Router et de NAT

Cloud NAT est utilisé dans le tutoriel pour l'installation de packages logiciels, car l'instance de VM ne dispose 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 permettre à IAP de 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 être accessible à l'aide d'IAP.
  • Autorise le trafic entrant à partir de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP qu'IAP utilise 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 de 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 pour les producteurs

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

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 à un réseau VPC (Virtual Private Cloud) de producteur d'initier des connexions avec différentes destinations dans un réseau VPC consommateur. Les réseaux de producteurs et les réseaux de clients peuvent appartenir à différents projets et organisations.

Si un rattachement de réseau accepte une connexion depuis une interface Private Service Connect, Google Cloud attribue à l'interface une adresse IP 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 réseau Private Service Connect qui servira de backend à l'équilibreur de charge interne.

Dans Cloud Shell, créez l'interface Private Service Connect (rabbit) et insérez l'URI psc-network-attachment précédemment identifié à partir de la sortie de 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 précédemment identifié à 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 multi-NIC

Vérifiez que l'interface PSC est configurée avec l'adresse IP appropriée. vNIC0 utilisera le sous-réseau de production du producteur (10.20.1.0/28) et vNIC1 utilisera le sous-réseau d'interface du 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 et ajouter un lapin et un renard à un groupe d'instances non géré

Dans la section suivante, vous allez créer un groupe d'instances non géré qui comprendra les 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 de l'état TCP, des services de backend, une règle de transfert et un pare-feu

Dans Cloud Shell, créez la vérification d'é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

Dans Cloud Shell, créez la règle de transfert.

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

Dans Cloud Shell, créez une règle de pare-feu pour activer les vérifications d'état des backends.

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 les tables IP Linux pour autoriser la communication du producteur avec les sous-réseaux du consommateur.

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 du système d'exploitation invité de votre interface Private Service Connect, qui est différent du nom de l'interface dans Google Cloud.

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

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

Recherchez l'adresse IP de la passerelle de votre interface PSC

Dans la liste des interfaces réseau, recherchez et stockez le nom de l'interface associée à 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 à la carte d'interface réseau virtuelle 1.

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

L'exemple produit la passerelle par défaut 192.168.10.1.

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 utilisateur qui se connecte à votre interface Private Service Connect. Cela garantit que le trafic destiné au réseau utilisateur 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 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 et 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 iptables

Dans Cloud Shell, validez les tables 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 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 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 les tables IP Linux pour autoriser la communication du producteur avec les sous-réseaux du consommateur.

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 du système d'exploitation 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, procédez comme suit :

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

Connectez-vous à la VM psc-interface, 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

Recherchez l'adresse IP de la passerelle de votre interface PSC

Dans la liste des interfaces réseau, recherchez et stockez le nom de l'interface associée à 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 à la carte d'interface réseau virtuelle 1.

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

L'exemple produit la passerelle par défaut 192.168.10.1.

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 utilisateur qui se connecte à votre interface Private Service Connect. Cela garantit que le trafic destiné au réseau utilisateur 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 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 et 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 iptables

Dans Cloud Shell, validez les tables 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 IP.

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

Dans Cloud Shell, validez les tables 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 le VPC du producteur, créez une route statique vers le sous-réseau des consommateurs 192.168.20.0/28, avec l'équilibreur de charge interne comme prochain saut. Une fois créé, tout paquet (dans le VPC du producteur) à destination de 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, procédez comme suit :

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 du VPC du producteur 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. Valider la connectivité entre Tiger et Cosmo

Validation Curl

Vérifions que l'instance de VM producteur, tiger, peut communiquer avec l'instance consommateur, cosmo, en effectuant une requête curl.

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

Dans Cloud Shell, procédez comme suit :

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

Effectuez une requête curl sur l'adresse IP de Cosmo identifiée précédemment dans le tutoriel à partir de l'instance Tiger.

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 validé la connectivité entre le VPC du producteur et le VPC du backend 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 validé la connectivité entre le consommateur et le producteur via l'appairage de VPC.

Vous avez créé l'infrastructure consommateur et ajouté un rattachement de réseau qui a permis au producteur de créer une VM multi-NIC pour faire le pont entre les communications consommateur et producteur. Vous avez appris comment l'interface PSC peut être utilisée pour communiquer avec des services propriétaires/tiers via l'appairage de réseaux VPC en utilisant un équilibreur de charge interne et une route statique dans le VPC du producteur.

Cosmopup pense que les tutoriels sont géniaux !!

e6d3675ca7c6911f.jpeg

Et ensuite ?

Consultez ces tutoriels :

Lectures et vidéos complémentaires

Documents de référence