NEG Internet HTTPS vers le sud du PSA Looker

À propos de cet atelier de programmation
schedule38 minutes
subjectDernière mise à jour : 2 avril 2025
account_circleRédigé par Deepak Michael, Emanuele Mazza

Seules les instances Looker (Google Cloud Core) qui utilisent un accès aux services privés pour leur connexion privée sont compatibles avec une configuration d'adresses IP privées et publiques.

Une instance Looker (Google Cloud Core) qui dispose à la fois d'une connexion IP privée (accès aux services privés) et d'une connexion IP publique possède une URL publique, et tout le trafic entrant passe par la connexion IP publique. Le trafic sortant est acheminé via votre VPC, qui peut être configuré pour n'autoriser que le trafic IP privé, comme illustré dans la figure 1.

Figure1

9f587c14791dd92e.png

La communication avec github.com est résolue en une adresse IP publique, donc inaccessible depuis une instance Looker déployée en tant que privée ou publique+privée.

Dans cet atelier de programmation, vous allez établir une connexion HTTPS vers GitHub à l'aide d'un équilibreur de charge proxy TCP interne et d'un groupe de points de terminaison du réseau (NEG) Internet appelé à partir de Looker PSA.

Points abordés

  • Configuration réseau requise
  • Établir une connexion à GitHub depuis Looker à l'aide d'une connexion test

Prérequis

5348de53f0a78a50.png

2. Ce que vous allez faire

Vous allez déployer un équilibreur de charge proxy TCP interne et un NEG Internet configuré avec l'adresse IP résolue de github.com qui exploite Cloud NAT pour la sortie Internet vers les organisations github.com résolues par Looker.

3. Configuration réseau requise

Vous trouverez ci-dessous le détail des exigences réseau:

Composants

Description

VPC ($vpc_network)

VPC en mode personnalisé

sous-réseau de la règle de transfert

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

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 ne peut pas être 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 fonctionnalités de 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

c5871e5418d37f13.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]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network

Activez tous les services nécessaires :

gcloud services enable compute.googleapis.com

7. Composants réseau VPC

Réseau VPC

Le tutoriel nécessite une instance Looker PSA existante. Le VPC associé est donc déjà créé.

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

gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --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:

gcloud compute networks subnets create $region-proxyonly-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=$vpc_network \
  --range=10.10.10.0/24

Créer la passerelle NAT publique

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 ne prend pas en charge 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 $vpc_network-cloud-router --network $vpc_network --region $region

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

gcloud compute routers nats create $vpc_network-natgw \
  --router=$vpc_network-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxyonly-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 qui sera utilisée plus tard comme enregistrement DNS A pour github.com:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=psa-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

8. NEG Internet

Il existe deux façons de configurer le point de terminaison externe référencé par le NEG Internet : INTERNET_FQDN_PORT ou INTERNET_IP_PORT. Si vous choisissez le format INTERNET_IP_PORT (option 1), seule une adresse IP publique routable sur Internet peut être utilisée. Si vous choisissez le format INTERNET_FQDN_PORT (option 2), le FQDN peut être résolu en une adresse IP publique routable sur Internet ou en une adresse IP privée, en fonction de la portée du point de terminaison: régionale ou globale.

Option 1: Configurer le NEG Internet à l'aide d'une adresse IP

La NEG Internet nécessite l'adresse IP résolue de Github.com. Pour des performances optimales, ouvrez un terminal local, effectuez une recherche dig et obtenez l'adresse IP de github.com.

Exemple à partir d'un terminal local générant l'adresse IP résolue 140.82.113.4

bash-3.2$ dig github.com
; <<>> DiG 9.10.6 <<>> github.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.com.                        IN        A
;; ANSWER SECTION:
github.com.                60        IN        A        140.82.113.4
;; Query time: 409 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Sep 26 15:50:45 CDT 2024
;; MSG SIZE  rcvd: 65

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

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

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_IP_PORT \
    --network=$vpc_network \
    --region=$region

Dans Cloud Shell, mettez à jour le NEG Internet github-internet-neg avec l'adresse IP résolue de github.com et le port 443:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=[your-resolved-ip],port=443" \
    --region=$region

Exemple :

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=140.82.113.4,port=443" \
    --region=$region

Option 2: Configurer un NEG Internet à l'aide d'un FQDN

Vous pouvez également créer un NEG Internet et définir le paramètre –network-endpoint-type sur internet_FQDN_port.

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

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=$vpc_network \
    --region=$region

Dans Cloud Shell, mettez à jour le NEG Internet github-internet-neg avec le nom de domaine complet github.com:

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

9. Créer le service GitHub

Créer des composants d'équilibreur de charge

Dans Cloud Shell, procédez comme suit:

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

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

10. Zone DNS GitHub

Dans la section suivante, vous allez créer une règle de réponse DNS pour GitHub.com avec un enregistrement A composé de l'adresse IP de l'équilibreur de charge proxy TCP interne.

Par la suite, l'appairage DNS partagera la zone github.com avec le PSA Looker, ce qui permettra de se connecter à GitHub via l'équilibreur de charge interne, en association avec le NEG Internet et Cloud NAT.

Dans Cloud Shell, créez la zone de stratégie de réponse:

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

Dans Cloud Shell, créez l'enregistrement A DNS composé de l'adresse IP de l'équilibreur de charge proxy TCP, [insert-your-ip-address]:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"

Exemple :

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

7b41b2f44609e5ed.png

Mettre à jour l'appairage DNS

Dans cette section, vous allez utiliser la syntaxe gcloud services peered-dns-domains create, qui crée un domaine DNS associé pour une connexion de service privée qui envoie des requêtes d'enregistrements dans un espace de noms donné à partir du réseau VPC du producteur de services vers le réseau VPC du client de services pour être résolues.

Dans Cloud Shell, créez un domaine DNS associé que le looker interrogera pour github.com:

gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.

11. Tester la connectivité à GitHub

Dans les étapes suivantes, vous allez utiliser la console Looker pour créer un projet afin de valider la connectivité HTTPS avec github.com.

12. Créer un projet

Activer le mode développement

Dans Looker Console, accédez à:

Activez le mode Développement (en bas à gauche de la page). Une bannière indiquant "Vous êtes en mode Développement" s'affiche.

70c9ded749decfbe.png

Créer un projet

Dans Cloud Console, accédez à:

Développer → Projets

e8ae11e0392a776d.png

Sélectionner "Nouveau projet LookML"

65a3c2573e97e1e9.png

Attribuez un nom au projet, sélectionnez "Blank Project" (Projet vide), puis "Create Project" (Créer un projet).

9185808e001fa540.png

Sélectionner "Configurer Git"

42f5e51ce70642ad.png

Configurer Git

Remplacez l'URL du dépôt par vos informations GitHub HTTPS, veillez à ajouter ".git" à l'URL, puis sélectionnez "Continuer".

f5c448f6659b8fc1.png

Exemple :

4065ab1d196589f.png

Remplacez la sélection par votre nom d'utilisateur GitHub et votre jeton d'accès personnel (classique), puis sélectionnez "Tester et finaliser la configuration".

1dc44d63c555a9ae.png

Sélectionner "Actions Git"

b5903668a50a99ca.png

Sélectionner "Tester la connexion Git"

51b722e84f2df38c.png

Valider le test de connexion Git

8fb7386b739f60be.png

13. Effectuer un nettoyage

À partir d'un seul terminal Cloud Shell, supprimez les composants de l'atelier:

gcloud compute forwarding-rules delete psa-github-fr --region=$region -q

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

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

gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q

gcloud compute routers delete $vpc_network-cloud-router --region=$region -q

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

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

gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q

gcloud services peered-dns-domains delete github-com --network=$vpc_network -q

gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q

gcloud dns response-policies update github-com --networks= -q

gcloud dns response-policies delete github-com

14. Félicitations

Félicitations, vous avez correctement configuré et validé la connectivité à GitHub à l'aide de Looker Console.

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

c911c127bffdee57.jpeg

Et ensuite ?

Autres ressources et vidéos

Documents de référence