1. Introduction
Looker (Google Cloud Core) simplifie et optimise le provisionnement, la configuration et la gestion d'une instance Looker à partir de la console Google Cloud. Certaines tâches d'administration des instances peuvent également être effectuées depuis la console.
Trois configurations réseau sont disponibles pour les instances Looker (Google Cloud Core) :
- Publique : la connexion réseau utilise une adresse IP externe accessible par Internet.
- Privée : la connexion réseau utilise une adresse IP interne VPC (cloud privé virtuel) hébergée par Google.
- Publique et privée : la connexion réseau utilise à la fois une adresse IP publique et une adresse IP privée. Le trafic entrant est acheminé via l'adresse IP publique, et le trafic sortant via l'adresse IP privée.
Dans ce tutoriel, vous allez déployer un réseau privé complet de bout en bout pour prendre en charge la connectivité Looker à un VPC sur site via un VPN haute disponibilité. Vous pourrez le répliquer pour répondre à vos besoins de connectivité multicloud et sur site.
Looker (Google Cloud Core) est compatible avec les adresses IP privées pour les instances qui répondent aux critères suivants :
- Les éditions d'instance doivent être Enterprise ou Embed.
Objectifs de l'atelier
Dans ce tutoriel, vous allez créer un déploiement complet de réseau Looker privé dans un VPC autonome disposant d'une connectivité hybride au multicloud et à l'environnement sur site.
Vous allez configurer un réseau VPC appelé on-prem-vpc pour représenter un environnement sur site. Pour votre déploiement, le VPC sur site n'existerait pas. À la place, une mise en réseau hybride vers votre centre de données sur site ou votre fournisseur de services cloud serait utilisée.
Voici les principales étapes du tutoriel :
- Créer un VPC autonome dans us-central1
- Allouer un sous-réseau d'adresses IP à l'accès aux services privés
- Déployer une instance Looker dans le VPC autonome
- Créer le réseau on-prem-vpc et le réseau hybride
- Annoncer et valider la plage d'adresses IP Looker sur BGP
- Intégrer et valider la communication des données entre Looker et PostgreSQL
Figure1

Points abordés
- Créer un VPC et un réseau hybride associé
- Déployer Looker dans un VPC autonome
- Créer un réseau VPC sur site et une mise en réseau hybride associée
- Connecter le VPC sur site au VPC d'analyse via un VPN haute disponibilité
- Annoncer des sous-réseaux Looker sur un réseau hybride
- Surveiller l'infrastructure réseau hybride
- Intégrer une base de données PostgreSQL à Looker Cloud Core
Prérequis
- Projet Google Cloud
Autorisations IAM
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, procédez comme suit :
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Configuration du VPC
Créer le réseau analytics-vpc
Dans Cloud Shell, procédez comme suit :
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Créer le VPC on-prem-vpc
Dans Cloud Shell, procédez comme suit :
gcloud compute networks create on-prem-vpc --project=$projectid --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-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-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 de base de données ne possède pas d'adresse IP externe.
Dans Cloud Shell, créez le routeur Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
Dans Cloud Shell, créez la passerelle NAT.
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Créer l'instance de test de la base de données
Créez une instance postgres-database qui servira à tester et valider la connectivité à Looker.
Dans Cloud Shell, créez l'instance.
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
Créer des règles de pare-feu
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.
Depuis Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. Accès privé aux services
L'accès aux services privés est une connexion privée entre votre réseau VPC et un réseau appartenant à Google ou à un tiers. Google ou le tiers sont des entités proposant des services. Ils sont également appelés "producteurs de services". Looker (Google Cloud Core) est un producteur de services.
La connexion privée permet aux instances de VM de votre réseau VPC de communiquer avec les services auxquels vous accédez exclusivement à l'aide d'adresses IP internes.
En règle générale, pour accéder aux services privés, vous devez allouer une plage d'adresses IP (bloc CIDR) à votre réseau VPC, puis créer une connexion privée à un producteur de services.
Allouer une plage d'adresses IP pour les services
Avant de créer une connexion privée, vous devez allouer une plage d'adresses IPv4 qui sera utilisée par le réseau VPC du producteur de services. Cela garantit qu'il n'y a pas de conflit d'adresses IP entre votre réseau VPC et le réseau du producteur de services.
Lorsque vous allouez une plage dans votre réseau VPC, elle devient inéligible pour les sous-réseaux (plages primaire et secondaire) et les destinations des routes statiques personnalisées.
L'utilisation de plages d'adresses IPv6 avec accès aux services privés n'est pas disponible.
Activez l'API Service Networking pour votre projet dans la console Google Cloud. Lors de l'activation, il se peut que vous deviez actualiser la page de la console pour confirmer que l'API a bien été activée.
Créer une allocation d'adresses IP
Pour spécifier une plage d'adresses et une longueur de préfixe (masque de sous-réseau), utilisez les indicateurs "addresses" et "prefix-length". Par exemple, pour allouer le bloc CIDR 192.168.0.0/22, spécifiez 192.168.0.0 pour l'adresse et 22 pour la longueur du préfixe.
Dans Cloud Shell, créez l'allocation d'adresse IP pour Looker.
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
Dans Cloud Shell, validez l'attribution d'adresses IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Exemple :
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
Créer une connexion privée
Une fois que vous avez créé une plage allouée, vous pouvez créer une connexion privée à un producteur de services, Looker Cloud Core. Une fois l'instance Looker établie, la connexion privée établit une connexion d'appairage de réseaux VPC entre votre réseau VPC et le réseau du producteur de services.
Les connexions privées sont des relations un à un entre votre réseau VPC et un producteur de services. Si un seul producteur de services offre plusieurs services, vous n'avez besoin que d'une seule connexion privée pour tous les services du producteur.
Si vous vous connectez à plusieurs producteurs de services, utilisez une allocation unique pour chacun d'entre eux. Ceci facilite la gestion des paramètres réseau, tels que les routes et les règles de pare-feu, de chaque producteur de services.
Dans Cloud Shell, créez une connexion privée et notez le nom de l'opération.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Exemple :
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
Dans Cloud Shell, vérifiez si l'opération a réussi en remplaçant OPERATION_NAME par le nom généré à l'étape précédente.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
Exemple :
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
5. Créer une instance Looker (Google Cloud Core)
Avant de commencer
Activez l'API Looker pour votre projet dans la console Google Cloud. Lors de l'activation, il se peut que vous deviez actualiser la page de la console pour confirmer que l'API a bien été activée.
Configurez un client OAuth pour vous authentifier et accéder à l'instance.
Dans la section suivante, vous devrez utiliser l'ID client et le code secret OAuth pour créer l'instance Looker.
Les URI de redirection et les origines JavaScript autorisés ne sont pas obligatoires.

Dans la console Cloud, créez une instance en vous basant sur les captures d'écran fournies.
Accédez à LOOKER → CRÉER UNE INSTANCE.
Renseignez l'ID client et le code secret OAuth créés précédemment.



Sélectionnez CRÉER.
Pendant la création de l'instance, vous serez redirigé vers la page Instances de la console. Vous devrez peut-être actualiser la page pour afficher l'état de votre nouvelle instance. Vous pouvez également consulter l'activité de création d'instances en cliquant sur l'icône de notifications dans le menu de la console Google Cloud. Pendant la création de votre instance, l'icône de notifications du menu de la console Google Cloud est entourée d'une icône de chargement.
Une fois l'instance Looker créée, une URL d'instance est générée. Notez l'URL.

6. Mettre à jour l'ID client OAuth 2.0
Dans la section suivante, vous devrez mettre à jour l'URI de redirection autorisé de l'ID client OAuth créé précédemment en ajoutant /oauth2callback à l'URL de l'instance.
Une fois l'opération terminée, vous pouvez utiliser l'URL de l'instance pour vous connecter à l'interface utilisateur Looker.
Dans la console Cloud, accédez à API ET SERVICES → IDENTIFIANTS.
Sélectionnez votre ID client OAuth 2.0 et mettez à jour l'URL de votre instance (voir l'exemple ci-dessous) :

7. Valider l'accès à Looker
Dans la console Cloud, accédez à Looker et sélectionnez l'URL de votre instance pour ouvrir l'interface utilisateur Looker.

Une fois lancé, la page de destination s'affiche (voir la capture d'écran ci-dessous) pour confirmer votre accès à Looker Cloud Core.

8. 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 ce tutoriel, vous allez déployer un VPN haute disponibilité entre les réseaux analytics-vpc et on-prem-vpc pour illustrer la connectivité privée à Looker.
Créez la passerelle VPN haute disponibilité pour le réseau analytics-vpc.
Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP que vous utiliserez ultérieurement dans les étapes de configuration.
Dans Cloud Shell, créez la passerelle VPN haute disponibilité.
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Créer la passerelle VPN haute disponibilité pour on-prem-vpc
Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP que vous utiliserez ultérieurement dans les étapes de configuration.
Dans Cloud Shell, créez la passerelle VPN haute disponibilité.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Valider la création de la passerelle VPN haute disponibilité
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → PASSERELLES CLOUD VPN.

Créer le routeur Cloud pour le réseau VPC "analytics-vpc"
Dans Cloud Shell, créez le routeur Cloud Router situé dans us-central1.
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Créer le routeur Cloud pour on-prem-vpc
Dans Cloud Shell, créez le routeur Cloud Router situé dans us-central1.
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Créer les tunnels VPN pour analytics-vpc
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 analytics-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 0
Créer un tunnel VPN1
Dans Cloud Shell, créez tunnel1 :
gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 1
Créer les tunnels VPN pour on-prem-vpc
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 analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--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 analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
Valider la création du tunnel VPN
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → TUNNELS CLOUD VPN.

9. Établir des voisins BGP
Créer des sessions BGP
Dans cette section, vous allez configurer les interfaces Cloud Router et les pairs BGP.
Créer une interface et un appairage BGP pour analytics-vpc
Dans Cloud Shell, créez l'interface BGP :
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel0 \
--region us-central1
Dans Cloud Shell, créez le pair BGP :
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
Dans Cloud Shell, créez l'interface BGP :
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel1 \
--region us-central1
Dans Cloud Shell, créez le pair BGP :
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
Créer une interface et un appairage BGP pour on-prem-vpc
Dans Cloud Shell, créez l'interface BGP :
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-analytics-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
Dans Cloud Shell, créez le pair BGP :
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel0 \
--interface if-tunnel1-to-analytics-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
Dans Cloud Shell, créez l'interface BGP :
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-analytics-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
Dans Cloud Shell, créez le pair BGP :
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel1\
--interface if-tunnel2-to-analytics-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
Accédez à CONNECTIVITÉ HYBRIDE → VPN pour afficher les détails du tunnel VPN.

Valider les routes apprises analytics-vpc via le VPN haute disponibilité
Étant donné que les tunnels VPN haute disponibilité et les sessions BGP sont établis, les routes de on-prem-vpc sont apprises à partir de analytics-vpc. Dans la console, accédez à Réseau VPC → Réseaux VPC → analytics-vpc → ROUTES → REGION → us-central1 → VIEW.
Observer que analytics-vpc a appris les routes à partir de on-prem-vpc database-subnet-us-central1 172.16.10.0/27

Vérifier que on-prem-vpc n'a pas appris les routes via un VPN haute disponibilité
Le VPC analytics-vpc ne comporte pas de sous-réseau. Par conséquent, le routeur cloud n'annoncera aucun sous-réseau au VPC on-prem-vpc. Dans la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ITINÉRAIRES → RÉGION → us-central1 → AFFICHER.

10. Annoncer le sous-réseau Looker sur site
Le sous-réseau Looker Private Service Access (PSA) n'est pas automatiquement annoncé par le routeur cloud analytics-cr-us-central1, car il est attribué à PSA et non au VPC.
Vous devrez créer une annonce de routage personnalisée à partir de analytics-cr-central1 pour le sous-réseau PSA 192.168.0.0/22 (psa-range-looker) qui sera annoncé dans l'environnement sur site et utilisé par les charges de travail pour accéder à Looker.
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → ROUTEURS CLOUD → analytics-cr-us-central1, puis sélectionnez MODIFIER.
Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.

11. Vérifier que on-prem-vpc a appris le sous-réseau Looker
Le réseau VPC sur site pourra désormais accéder au sous-réseau Looker PSA, car il a été annoncé à partir de analytics-cr-us-central1 en tant qu'annonce de routage personnalisée.
Dans la console, accédez à RÉSEAU VPC → RÉSEAUX VPC → on-prem-vpc → ITINÉRAIRES → RÉGION → us-central1 → AFFICHER.
Observez les routes Looker annoncées à partir du VPC analytics-vpc :

12. Valider l'appairage de VPC actuel
La connexion entre Looker Cloud Core et analytics-vpc s'effectue via l'appairage de VPC, qui permet l'échange de routes personnalisées apprises via BGP. Dans le tutoriel, le réseau analytics-vpc devra publier les routes apprises par le réseau on-prem-vpc dans Looker. Pour activer cette fonctionnalité, l'appairage de VPC nécessite une mise à jour pour exporter les routes personnalisées.
Validez les routes importées et exportées actuelles.
Accédez à RÉSEAU VPC → APPAIRAGE DE RÉSEAUX VPC → servicenetworking-googleapis-com.

La capture d'écran ci-dessous montre le VPC analytics-vpc qui importe psa-range-looker à partir du réseau VPC appairé géré par Google, servicesnetworking.

La sélection de "ROUTES EXPORTÉES" ne révèle aucune route exportée vers le réseau VPC appairé, car 1) les sous-réseaux ne sont pas configurés dans analytics-vpc ; 2) l'option "Exporter les routes personnalisées" n'est pas sélectionnée.

13. Mettre à jour l'appairage de VPC
Accédez à RÉSEAU VPC → APPAIRAGE DE RÉSEAUX VPC → servicenetworking-googleapis-com → MODIFIER.
Sélectionnez EXPORTER LES ROUTES PERSONNALISÉES → ENREGISTRER.

14. Valider l'appairage de VPC mis à jour
Validez les routes exportées.
Accédez à RÉSEAU VPC → APPAIRAGE DE RÉSEAUX VPC → servicenetworking-googleapis-com.
Si vous sélectionnez "ROUTES EXPORTÉES", vous verrez que les routes on-prem-vpc (sous-réseau de base de données 172.16.10.0/27) sont exportées vers le réseau VPC appairé hébergeant Looker par le biais de analytics-vpc.

15. Création d'une 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 un SSH vers l'instance de base de données PostgreSQL.
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Dans l'OS, identifiez et notez l'adresse IP (ens4) de l'instance postgres-database.
ip a
Exemple :
user@postgres-database:~$ 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 mq state UP group default qlen 1000
link/ether 42:01:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/64 scope link
valid_lft forever preferred_lft forever
Dans l'OS, connectez-vous à postgresql.
sudo -u postgres psql postgres
Dans l'OS, saisissez le 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 postgres-database et le sous-réseau d'accès privé à Google de Looker (192.168.0.0/22) dans le fichier pg_hba.conf sous les connexions locales IPv4, comme indiqué dans la capture d'écran ci-dessous :

sudo nano /etc/postgresql/15/main/pg_hba.conf
Dans la section suivante, décommentez 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 :

Après :

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 Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. Créer la base de données Postgres
Dans la section suivante, vous allez créer une base de données Postgres nommée "postgres_looker" et un schéma "looker_schema" utilisé pour valider la connectivité Looker aux ressources 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 Looker avec le mot de passe Looker.
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
Exemple :
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
Quittez l'OS pour revenir à Cloud Shell.
\q
exit
17. Créer un pare-feu dans on-prem-vpc
Dans la section suivante, créez un pare-feu d'entrée avec journalisation qui autorise la communication du sous-réseau Looker avec l'instance postgres-database.
Dans Cloud Shell, créez le pare-feu on-prem-vpc.
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
18. Créer un DNS privé dans analytics-vpc
Bien que Looker soit déployé dans un VPC géré par Google, l'accès au DNS privé analytics-vpc est possible grâce à l'appairage avec la mise en réseau de services.
Dans la section suivante, vous allez créer une zone DNS privée dans le VPC d'analyse. Elle comprendra un enregistrement A du nom de domaine complet (postgres.analytics.com)) et de l'adresse IP de l'instance postgres-database.
Dans Cloud Shell, créez la zone privée analytics.com.
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
Dans Cloud Shell, identifiez l'adresse IP de l'instance postgres-database.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
Exemple :
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
Dans Cloud Shell, créez l'enregistrement A en veillant à ajouter l'adresse IP identifiée précédemment.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
Exemple :
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
Dans Cloud Shell, appairez le suffixe DNS analytics.com à la mise en réseau de services pour permettre à Looker d'accéder à la zone privée analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. Intégrer Looker à la base de données Postgres
Dans la section suivante, vous allez utiliser la console Cloud pour créer une connexion à la base de données à l'instance postgres-database sur site.
Dans la console Cloud, accédez à Looker et sélectionnez l'URL de votre instance pour ouvrir l'interface utilisateur Looker.

Une fois l'application lancée, la page de destination s'affiche (voir la capture d'écran ci-dessous).

Accédez à ADMINISTRATEUR → BASE DE DONNÉES → CONNEXIONS, puis sélectionnez AJOUTER UNE CONNEXION.
Renseignez les informations de connexion comme indiqué dans la capture d'écran ci-dessous, puis sélectionnez CONNECTER.

La connexion est maintenant établie

20. Valider la connectivité Looker
Dans la section suivante, vous allez apprendre à valider la connectivité de Looker à la base de données PostgreSQL dans le VPC sur site à l'aide de l'action de test Looker et de TCPDUMP.
Dans Cloud Shell, connectez-vous à la base de données PostgreSQL si la session a expiré.
Dans Cloud Shell, procédez comme suit :
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
À partir de l'OS, créez un filtre TCPDUMP avec le sous-réseau psa-range-looker 192.168.0.0/22.
sudo tcpdump -i any net 192.168.0.0/22 -nn
Accédez à la connexion aux données ADMIN → BASE DE DONNÉES → CONNEXIONS → Sélectionner → Tester.
Une fois le test sélectionné, Looker se connecte à la base de données PostgreSQL, comme indiqué ci-dessous :

Revenez au terminal de l'OS et vérifiez que TCPDUMP a identifié la connexion de psc-range-looker à l'instance de base de données PostgreSQL sur site.
Ajoutez une note indiquant que toute adresse IP de la plage PSA s'affichera dans Looker.
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. Recommandations pour améliorer la sécurité
Il existe peu de recommandations et de bonnes pratiques de sécurité concernant la sécurisation de Looker et de la base de données Postgres. Par exemple :
- Configurer des permissions de comptes de bases de données les plus restreintes pour Looker tout en lui permettant de réaliser les fonctions requises.
- Les données en transit entre le client et l'interface utilisateur Looker, ainsi qu'entre Looker et la base de données, sont chiffrées à l'aide du protocole TLS 1.2 ou version ultérieure.
- Les données au repos sont chiffrées par défaut. Les clients peuvent également utiliser CMEK pour les instances Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) et pour Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek).
- Contrôle des accès Looker : les administrateurs Looker peuvent contrôler ce qu'un principal ou un groupe d'utilisateurs peut voir et faire dans Looker en accordant l'accès au contenu, aux données et aux fonctionnalités. Ces options permettent à l'administrateur Looker de définir des rôles spécifiques incluant un modèle et un ensemble d'autorisations, et de créer un contrôle précis des accès aux données.
- Looker est compatible avec les journaux d'audit et d'accès aux données, qui enregistrent qui a fait quoi, quand et où. Les journaux d'audit sont activés par défaut, tandis que les journaux d'accès aux données doivent être activés explicitement.
- Actuellement, VPC-SC est compatible avec les instances Enterprise et Embed configurées avec une adresse IP privée uniquement.
22. Effectuer un nettoyage
Supprimez l'instance Looker (Google Cloud Core). Pour ce faire :
LOOKER → looker-tutorial → DELETE

Dans Cloud Shell, supprimez les composants du tutoriel.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. Félicitations
Félicitations, vous avez configuré et validé la connectivité Looker sur le réseau hybride, ce qui permet la communication de données entre les environnements sur site et multicloud.
Vous avez également pu tester la connectivité Looker Cloud Core à la base de données Postgres à l'aide de l'outil de test "Connect" de Looker et de TCPDUMP dans l'instance de la base de données Postgres.
Cosmopup pense que les tutoriels sont géniaux !!

Lectures et vidéos complémentaires
- Découvrez la nouvelle évolution de Looker
- Vous migrez vers GCP ? Première étape : les VPC
- Routage dynamique avec Cloud Router
Documents de référence
- Documentation Looker (Google Cloud Core)
- Créer une instance Looker (Google Cloud Core)
- Créer une connexion IP privée pour Looker (Google Cloud Core)
- VPN haute disponibilité entre réseaux Google Cloud
- Configurer et gérer la traduction d'adresses réseau avec Cloud NAT
- Options d'échange des routes dynamiques