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 depuis 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 à une 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 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 psc-network-attachment dans le VPC consommateur, ce qui entraînera la création de deux interfaces PSC en tant que backends de l'équilibreur de charge interne de niveau 4. Depuis le VPC du producteur, Tiger envoie un curl à Cosmo dans le 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. Pour en savoir plus, consultez la figure 1.
La même approche peut être appliquée aux 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
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 au consommateur à l'aide de l'équilibreur de charge 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
- 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 qu'il soit compatible avec le tutoriel
Ce tutoriel utilise des $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 du client
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 l'attachement 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 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 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 provenant 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 du NAT
Cloud NAT est utilisé dans le tutoriel concernant 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 que 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, listez l'association 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 le VPC 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, 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 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
Vérifier 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" & "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 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 du NAT
Cloud NAT est utilisé dans le tutoriel concernant 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 que 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 pour les producteurs
Dans le VPC 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.
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 depuis 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 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-attachmentI précédemment identifié dans la sortie 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'URL 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 multi-NIC
Vérifiez que l'interface PSC est configurée avec l'adresse IP appropriée. La vNIC0 utilisera le sous-réseau prod-subnet 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 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é 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 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 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 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 enregistrez le nom de l'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 utilisateur qui se connecte à votre interface Private Service Connect. 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
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 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 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 enregistrez le nom de l'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 utilisateur qui se connecte à votre interface Private Service Connect. 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 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 producteur) 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 du producteur-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. Valider la connectivité entre tiger et cosmo
Validation des boucles
Vérifions que l'instance de VM du producteur, tiger, peut communiquer avec l'instance du 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
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 validé la connectivité entre le VPC producteur et le VPC 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 vous avez validé la connectivité client et producteur via l'appairage de VPC.
Vous avez créé l'infrastructure de consommation et ajouté un rattachement réseau qui a permis au producteur de créer une VM multi-NIC pour établir un pont entre le consommateur et le 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 pense que les tutoriels sont géniaux !
Et ensuite ?
Découvrez quelques-uns de 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 aux services sur site via une mise en réseau hybride à l'aide de Private Service Connect et d'un équilibreur de charge proxy TCP interne
Autres ressources et vidéos
- Présentation de Private Service Connect
- Qu'est-ce que Private Service Connect ?
- Types d'équilibreurs de charge compatibles