NEG hybride Looker PSC Southbound vers sur site

1. Introduction

Dans cet atelier de programmation, vous allez établir une connexion vers le sud à une base de données PostgreSQL sur site via un VPN H à l'aide d'un équilibreur de charge proxy TCP interne et d'un groupe de points de terminaison réseau hybride appelé à partir de Looker PSC en tant que consommateur de services.

Private Service Connect est une fonctionnalité de mise en réseau de Google Cloud qui permet aux clients d'accéder à des services gérés en mode privé depuis leur réseau VPC. De même, il permet aux producteurs de services gérés d'héberger ces services dans leurs propres réseaux VPC séparés et de proposer une connexion privée à leurs clients. Par exemple, lorsque vous utilisez Private Service Connect pour accéder à Looker, vous êtes le client du service et Google est le producteur de services, comme illustré dans la figure 1.

Figure 1.

145ea4672c3a3b14.png

L'accès vers le sud, également appelé PSC inverse, permet au client de créer un service publié en tant que producteur pour autoriser Looker à accéder aux points de terminaison sur site, dans un VPC, aux services gérés et à l'hybride. Les connexions vers le sud peuvent être déployées dans n'importe quelle région, quel que soit l'emplacement du PSC Looker, comme illustré dans la figure 2.

Figure 2.

259493afd914f68b.png

Points abordés

  • Configuration réseau requise
  • Créer un service producteur Private Service Connect
  • Créer un point de terminaison Private Service Connect dans Looker
  • Établir la connectivité à la base de données Postgres sur site à partir de Looker à l'aide d'une connexion de test

Prérequis

def88091b42bfe4d.png

2. Ce que vous allez faire

Vous allez établir un réseau de producteur, looker-psc-demo, pour déployer un équilibreur de charge proxy TCP interne et un NEG hybride publié en tant que service via Private Service Connect (PSC). Pour illustrer une base de données sur site, vous allez déployer un VPC on-prem-demo connecté au VPC looker-psc-demo à l'aide d'un VPN haute disponibilité.

Pour valider l'accès au service Producer, procédez comme suit:

  • Créer un point de terminaison PSC dans Looker associé au rattachement de service du producteur
  • Utiliser la console Looker pour valider la connexion à la base de données Postgres sur site

3. Configuration réseau requise

Vous trouverez ci-dessous le détail des exigences réseau pour le réseau producteur. Le consommateur dans cet atelier de programmation est l'instance PSC Looker.

Composants

Description

VPC (looker-psc-demo)

VPC en mode personnalisé

VPC (on-prem-demo)

VPC en mode personnalisé

Sous-réseau NAT du PSC

Les paquets du réseau VPC du client sont traduits à l'aide de la traduction NAT source (SNAT) afin que leurs adresses IP sources d'origine soient converties en adresses IP sources du sous-réseau NAT du réseau VPC du producteur.

Sous-réseau de la règle de transfert PSC

Permet d'allouer une adresse IP à l'équilibreur de charge proxy TCP interne régional.

Sous-réseau PSC NEG

Permet d'allouer une adresse IP au groupe de points de terminaison du réseau.

Sous-réseau proxy réservé

Une adresse IP interne est attribuée à chacun des proxys de l'équilibreur de charge. Les paquets envoyés depuis un proxy vers une VM ou un point de terminaison de backend possèdent une adresse IP source provenant du sous-réseau proxy réservé.

NEG hybride

Les services sur site et sur d'autres cloud sont traités comme n'importe quel autre backend du service Cloud Load Balancing. La principale différence est que vous utilisez un NEG de connectivité hybride pour configurer les points de terminaison de ces backends. Les points de terminaison doivent être des combinaisons d'adresses IP et de ports valides que votre équilibreur de charge peut atteindre à l'aide de produits de connectivité hybrides, tels que Cloud VPN ou Cloud Interconnect.

Service de backend

Un service de backend sert de pont entre votre équilibreur de charge et vos ressources de backend. Dans l'atelier, le service de backend est associé au NEG hybride.

Cloud Router

  • Cloud NAT s'appuie sur les routeurs Cloud pour les fonctionnalités de plan de contrôle, mais pas pour la gestion des sessions BGP.
  • Le routeur cloud est utilisé pour le protocole BGP établi pour l'établissement du VPN haute disponibilité entre les VPC psc-looker-demo et on-prem-demo.

VPN haute disponibilité

VPN haute disponibilité entre réseaux VPC Google Cloud. Dans cette topologie, vous pouvez connecter deux réseaux VPC Google Cloud à l'aide d'une passerelle VPN haute disponibilité dans chaque réseau. Les réseaux VPC peuvent se trouver dans la même région ou dans plusieurs régions.

Cloud NAT

Utilisé par le VPC on-prem-demo pour la sortie Internet

4. Topologie de l'atelier de programmation

79aeb28b38f237da.png

5. Préparation

Configuration de l'environnement au rythme de chacun

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. Si vous n'avez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
  • L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet.
  • Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.

Démarrer Cloud Shell

Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.

Dans la console Google Cloud, cliquez sur l'icône Cloud Shell dans la barre d'outils supérieure :

55efc1aaa7a4d3ad.png

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

7ffe5cbb04455448.png

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez effectuer toutes les tâches de cet atelier de programmation dans un navigateur. Vous n'avez rien à installer.

6. Avant de commencer

Activer les API

Dans Cloud Shell, assurez-vous que l'ID de votre projet est configuré:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Activez tous les services nécessaires :

gcloud services enable compute.googleapis.com

7. Créer un réseau VPC de producteur

Réseau VPC

Dans Cloud Shell, procédez comme suit:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Créer des sous-réseaux

Le sous-réseau PSC sera associé au rattachement de service PSC à des fins de traduction d'adresse réseau.

Dans Cloud Shell, créez le sous-réseau NAT du PSC:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

Dans Cloud Shell, créez le sous-réseau de la règle de transfert du producteur:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Dans Cloud Shell, créez le sous-réseau proxy réservé régional du producteur:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Réserver l'adresse IP de l'équilibreur de charge

Dans Cloud Shell, réservez une adresse IP interne pour l'équilibreur de charge:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

Dans Cloud Shell, affichez l'adresse IP réservée.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Exemple de résultat :

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Configurer le NEG hybride

Créez un NEG hybride et définissez le paramètre –network-endpoint-type sur NON_GCP_PRIVATE_IP_PORT.

Dans Cloud Shell, créez un NEG hybride permettant d'accéder à la base de données sur site:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

Dans Cloud Shell, mettez à jour le NEG hybride avec l'adresse IP:Port de la base de données sur site (192.168.10.4 et port 5432), générée à une étape ultérieure du tutoriel:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Créer une vérification d'état régionale

Dans Cloud Shell, créez une vérification de l'état qui sonde le port de la base de données sur site, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Créer une stratégie de pare-feu réseau et des règles de pare-feu

Dans Cloud Shell, procédez comme suit:

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

La règle de pare-feu suivante autorise le trafic provenant de la plage de sous-réseaux NAT du PSC vers toutes les instances du réseau.

Dans Cloud Shell, procédez comme suit:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Créer un service producteur

Créer des composants d'équilibreur de charge

Dans Cloud Shell, créez un service de backend :

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

Dans Cloud Shell, ajoutez le backend de NEG hybride au service de backend:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

Dans Cloud Shell, créez un proxy TCP cible pour acheminer les requêtes vers votre service de backend:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

Dans la syntaxe suivante, créez une règle de transfert (équilibreur de charge proxy TCP interne).

Dans Cloud Shell, procédez comme suit:

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Créer un Rattachement de service

Dans Cloud Shell, créez l'attachement de service onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Ensuite, obtenez et notez le rattachement de service listé dans l'URI selfLink commençant par "projects" pour configurer le point de terminaison PSC dans Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

Dans Cloud Shell, procédez comme suit:

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Exemple de résultat attendu:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

Dans Cloud Console, accédez à:

Services réseau → Private Service Connect → Services publiés

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Établir une connexion à un point de terminaison PSC dans Looker

Dans la section suivante, vous allez associer le rattachement de service des producteurs au PSC Looker Core à l'aide des indicateurs –psc-service-attachment dans Cloud Shell pour un seul domaine.

Dans Cloud Shell, créez l'association psc en mettant à jour les paramètres suivants pour qu'ils correspondent à votre environnement:

  • INSTANCE_NAME: nom de votre instance Looker (Google Cloud Core).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: URI capturé lors de la création du rattachement de service, onpremdatabase1-svc-attachment
  • REGION: région dans laquelle votre instance Looker (Google Cloud Core) est hébergée.

Dans Cloud Shell, procédez comme suit:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Exemple :

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

Dans Cloud Shell, vérifiez que le statut de connexion des serviceAttachments est "ACCEPTED" (ACCEPTÉ), puis remplacez-le par le nom de votre instance PSC Looker:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Exemple :

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Exemple :

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Valider le point de terminaison PSC dans la console Cloud

Dans Cloud Console, vous pouvez valider la connexion PSC.

Dans Cloud Console, accédez à:

Looker → Instance Looker → Détails

2d4684d722d31e4b.png

993cdaf748f4c030.png

Créer le réseau VPC sur site

Réseau VPC

Dans Cloud Shell, procédez comme suit:

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Créer le sous-réseau de la base de données PostgreSQL

Dans Cloud Shell, procédez comme suit:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

Dans Cloud Shell, réservez une adresse IPv4 interne, utilisée pour onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Créer le routeur Cloud pour le VPC on-prem-demo

Cloud NAT est utilisé dans le tutoriel pour l'installation du paquet logiciel, car l'instance de VM ne dispose pas d'adresse IP externe.

Dans Cloud Shell, créez le routeur Cloud utilisé avec Cloud NAT et HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

Dans Cloud Shell, créez la passerelle NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Créer l'instance de test de la base de données

Créez une instance de base de données Postgres qui servira à tester et valider la connectivité avec Looker.

Dans Cloud Shell, créez l'instance:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Créer une stratégie de pare-feu réseau et des règles de pare-feu

Dans Cloud Shell, procédez comme suit:

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

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 qu'IAP utilise pour le transfert TCP.

Dans Cloud Shell, procédez comme suit:

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

La règle de pare-feu suivante autorise le trafic provenant de la plage de sous-réseau proxy réservé à toutes les instances du réseau.

Dans Cloud Shell, procédez comme suit:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

10. Connectivité hybride

Dans la section suivante, vous allez créer un routeur Cloud Router qui vous permettra d'échanger de manière dynamique des routes entre votre cloud privé virtuel (VPC) et votre réseau de pairs à l'aide du protocole BGP (Border Gateway Protocol).

Cloud Router peut configurer une session BGP sur un tunnel Cloud VPN pour connecter vos réseaux. Il apprend automatiquement les nouvelles plages d'adresses IP de sous-réseau et les annonce à votre réseau de pairs.

Dans les étapes suivantes, vous allez déployer un VPN haute disponibilité entre le VPC looker-psc-demo et le VPC on-prem-demo pour illustrer la connectivité NEG hybride avec onprem.database1.com.

Créer la passerelle VPN haute disponibilité pour looker-psc-demo

Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle.

Dans Cloud Shell, créez la passerelle VPN haute disponibilité:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Créer la passerelle VPN haute disponibilité pour la démonstration sur site

Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle.

Dans Cloud Shell, créez la passerelle VPN haute disponibilité:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

Valider la création de la passerelle VPN haute disponibilité

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → PASSERELLES CLOUD VPN.

7f1b504616504866.png

Créer le routeur cloud pour looker-psc-demo

Dans Cloud Shell, créez le routeur Cloud Router:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Créer les tunnels VPN pour looker-psc-demo

Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.

Créer un tunnel VPN0

Dans Cloud Shell, créez tunnel0:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

Créer un tunnel VPN1

Dans Cloud Shell, créez tunnel1:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Créer les tunnels VPN pour on-prem-demo

Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.

Créer un tunnel VPN0

Dans Cloud Shell, créez tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

Créer un tunnel VPN1

Dans Cloud Shell, créez tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Valider la création du tunnel VPN

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → TUNNELS VPN CLOUD.

c2fcb340a7614070.png

11. Établir des voisins BGP

Créer une interface BGP et un appairage pour looker-psc-demo

Dans Cloud Shell, créez l'interface BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

Dans Cloud Shell, créez le pair BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

Dans Cloud Shell, créez l'interface BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

Dans Cloud Shell, créez le pair BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Créer une interface BGP et un appairage pour on-prem-demo

Dans Cloud Shell, créez l'interface BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

Dans Cloud Shell, créez le pair BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

Dans Cloud Shell, créez l'interface BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

Dans Cloud Shell, créez le pair BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Accédez à CONNECTIVITÉ HYBRIDE → VPN pour afficher les informations sur le tunnel VPN.

78ab590317919bf5.png

Vérifier les routes apprises par looker-psc-demo via un VPN haute disponibilité

Maintenant que les tunnels VPN haute disponibilité et les sessions BGP sont établis, le comportement par défaut de Cloud Router consiste à annoncer les routes de sous-réseau. Afficher les routes apprises de looker-psc-demo

Dans la console, accédez à Réseau VPC → Réseaux VPC → looker-psc-demo → ROUTES → REGION → VIEW.

Observez que looker-psc-demo a appris le sous-réseau de base de données 192.168.10.0/28 à partir du VPC on-prem-demo.

c11a11ed8b0491c8.png

Vérifier que le VPC on-prem-demo a appris les routes via un VPN haute disponibilité

Comme le comportement par défaut du routeur cloud consiste à annoncer tous les sous-réseaux, seul le sous-réseau du proxy est annoncé via BGP. La négociation de nom hybride utilisera le sous-réseau proxy réservé comme adresse source lors de la communication avec le serveur onprem.database1.com.

Observez que on-prem-demo a appris le sous-réseau proxy réservé 10.10.10.0/24 à partir de looker-psc-demo.

Dans la console, accédez à Réseau VPC → Réseaux VPC → on-prem-demo → ROUTES → REGION → VIEW (Réseau VPC → Réseaux VPC → on-prem-demo → ROUTES → REGION → VIEW).

b0073faed026931f.png

12. Création de la base de données Postgres Looker

Dans la section suivante, vous allez vous connecter en SSH à la VM postgres-database à l'aide de Cloud Shell.

Dans Cloud Shell, effectuez une connexion SSH à l'instance de base de données postgres :

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Dans l'OS, identifiez et notez l'adresse IP (ens4) de l'instance de base de données postgres:

ip a

Exemple :

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 noprefixroute 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/64 scope link 
       valid_lft forever preferred_lft forever

Dans l'OS, connectez-vous à postgresql:

sudo -u postgres psql postgres

Dans l'OS, saisissez l'invite de mot de passe:

\password postgres

Dans l'OS, définissez le mot de passe sur postgres (saisissez le même mot de passe deux fois):

postgres

Exemple :

user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 

Dans l'OS, quittez postgres:

\q

Exemple :

postgres=# \q
user@postgres-database:~$ 

Dans la section suivante, vous allez insérer l'adresse IP de votre instance de base de données PostgreSQL (192.168.10.4) et le sous-réseau proxy uniquement (10.10.10.0/24) dans le fichier pg_hba.conf sous les connexions locales IPv4.

sudo nano /etc/postgresql/15/main/pg_hba.conf

La capture d'écran ci-dessous montre la mise à jour terminée: eaff2ed6d27fa7cc.png

Dans la section suivante, supprimez le commentaire du fichier postgresql.conf pour écouter toutes les adresses IP "*", comme indiqué dans la capture d'écran ci-dessous:

sudo nano /etc/postgresql/15/main/postgresql.conf

Avant :

65e0b1074dc48644.png

Après :

14a0d1fa5455e23e.png

Dans l'OS, redémarrez le service postgresql:

sudo service postgresql restart

Dans l'OS, vérifiez que l'état de postgresql est actif:

sudo service postgresql status

Exemple :

Dans l'OS, vérifiez que l'état de postgresql est actif:

user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Créer la base de données PostgreSQL

Dans la section suivante, vous allez créer une base de données Postgres nommée postgres_looker et un schéma looker_schema qui vous permettront de valider la connectivité de Looker avec l'environnement sur site.

Dans l'OS, connectez-vous à postgres:

sudo -u postgres psql postgres

Dans l'OS, créez la base de données:

create database postgres_looker;

Dans l'OS, listez la base de données:

\l

Dans l'OS, créez l'utilisateur postgres_looker avec le mot de passe postgreslooker:

create user postgres_looker with password 'postgreslooker';

Dans l'OS, connectez-vous à la base de données:

\c postgres_looker;

Dans l'OS, créez le schéma looker-schema et quittez l'invite Cloud Shell.

create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit

Exit from the OS, returning you to cloud shell:

\q

Exemple :

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.

postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
                                                List of databases
      Name       |  Owner   | Encoding | Collate |  Ctype  | ICU Locale | Locale Provider |   Access privileges   
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
 postgres        | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 postgres_looker | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 template0       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
 template1       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
(4 rows)

postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Intégrer Looker à la base de données Postgres

Dans la section suivante, vous allez utiliser Looker Console pour créer une connexion de base de données à l'instance de base de données Postgres sur site.

Accédez à ADMIN → DATABASE → CONNECTIONS (ADMIN → BASE DE DONNÉES → CONNEXIONS), puis sélectionnez ADD CONNECTION (AJOUTER UNE CONNEXION).

Renseignez les informations de connexion conformément à la capture d'écran ci-dessous, puis sélectionnez CONNECT (ASSOCIER).

5900fdf0b698cbfc.png

La connexion est maintenant configurée

4817157fd3b1277e.png

15. Valider la connectivité Looker

Dans la section suivante, vous allez apprendre à valider la connectivité de Looker à la base de données postgres dans le VPC sur site à l'aide de l'action "test" de Looker et de TCPDUMP.

Dans Cloud Shell, connectez-vous à la base de données postgres si la session a expiré.

Dans Cloud Shell, procédez comme suit:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Depuis l'OS, créez un filtre TCPDUMP avec le sous-réseau proxy réservé 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

Accédez à la connexion de données : ADMIN → DATABASE → CONNECTIONS → postgres-database → Test

Une fois l'option "Test" sélectionnée, Looker se connectera à la base de données postgres, comme indiqué ci-dessous:

774f9313ece41034.png

Effectuer un nettoyage

Supprimer des composants de l'atelier à partir d'un seul terminal Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Félicitations

Félicitations, vous avez correctement configuré et validé la connectivité à la base de données sur site via un VPN haute disponibilité à l'aide de la console Looker alimentée par Private Service Connect.

Vous avez créé l'infrastructure du producteur, et appris à créer un NEG hybride, un service de producteur et un point de terminaison PSC Looker qui permettent de se connecter au service de producteur.

Cosmopup pense que les ateliers de programmation sont géniaux !

c911c127bffdee57.jpeg

Et ensuite ?

Découvrez quelques-uns des ateliers de programmation...

Autres ressources et vidéos

Documents de référence