NEG Internet SSH vers le sud de Looker PSC

1. Introduction

Dans cet atelier de programmation, vous allez établir une connexion SSH Sud vers GitHub à l'aide d'un équilibreur de charge proxy TCP interne et d'un groupe de points de terminaison du réseau Internet appelé à partir de 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 inversé, permet au client de créer un service publié en tant que producteur pour permettre à Looker d'accéder aux points de terminaison sur site, dans un VPC, aux services gérés et à Internet. Les connexions Sud peuvent être déployées dans n'importe quelle région, quel que soit l'endroit où Looker PSC est déployé, comme le montre 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
  • Établissez la connectivité à GitHub depuis Looker à l'aide d'une connexion de test

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 le service publié, vous devez 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
  • Utilisez la console Looker pour créer un projet et tester la connectivité SSH à GitHub.com en suivant la procédure Se connecter à Git à l'aide de SSH.

3. Configuration réseau requise

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

Réseau de producteurs

Composants

Description

VPC (looker-psc-demo)

VPC en mode personnalisé

Sous-réseau NAT du PSC

Les paquets provenant du réseau VPC du consommateur sont traduits à l'aide de la NAT source (SNAT), de sorte que leurs adresses IP sources d'origine sont converties en adresses IP sources à partir 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

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

Sous-réseau proxy réservé

Une adresse IP interne est attribuée à chacun des proxys de l'équilibreur de charge. Les paquets envoyés depuis un proxy vers une VM de backend ou un point de terminaison possèdent une adresse IP source issue 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 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

dfa4dd1d681a66da.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 votre ID de 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, effectuez les opérations suivantes:

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 pour la traduction d'adresses 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 autre GW NAT avec –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 :

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 sur lesquels vous pouvez atteindre votre backend externe).

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

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

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

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

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

Dans Cloud Shell, procédez comme suit :

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

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

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

Dans Cloud Shell, effectuez les opérations suivantes:

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 de producteur

Créer des composants d'équilibreur de charge

Dans Cloud Shell, effectuez les opérations suivantes:

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=github-internet-neg-ssh --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-github-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=22

Créer un Rattachement de service

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

gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-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/<id-de-votre-projet>/regions/<votre-région>/serviceAttachments/github-svc-attachment-ssh

Dans Cloud Shell, procédez comme suit :

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

Exemple de résultat attendu

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
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/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

Dans la console Cloud, accédez à:

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

30b1a280966b1f06.png

4eafe698193f5f44.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: githubssh.com
  • SERVICE_ATTACHMENT_1: URI capturé lors de la description du rattachement de service, github-svc-attachment-ssh.
  • 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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

Dans Cloud Shell, vérifiez que l'état de connexion serviceAttachments est "ACCEPTED". Effectuez la mise à jour avec 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 :

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

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

db670bb008ea3fc4.png

10. Tester la connectivité à GitHub

Dans les étapes suivantes, vous allez utiliser la console Looker pour créer un projet permettant de valider la connectivité SSH à GitHub.com en remplaçant le domaine github.com par githubssh.com dans l'interface utilisateur de Looker. Cette action n'est requise que pour les connexions SSH à GitHub.

11. Créer un projet

Activer le mode développement

Dans la console Looker, accédez à:

Activez le mode Développement (en bas à gauche de la page), après avoir sélectionné la bannière "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 un nouveau projet LookML

65a3c2573e97e1e9.png

Attribuez un nom au projet, sélectionnez "Projet vide", puis "Créer un projet".

dbb890960291aa84.png

Sélectionnez "Configurer Git".

42f5e51ce70642ad.png

Configurer Git

3962a1fe7ac8da77.png

Une fois que vous avez sélectionné "Continuer", vous êtes invité à valider l'URL du dépôt et le service d'hébergement Git.

743e5d963cfe6f82.png

Ajoutez la clé de déploiement à votre dépôt GitHub. Assurez-vous d'autoriser l'accès en écriture. Une fois la mise à jour effectuée, sélectionnez "Tester et finaliser la configuration".

4894e0af6421802e.png

Sélectionner les actions Git

e87931dbf7e265f3.png

Sélectionner "Tester la connexion Git"

73d90adf267120af.png

Valider le test de connexion Git

f69bc63b9c595aa1.png

12. Effectuer un nettoyage

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

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

gcloud compute forwarding-rules delete producer-github-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 addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --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é à GitHub à 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 trouve les ateliers de programmation géniaux !

c911c127bffdee57.jpeg

Et ensuite ?

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

Complément d'informations et Vidéos

Documents de référence