Looker PSC Southbound HTTPS Internet NEG SMTP

1. Introduction

Dans cet atelier de programmation, vous allez créer une connexion "Direction sud" au service SMTP de Looker à l'aide d'un équilibreur de charge proxy TCP interne et d'un groupe de points de terminaison du réseau Internet (NEG) avec le nom de domaine complet notifications-pa.googleapis.com appelé depuis Looker PSC en tant que client du service.

Private Service Connect est une fonctionnalité de mise en réseau Google Cloud qui permet aux clients d'accéder de manière privée aux services gérés 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 le producteur du service, comme le montre la figure 1.

Figure 1.

145ea4672c3a3b14.png

L'accès sud, également appelé PSC inverse, permet au consommateur 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 à Internet. 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 une connectivité avec le service SMTP de Looker

Prérequis

def88091b42bfe4d.png

2. Ce que vous allez faire

Vous allez établir un réseau producteur, looker-psc-demo, pour déployer un équilibreur de charge proxy TCP et un NEG Internet publiés en tant que service via Private Service Connect (PSC). Une fois la publication effectuée, vous devrez effectuer les actions suivantes pour valider l'accès au service Producer :

  • Créer un point de terminaison PSC dans Looker associé au rattachement de service du producteur
  • Utiliser la console Looker pour créer des paramètres de messagerie SMTP

3. Configuration réseau requise

Vous trouverez ci-dessous la répartition des exigences liées au réseau pour le réseau Producer. Dans cet atelier de programmation, le client est l'instance Looker PSC.

Composants

Description

VPC (looker-psc-demo)

VPC en mode personnalisé

Sous-réseau NAT 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'attribuer une adresse IP à l'équilibreur de charge proxy TCP interne régional

Sous-réseau NEG PSC

Utilisé pour 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 Internet

Ressource utilisée pour définir un backend externe pour l'équilibreur de charge. Le point de terminaison n'est pas accessible uniquement via 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 Internet.

Cloud Router

Cloud NAT s'appuie sur les routeurs cloud pour les capacités du plan de contrôle, mais pas pour la gestion des sessions BGP.

Cloud NAT

Le NEG Internet régional utilise Cloud NAT pour la sortie Internet.

4. Topologie de l'atelier de programmation

a4eb7693cbdbdfd4.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]
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 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

Créer la passerelle Public NAT

La passerelle NAT est utilisée par l'équilibreur de charge proxy TCP interne régional pour la sortie Internet avec l'option de configuration –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB. Par conséquent, la même NATGW n'est pas compatible avec la sortie Internet GCE/GKE. Déployez une passerelle NAT supplémentaire avec l'option –endpoint-types=ENDPOINT_TYPE_VM pour la sortie Internet GCE/GKE.

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

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

Dans Cloud Shell, créez la passerelle Cloud NAT qui active la sortie Internet pour l'équilibreur de charge proxy tcp:

gcloud compute routers nats create looker-psc-demo-natgw \
  --router=looker-psc-demo-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

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 internet-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

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

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

Exemple de résultat :

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Configurer le NEG Internet

Créez un NEG Internet et définissez –network-endpoint-type sur internet-fqdn-port (le nom d'hôte et le port où votre backend externe peut être atteint).

Dans Cloud Shell, créez un NEG Internet utilisé pour github.com

gcloud compute network-endpoint-groups create smtp-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

Dans Cloud Shell, mettez à jour le NEG Internet smtp-internet-neg avec le nom de domaine complet notifications-pa.googleapis.com et le port 443.

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=notifications-pa.googleapis.com,port=443" \
    --region=$region

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

Dans Cloud Shell, effectuez les opérations suivantes:

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, procédez comme suit :

gcloud compute backend-services create producer-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=smtp-internet-neg --network-endpoint-group-region=$region --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-smtp-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

Créer un rattachement de service

Dans Cloud Shell, créez le rattachement de service, smtp-svc-attachment:

gcloud compute service-attachments create smtp-svc-attachment --region=$region --producer-forwarding-rule=producer-smtp-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/github-svc-attachment-https

Dans Cloud Shell, procédez comme suit :

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

Exemple :

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-10-04T14:56:50.409-07:00'
description: ''
enableProxyProtocol: false
fingerprint: KUPXTZjrGkw=
id: '8947818105173563981'
kind: compute#serviceAttachment
name: smtp-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '23100082169578472'
  low: '8947818105173563981'
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/smtp-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-smtp-fr

Dans Cloud Console, accédez à :

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

b847b5ee22e3582e.png

b9a7d46c8dea4476.png

9. Établir une connexion de 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: notifications-pa.googleapis.com
  • SERVICE_ATTACHMENT_1 : URI capturé lors de la description du rattachement de service, smtp-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=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment \
--region=$region

Dans Cloud Shell, vérifiez que l'état de connexion serviceAttachments est "ACCEPTED" (ACCEPTÉ), modifiez votre instance Looker PSC INSTANCE_NAME

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

Exemple :

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

Exemple :

{
...........................
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "notifications-pa.googleapis.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-10-04T22:02:31.445761128Z"
}

Valider le point de terminaison PSC dans la console Cloud

Vous pouvez valider la connexion PSC à partir de la console Cloud

Dans Cloud Console, accédez à :

Looker → Instance Looker → Détails

2d4684d722d31e4b.png

a7593db722f86642.png

10. Tester la connectivité SMTP

Dans les étapes suivantes, vous utiliserez la console Looker pour valider la connectivité SMTP en générant un test et .

E-mail de test

Looker envoie des e-mails à l'aide du serveur SMTP par défaut notifications-pa.googleapis.com. Aucune étape supplémentaire n'est requise dans ce cas. Si vous souhaitez utiliser un autre serveur SMTP pour les notifications, consultez la section Configuration SMTP personnalisée.

Ouvrez la console Looker, puis accédez aux éléments suivants :

Admin → Plate-forme → SMTP → Sélectionnez "Envoyer un e-mail de test"

aacb31e399cec9b7.png

Vous trouverez ci-dessous l'e-mail de test envoyé par Looker:

ff75669fb6993d58.png

E-mail de rapport généré

Accédez aux éléments suivants :

Explorer → Activité système → Utilisation de l'API → Type de requête de l'API → Exécuter

788f6d6d08f5f055.png

Exemple de résultat :

cebecdf5f2e968d1.png

Pour envoyer les résultats par e-mail, sélectionnez l'icône en forme de roue dentée.

c6ddb0b234b58ed4.png

Sélectionnez "Envoyer" pour ouvrir une nouvelle fenêtre.

15b45c5c1bc1b09b.png

Saisissez votre adresse e-mail, puis sélectionnez "Envoyer".

86970bb94247ed62.png

Vous trouverez ci-dessous l'e-mail de test envoyé par Looker:

c925c8917f8078b3.png

11. Configuration SMTP personnalisée

Dans ce tutoriel, le serveur SMTP Looker est utilisé pour envoyer des notifications par e-mail via le FQDN notifications-pa.googleapis.com et Cloud NAT effectuant une sortie Internet. Pour utiliser votre propre serveur SMTP, créez un rattachement de service en y apportant les modifications suivantes:

Mettez à jour le NEG Internet avec le nom de domaine complet de votre serveur SMTP :

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=<your SMTP FQDN>,port=443" \
    --region=$region

Spécifiez votre domaine SMTP lors de la mise à jour de l'instance Looker PSC:

  • INSTANCE_NAME: nom de votre instance Looker (Google Cloud Core).
  • DOMAIN_1: <votre nom de domaine complet du serveur SMTP>
  • SERVICE_ATTACHMENT_1 : URI capturé lors de la description du rattachement de service, smtp-svc-attachment
  • REGION : région dans laquelle votre instance Looker (Google Cloud Core) est hébergée.
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Pour utiliser un autre service de messagerie, sélectionnez Utiliser des paramètres de messagerie personnalisés.

a3fe7a0b66c80402.png

12. Effectuer un nettoyage

Supprimer les composants de l'atelier depuis un seul terminal Cloud Shell

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

gcloud compute forwarding-rules delete producer-smtp-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 looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q

gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q

gcloud compute network-endpoint-groups delete smtp-internet-neg --region=$region -q

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

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

gcloud compute networks delete looker-psc-demo -q

13. Félicitations

Félicitations ! Vous avez correctement configuré et validé la connectivité au service SMTP de Looker à l'aide de la console Looker fournie par Private Service Connect.

Vous avez créé l'infrastructure du producteur, et appris à créer un NEG Internet, 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