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

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
- Projet Google Cloud
- Autorisations IAM
- Administrateur de réseaux Compute (roles/compute.networkAdmin)
- Administrateur d'instances Compute (roles/compute.instanceAdmin)
- Administrateur de sécurité de Compute (roles/compute.securityAdmin)
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 !!

Et ensuite ?
Consultez ces tutoriels :
- Publier et consommer des services avec GKE à l'aide de Private Service Connect
- Publier et consommer des services à l'aide de Private Service Connect
- Se connecter à des services sur site via la mise en réseau hybride à l'aide de Private Service Connect et d'un équilibreur de charge proxy TCP interne
Lectures et vidéos complémentaires
- Présentation de Private Service Connect
- Qu'est-ce que Private Service Connect ?
- Types d'équilibreur de charge compatibles