1. Introduction
Looker (Google Cloud Core) permet de simplifier et de rationaliser le provisionnement, la configuration et la gestion d'une instance Looker depuis la console Google Cloud. Certaines tâches d'administration d'instance peuvent également être effectuées à partir de la console.
Il existe trois configurations réseau pour les instances Looker (Google Cloud Core) :
- Public: la connexion réseau utilise une adresse IP externe accessible par Internet.
- Privée: la connexion réseau utilise une adresse IP de cloud privé virtuel (VPC) interne 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, où le trafic entrant est acheminé via une adresse IP publique et le trafic sortant via une adresse IP privée.
Dans ce tutoriel, vous allez déployer un réseau privé complet de bout en bout pour assurer la connectivité de Looker à un VPC sur site via un VPN haute disponibilité, qui pourra être répliqué pour répondre à vos exigences de connectivité multicloud et sur site.
Looker (Google Cloud Core) accepte les adresses IP privées pour les instances qui répondent aux critères suivants:
- Les éditions d'instances doivent être de type 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 doté d'une connectivité hybride avec des solutions multicloud et 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 on-prem-vpc n'existerait pas, mais 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 la région us-central1
- Allouer un sous-réseau IP à l'accès aux services privés
- Déployer une instance Looker dans le VPC autonome
- Créer le réseau VPC on-prem-vpc et le réseau hybride
- Annoncez et validez la plage d'adresses IP Looker sur BGP
- Intégrer et valider la communication de données Looker et Postgresql
Figure1
Points abordés
- Créer un VPC et la mise en réseau hybride associée
- Déployer Looker dans un VPC autonome
- Créer un VPC on-prem-vpc et la mise en réseau hybride associée
- Connecter le VPC on-prem-vpc avec analytics-vps via le VPN haute disponibilité
- Annoncer des sous-réseaux Looker via une mise en réseau hybride
- Surveiller l'infrastructure de mise en 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 $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 VPC
Créer le VPC analytics-vpc
Dans Cloud Shell, effectuez les opérations suivantes:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Créer le VPC on-prem-vpc
Dans Cloud Shell, effectuez les opérations suivantes:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Créer le sous-réseau de base de données Postgresql
Dans Cloud Shell, effectuez les opérations suivantes:
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 Cloud Router et NAT
Cloud NAT est utilisé dans le tutoriel sur 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 base de données
Créez une instance postgres-database qui permettra de tester et de 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 autoriser IAP à 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 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.
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, les entités fournissant des services, sont également appelés producteurs de services. Looker Cloud Core est un producteur de services.
La connexion privée permet aux instances de VM de votre réseau VPC et aux services auxquels vous accédez de communiquer exclusivement par le biais d'adresses IP internes.
De manière générale, pour utiliser l'accès 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 aux 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 n'est pas éligible pour les sous-réseaux (plages principales et secondaires) ni pour 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 de l'API, vous devrez peut-être actualiser la page de la console pour vérifier qu'elle 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 options d'adresses et de longueur de préfixe. 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'adresses 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'allocation 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
Après avoir créé une plage allouée, vous pouvez créer une connexion privée à un producteur de services, Looker Cloud Core. 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 une fois l'instance Looker établie.
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 propose 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'eux. Cette pratique vous aide à gérer vos paramètres réseau, tels que les routes et les règles de pare-feu, pour 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. Remplacez 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 de l'API, vous devrez peut-être actualiser la page de la console pour vérifier qu'elle a bien été activée.
Configurez un client OAuth pour s'authentifier et accéder à l'instance.
Dans la section suivante, vous devrez utiliser l'ID et le code secret du client OAuth pour créer l'instance Looker.
Les origines JavaScript autorisées et les URI de redirection ne sont pas obligatoires.
Dans la console Cloud, créez une instance basée sur les captures d'écran fournies.
Accédez à LOOKER → CRÉER UNE INSTANCE.
Renseignez l'ID et le code secret du client OAuth précédemment créés.
Sélectionnez CRÉER.
Lors de la création de l'instance, vous êtes 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'instance en cliquant sur l'icône des notifications dans le menu de la console Google Cloud. Pendant la création de votre instance, l'icône de notification dans le 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é créé précédemment pour l'ID client OAuth précédemment créé 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'UI de 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, comme dans 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'UI de Looker.
Une fois lancée, la page d'accueil s'affichera, comme illustré dans la capture d'écran ci-dessous, confirmant 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 dynamiquement des routes entre votre cloud privé virtuel (VPC) et votre réseau appairé à 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 analytics-vpc et on-prem-vpc pour illustrer la connectivité privée à Looker.
Créez le GW du VPN haute disponibilité pour le VPC 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, car vous en aurez besoin plus tard dans les étapes de configuration.
Dans Cloud Shell, créez le GW du VPN haute disponibilité.
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Créez le GW du VPN haute disponibilité pour le VPC on-prem-vpc.
Lorsque chaque passerelle est créée, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP, car vous en aurez besoin plus tard dans les étapes de configuration.
Dans Cloud Shell, créez le GW du VPN haute disponibilité.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Valider la création de GW pour les VPN haute disponibilité
Depuis la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → Passerelles CLOUD VPN.
Créer le routeur cloud pour le VPC analytics-vpc
Dans Cloud Shell, créez le routeur Cloud 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 le VPC on-prem-vpc
Dans Cloud Shell, créez le routeur Cloud 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 VPN 0
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 VPN 1
Dans Cloud Shell, créez le tunnel 1 (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 VPN 0
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 VPN 1
Dans Cloud Shell, créez le tunnel 1 (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
À l'aide de 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 BGP et un appairage 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 BGP et un appairage 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 par analytics-vpc via un VPN haute disponibilité
Comme les tunnels VPN haute disponibilité et les sessions BGP sont établis, les routes provenant du VPC on-prem-vpc sont apprises à partir du VPC analytics-vpc. Depuis la console, accédez à Réseau VPC → Réseaux VPC → analytics-vpc → ROUTES → RÉGION → us-central1 → VUE
Comme vous pouvez le constater, le VPC "analytics-vpc" a appris les routes 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 possède pas de sous-réseau. Par conséquent, le routeur Cloud Router n'annonce aucun sous-réseau sur le VPC on-prem-vpc. Depuis la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ROUTES → RÉGION → us-central1 → VUE
10. Annoncer le sous-réseau Looker sur site
Le sous-réseau d'accès privé aux services (PSA) de Looker n'est pas automatiquement annoncé par le routeur cloud analytics-cr-us-central1, car il est attribué à un 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 d'accès privés aux services 192.168.0.0/22 (psa-range-looker) qui sera annoncée dans l'environnement sur site et utilisée par les charges de travail pour accéder à Looker.
Dans la console, accédez à CONNECTIVITÉ HYBRIDE → CLOUD ROUTERS → 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 le VPC on-prem-vpc a appris le sous-réseau Looker
Le VPC on-prem-vpc peut désormais accéder au sous-réseau d'accès privés aux services Looker, car il a été annoncé depuis analytics-cr-us-central1 en tant qu'annonce de routage personnalisée.
À l'aide de la console, accédez à RÉSEAU VPC → RÉSEAUX VPC → on-prem-vpc → ROUTES → RÉGION → us-central1 → VUE
Observez les routes Looker annoncées à partir du VPC "analytics-vpc" :
12. Valider l'appairage VPC en cours
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 ce tutoriel, le VPC "analytics-vpc" devra publier les routes apprises par le VPC 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 actuellement.
Accédez à RÉSEAU VPC → PEERING DU RÉSEAU VPC → servicenetworking-googleapis-com.
La capture d'écran ci-dessous détaille le VPC analytics-vpc qui importe le psa-range-looker à partir du réseau VPC appairé géré par Google, servicesnetworking.
Sélectionnez EXPORTED ROUTES (ROUTES EXPORTÉES) et aucune route n'a été exportée vers le réseau VPC appairé, car 1) les sous-réseaux ne sont pas configurés dans analytics-vpc 2) les routes personnalisées d'exportation ne sont pas sélectionnées
13. Mettre à jour l'appairage VPC
Accédez à RÉSEAU VPC → PÉRIODE DU RÉSEAU VPC → servicenetworking-googleapis-com → MODIFIER
Sélectionnez EXPORTER LES ROUTES PERSONNALISÉES → ENREGISTRER.
14. Valider l'appairage VPC mis à jour
Validez les routes exportées.
Accédez à RÉSEAU VPC → PEERING DU RÉSEAU VPC → servicenetworking-googleapis-com.
Sélectionnez EXPORTED ROUTES (ROUTES EXPORTÉES) pour indiquer 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 analytics-vpc.
15. 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, exécutez une commande SSH vers l'instance postgres-database**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Dans le système d'exploitation, 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 le système d'exploitation, saisissez l'invite de saisie du 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 Looker (192.168.0.0/22) dans le fichier pg_hba.conf sous les connexions locales IPv4, comme illustré dans la capture d'écran ci-dessous:
sudo nano /etc/postgresql/15/main/pg_hba.conf
Dans la section suivante, annulez la mise en commentaire du fichier postgresql.conf pour écouter tous les caractères "*". 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 postgresql est actif.
sudo service postgresql status
Exemple :
Dans l'OS, vérifiez que l'état 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 permettant de valider la connectivité de Looker à la connectivité 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, répertoriez la base de données.
\l
Dans l'OS, créez le looker utilisateur 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 et revenez à Cloud Shell.
\q
exit
17. Créer un pare-feu dans le VPC on-prem-vpc
Dans la section suivante, vous allez créer un pare-feu d'entrée avec journalisation permettant la communication du sous-réseau Looker vers 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 le VPC analytics-vpc
Bien que Looker soit déployé dans un VPC géré par Google, l'accès au DNS privé analytics-vpc est disponible via l'appairage avec la mise en réseau de services.
Dans la section suivante, vous allez créer une zone DNS privée dans analytics-vpc composée d'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 précédemment identifiée.
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, définissez le suffixe dns pair analytics.com. aux services de mise en réseau, ce qui permet à 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 postgres-database
Dans la section suivante, vous allez utiliser la console Cloud pour créer une connexion de 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'UI de Looker.
Une fois lancée, la page de destination s'affiche, conformément à la capture d'écran ci-dessous.
Accédez à ADMINISTRATION → BASE DE DONNÉES → CONNEXIONS → sélectionnez AJOUTER UNE CONNEXION.
Indiquez les informations de connexion comme indiqué dans la capture d'écran ci-dessous, puis sélectionnez ASSOCIER.
La connexion est maintenant établie
20. Valider la connectivité de Looker
Dans la section suivante, vous apprendrez à valider la connectivité de Looker à la base de données postgres-database dans le VPC on-prem-vpc à l'aide du "test" de Looker "Action" et "TCPDUMP".
Dans Cloud Shell, connectez-vous à la base de données postgres-database si la session a expiré.
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
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
À partir du système d'exploitation, 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 à Connexion de données : ADMINISTRATION → BASE DE DONNÉES → CONNEXIONS → Sélectionner → Test.
Une fois l'option "Test" sélectionnée, Looker se connecte à la base de données postgres-database comme indiqué ci-dessous:
Revenez au terminal de l'OS et vérifiez que TCPDUMP a identifié que psc-range-looker se connecte à l'instance postgres-database sur site.
Ajoutez une note indiquant que Looker affichera toutes les adresses IP de la plage d'accès privés aux services
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 quelques recommandations et bonnes pratiques de sécurité concernant la sécurisation de Looker et de la base de données Postgres. Par exemple :
- Configurer les autorisations de compte de base de données avec le plus faible privilège pour Looker, tout en lui permettant d'exécuter les fonctions nécessaires.
- Les données en transit entre le client et l'UI Looker, et Looker vers la base de données, chiffrées à l'aide de TLS 1.2+
- Les données au repos sont chiffrées par défaut. Le client peut également utiliser une clé 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 principe 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, y compris le modèle et l'ensemble d'autorisations, et de créer un contrôle des accès précis aux données.
- Looker est compatible avec les journaux d'audit et les journaux d'accès aux données, qui permettent de savoir 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 explicitement activés.
- Actuellement, VPC-SC est compatible avec les instances Enterprise et Embed configurées uniquement avec une adresse IP privée
22. Effectuer un nettoyage
Supprimez l'instance Looker Cloud Core. Accédez à:
LOOKER → looker-tutorial → SUPPRIMER
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é de Looker via une mise en réseau hybride, ce qui permet la communication de données entre les environnements sur site et multicloud.
Vous avez également réussi à tester la connectivité de Looker Cloud Core à la base de données postgres-database à l'aide de Looker Connect "Test". et TCPDUMP dans l'instance postgres-database.
Cosmopup trouve les tutoriels géniaux !
Complément d'informations et Vidéos
- Présentation de la nouvelle évolution de Looker
- Vous migrez vers GCP ? Commençons par le commencement: 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 les réseaux Google Cloud
- Configurer et gérer la traduction d'adresse réseau avec Cloud NA
- Options d'échange de routes dynamiques