1. Introduction
Présentation
Dans cet atelier, les utilisateurs découvriront comment Network Connectivity Center (NCC) peut être utilisé pour établir une connectivité sur site à grande échelle grâce à la prise en charge des spokes VPC et de l'échange de routes dynamiques. Lorsque les utilisateurs définissent un VPC en tant que spoke VPC, ils peuvent le connecter à plusieurs réseaux VPC via le hub NCC. Pour établir la connectivité réseau avec le réseau sur site d'un utilisateur, il peut associer une NIC virtuelle d'appareil de routeur, des tunnels HA_VPN ou des rattachements de VLAN Interconnect au même hub NCC que les spokes VPC NCC.
La ressource hub fournit un modèle de gestion de la connectivité centralisée pour interconnecter les spokes.
Objectifs de l'atelier
Dans cet atelier de programmation, vous allez créer une topologie logique en étoile avec le hub NCC qui implémentera une connectivité hybride entre le réseau sur site et un VPC de charge de travail.
Points abordés
- Distinguer un VPC de charge de travail d'un VPC de routage
- Intégration de spokes VPC et hybrides dans NCC
Prérequis
- Connaissances du réseau VPC GCP
- Connaissances du routage Cloud Router et BGP
- Projet Google Cloud
- Vérifiez votre quota:réseaux et demandez des réseaux supplémentaires si nécessaire (capture d'écran ci-dessous) :
Objectifs
- Configurer l'environnement GCP
- Configurer Network Connectivity Center avec un VPC en tant que spoke
- Configurer Network Connectivity Center avec des tunnels HA-VPN en tant que spoke hybride
- Valider le chemin d'accès aux données
- Explorer les fonctionnalités de gestion de la maintenance du NCC
- Nettoyer les ressources utilisées
Avant de commencer
Google Cloud Console et Cloud Shell
Pour interagir avec GCP, nous utiliserons à la fois Google Cloud Console et Cloud Shell tout au long de cet atelier.
Projet NCC Hub Console Google Cloud
La console Cloud est accessible à l'adresse https://console.cloud.google.com.
Configurez les éléments suivants dans Google Cloud pour faciliter la configuration de Network Connectivity Center:
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
Lancez le Cloud Shell. Cet atelier de programmation utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.
gcloud auth list
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=[YOUR-PROJECT-NAME]
echo $projectname
region="us-central1"
zone="us-central1-a"
Rôles IAM
NCC nécessite des rôles IAM pour accéder à des API spécifiques. Veillez à configurer votre utilisateur avec les rôles IAM NCC requis.
Rôle/Description | Autorisations |
networkconnectivity.networkAdmin : permet aux administrateurs réseau de gérer le hub et les spokes. | networkconnectivity.hubs.networkconnectivity.spokes. |
networkconnectivity.networkSpokeManager : permet d'ajouter et de gérer des spokes dans un hub. À utiliser dans un VPC partagé où le projet hôte est propriétaire du hub, mais que d'autres administrateurs d'autres projets peuvent ajouter des spokes pour leurs associations au hub. | networkconnectivity.spokes.** |
networkconnectivity.networkUsernetworkconnectivity.networkViewer : permet aux utilisateurs du réseau d'afficher différents attributs du hub et des spokes. | networkconnectivity.hubs.getnetworkconnectivity.hubs.listnetworkconnectivity.spokes.getnetworkconnectivity.spokes.listnetworkconnectivity.spokes.aggregatedList |
2. Configurer l'environnement réseau
Présentation
Dans cette section, nous allons déployer les trois réseaux VPC et les règles de pare-feu dans un seul projet. Le schéma logique illustre l'environnement réseau qui sera configuré à cette étape. Pour cet atelier de programmation, un VPC sera utilisé pour simuler un réseau sur site.
Concept clé 1
Le VPC global Google Cloud fournit une connectivité de chemin de données entre plus de 44 régions GCP. Cloud Router, un service régional, annonce de manière dynamique les sous-réseaux et propage les routes apprises dans la région dans laquelle le routeur est configuré ou sur l'ensemble du réseau VPC. Le fait que le routeur cloud propage les routes au niveau régional ou mondial dépend de l'utilisateur qui définit le mode de routage dynamique: régional ou mondial.
Dans cette section, nous allons commencer par configurer chaque VPC avec le mode de routage régional. Pour le reste de cet atelier de programmation:
- "VPC de routage" identifie un VPC qui n'est PAS configuré en tant que spoke VPC NCC.
- "VPC de charge de travail" identifie un VPC configuré en tant que spoke NCC.
Créer le VPC de la charge de travail et un sous-réseau
Le réseau VPC contient des sous-réseaux dans lesquels vous allez installer la VM GCE pour la validation du chemin de données.
vpc_spoke_network_name="workload-vpc"
vpc_spoke_subnet_name="workload-subnet"
vpc_spoke_subnet_ip_range="10.0.1.0/24"
vpc_spoke_name="workload-vpc-spoke"
region="us-central1"
zone="us-central1-a"
gcloud compute networks create "${vpc_spoke_network_name}" \
--subnet-mode=custom
gcloud compute networks subnets create "${vpc_spoke_subnet_name}" \
--network="${vpc_spoke_network_name}" \
--range="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
Créer le VPC de routage et un sous-réseau
NCC est compatible avec toutes les plages de sous-réseau IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé.
routing_vpc_network_name="routing-vpc"
routing_vpc_subnet_name="routing-vpc-subnet"
routing_vpc_subnet_range="10.0.2.0/24"
gcloud compute networks create "${routing_vpc_network_name}" \
--subnet-mode=custom
gcloud compute networks subnets create "${routing_vpc_subnet_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--range="${routing_vpc_subnet_range}"
Créer le VPC sur site et un sous-réseau
NCC est compatible avec toutes les plages de sous-réseau IPv4 valides, à l'exception des adresses IP publiques utilisées en mode privé.
on_prem_network_name="on-prem-net-vpc"
on_prem_subnet_name="on-prem-subnet"
on_prem_subnet_range="10.0.3.0/24"
gcloud compute networks create "${on_prem_network_name}" \
--subnet-mode=custom
gcloud compute networks subnets create "${on_prem_subnet_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--range="${on_prem_subnet_range}"
Configurer des règles de pare-feu VPC de charge de travail
workload_vpc_firewall_name="workload-protocol-fw-vpc"
workload_port_firewall_name="workload-port-firewall-vpc"
gcloud compute firewall-rules create "${workload_vpc_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${workload_port_firewall_name}" \
--network=${vpc_spoke_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configurer le routage VPC et les règles de pare-feu VPC
routing_vpc_fw_name="routing-vpc-protocol-fw"
routing_vpc_port_fw_name="routing-vpc--port-fw"
gcloud compute firewall-rules create "${routing_vpc_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${routing_vpc_port_fw_name}" \
--network=${routing_vpc_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configurer un VPC sur site et des règles de pare-feu VPC
prem_protocol_fw_name="onprem-vpc-protocol-firewall"
prem_port_firewall_name="onprem-vpc-port-firewall-prem"
gcloud compute firewall-rules create "${prem_protocol_fw_name}" \
--network=${on_prem_network_name} \
--allow="tcp,udp,icmp"
gcloud compute firewall-rules create "${prem_port_firewall_name}" \
--network=${on_prem_network_name} \
--allow="tcp:22,tcp:3389,tcp:11180,icmp"
Configurer une VM GCE dans chaque VPC
Vous aurez besoin d'un accès Internet temporaire pour installer des packages sur "vm1-vpc1-ncc".
Créez trois machines virtuelles, chacune étant attribuée à l'un des VPC précédemment créés.
gcloud compute instances create vm1-vpc-workload \
--zone us-central1-a \
--subnet="${vpc_spoke_subnet_name}" \
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install apache2 -y
apt-get install tcpdump -y
service apache2 restart
echo "
<h3>Web Server: www-vm1</h3>" | tee /var/www/html/index.html'
gcloud compute instances create vm2-vpc-routing \
--zone us-central1-a \
--subnet="${routing_vpc_subnet_name}" \
--no-address
gcloud compute instances create vm3-onprem \
--zone us-central1-a \
--subnet="${on_prem_subnet_name}" \
--no-address
3. Configurer la connectivité hybride
Dans cette section, nous allons configurer un tunnel VPN haute disponibilité pour connecter les réseaux VPC sur site et de routage.
Configurer un routeur cloud avec BGP dans le VPC de routage
routing_vpc_router_name="routing-vpc-cr"
routing_vpc_router_asn=64525
gcloud compute routers create "${routing_vpc_router_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}" \
--asn="${routing_vpc_router_asn}"
Configurer un routeur cloud avec BGP dans le VPC sur site
on_prem_router_name="on-prem-router"
on_prem_router_asn=64526
gcloud compute routers create "${on_prem_router_name}" \
--region="${region}" \
--network="${on_prem_network_name}" \
--asn="${on_prem_router_asn}"
Configurer une passerelle VPN dans le VPC de routage
routing_vpn_gateway_name="routing-vpc-vpn-gateway"
gcloud compute vpn-gateways create "${routing_vpn_gateway_name}" \
--region="${region}" \
--network="${routing_vpc_network_name}"
Configurer une passerelle VPN dans le VPC sur site
on_prem_gateway_name="on-prem-vpn-gateway"
gcloud compute vpn-gateways create "${on_prem_gateway_name}" \
--region="${region}" \
--network="${on_prem_network_name}"
Configurer un tunnel VPN dans le VPC de routage et le VPC sur site
secret_key=$(openssl rand -base64 24)
routing_vpc_tunnel_name="routing-vpc-tunnel"
on_prem_tunnel_name="on-prem-tunnel"
gcloud compute vpn-tunnels create "${routing_vpc_tunnel_name}" \
--vpn-gateway="${routing_vpn_gateway_name}" \
--peer-gcp-gateway="${on_prem_gateway_name}" \
--router="${routing_vpc_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"
gcloud compute vpn-tunnels create "${on_prem_tunnel_name}" \
--vpn-gateway="${on_prem_gateway_name}" \
--peer-gcp-gateway="${routing_vpn_gateway_name}" \
--router="${on_prem_router_name}" \
--region="${region}" \
--interface=0 \
--shared-secret="${secret_key}"
Créer des sessions BGP pour établir un pair BGP entre le VPC de routage et les routeurs cloud sur site
interface_hub_name="if-hub-to-prem"
hub_router_ip="169.254.1.1"
gcloud compute routers add-interface "${routing_vpc_router_name}" \
--interface-name="${interface_hub_name}" \
--ip-address="${hub_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${routing_vpc_tunnel_name}" \
--region="${region}"
bgp_hub_name="bgp-hub-to-prem"
prem_router_ip="169.254.1.2"
gcloud compute routers add-bgp-peer "${routing_vpc_router_name}" \
--peer-name="${bgp_hub_name}" \
--peer-ip-address="${prem_router_ip}" \
--interface="${interface_hub_name}" \
--peer-asn="${on_prem_router_asn}" \
--region="${region}"
interface_prem_name="if-prem-to-hub"
gcloud compute routers add-interface "${on_prem_router_name}" \
--interface-name="${interface_prem_name}" \
--ip-address="${prem_router_ip}" \
--mask-length=30 \
--vpn-tunnel="${on_prem_tunnel_name}" \
--region="${region}"
bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers add-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--peer-ip-address="${hub_router_ip}" \
--interface="${interface_prem_name}" \
--peer-asn="${routing_vpc_router_asn}" \
--region="${region}"
Par défaut, les sous-réseaux du hub NCC ne sont pas annoncés sur les spokes hybrides. À l'étape suivante, configurez le routeur cloud pour qu'il annonce les routes de sous-réseau NCC au réseau sur site.
Annoncer les sous-réseaux de rayon du VPC au routeur cloud sur site
gcloud compute routers update "${routing_vpc_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--set-advertisement-ranges="${vpc_spoke_subnet_ip_range}" \
--region="${region}"
Annoncer des sous-réseaux sur site au routeur cloud VPC de routage
gcloud compute routers update "${on_prem_router_name}" \
--advertisement-mode custom \
--set-advertisement-groups=all_subnets \
--region="${region}"
Mettez à jour la configuration de l'appairage BGP du routeur cloud sur site pour annoncer des préfixes avec une valeur MED de "111". Dans une section ultérieure, nous observerons le comportement du NCC avec les valeurs BGP Med.
on_prem_router_name="on-prem-router"
bgp_prem_name="bgp-prem-to-hub"
gcloud compute routers update-bgp-peer "${on_prem_router_name}" \
--peer-name="${bgp_prem_name}" \
--advertised-route-priority="111" \
--region="${region}"
Vérifier l'état du tunnel VPC de routage
gcloud compute vpn-tunnels describe routing-vpc-tunnel \
--region=us-central1 \
--format='flattened(status,detailedStatus)'
Vérifier l'état du routeur cloud VPC de routage
Utilisez la commande gcloud pour lister les routes BGP apprises du routeur cloud VPC de routage.
gcloud compute routers get-status routing-vpc-cr \
--region=us-central1
4. Hub Network Connectivity Center
Présentation
Dans cette section, nous allons configurer un hub NCC à l'aide de commandes gcloud. Le hub NCC servira de plan de contrôle chargé de créer la configuration de routage entre chaque spoke VPC.
Activer les services d'API
Activez l'API Network Connectivity si elle n'est pas encore activée:
gcloud services enable networkconnectivity.googleapis.com
Créer un hub NCC
Créer un hub NCC à l'aide de la commande gCloud
hub_name="mesh-hub"
gcloud network-connectivity hubs create "${hub_name}"
Exemple de résultat :
Create request issued for: [mesh-hub]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719930559145-61c448a0426e4-2d18c8dd-7107edbe] to complete...done.
Created hub [mesh-hub].
Décrivez le hub NCC nouvellement créé. Notez le nom et le chemin d'accès associé.
gcloud network-connectivity hubs describe mesh-hub
createTime: '2024-07-02T14:29:19.260054897Z'
exportPsc: false
name: projects/ncc/locations/global/hubs/mesh-hub
policyMode: PRESET
presetTopology: MESH
routeTables:
- projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uniqueId: 08f9ae88-f76f-432b-92b2-357a85fc83aa
updateTime: '2024-07-02T14:29:32.583206925Z'
NCC Hub a introduit une table de routage qui définit le plan de contrôle pour créer une connectivité de données. Trouver le nom de la table de routage du hub NCC
gcloud network-connectivity hubs route-tables list --hub=mesh-hub
NAME HUB DESCRIPTION
default mesh-hub
Recherchez l'URI de la table de routage par défaut du NCC.
gcloud network-connectivity hubs route-tables describe default --hub=mesh-hub
createTime: '2024-07-02T14:29:22.340190411Z'
name: projects/ncc/locations/global/hubs/mesh-hub/routeTables/default
state: ACTIVE
uid: fa2af78b-d416-41aa-b442-b8ebdf84f799
Lister le contenu de la table de routage par défaut du hub NCC Remarque* : La table de routage du hub NCC est vide jusqu'à ce que des spokes hybrides NCC ou des spokes VPC soient définis.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub --route_table=default
La table de routage du hub NCC doit être vide.
5. NCC avec spokes hybrides et VPC
Présentation
Dans cette section, vous allez configurer deux spokes NCC à l'aide de commandes gCloud. L'un des spokes sera un spoke VPC et l'autre un spoke hybride (VPN).
Configurer un ou plusieurs VPC de charge de travail en tant que spoke NCC
Configurez le VPC de la charge de travail en tant que spoke NCC et attribuez-le au hub NCC créé précédemment. Les appels d'API NCC Spoke nécessitent de spécifier un emplacement. L'indicateur "–global" permet à l'utilisateur d'éviter de spécifier un chemin d'URI complet lors de la configuration d'un nouveau rayon NCC.
vpc_spoke_name="workload-vpc-spoke"
vpc_spoke_network_name="workload-vpc"
gcloud network-connectivity spokes linked-vpc-network create "${vpc_spoke_name}" \
--hub="${hub_name}" \
--vpc-network="${vpc_spoke_network_name}" \
--global
Create request issued for: [workload-vpc-spoke]
Waiting for operation [projects/ncc/locations/global/operations/operation-1719931097138-61c44aa15463f-90de22c7-40c10e6b] to complete...done.
Created spoke [workload-vpc-spoke].
createTime: '2024-07-02T14:38:17.315200822Z'
group: projects/ncc/locations/global/hubs/mesh-hub/groups/default
hub: projects/ncc/locations/global/hubs/mesh-hub
linkedVpcNetwork:
uri: https://www.googleapis.com/compute/v1/projects/ncc/global/networks/workload-vpc
name: projects/ncc/locations/global/spokes/workload-vpc-spoke
spokeType: VPC_NETWORK
state: ACTIVE
uniqueId: 33e50612-9b62-4ec7-be6c-962077fd47dc
updateTime: '2024-07-02T14:38:44.196850231Z'
Configurer un tunnel VPN dans le routage VPC en tant que spok hybride
Utilisez cette commande gcloud pour configurer le tunnel VPN en tant que spoke hybride afin de rejoindre le hub de réseau maillé.
vpn_spoke_name="hybrid-spoke"
routing_vpc_tunnel_name="routing-vpc-tunnel"
region="us-central1"
hub_name="mesh-hub"
gcloud network-connectivity spokes linked-vpn-tunnels create "${vpn_spoke_name}" \
--region="${region}" \
--hub="${hub_name}" \
--vpn-tunnels="${routing_vpc_tunnel_name}"
Exemple de résultat
Create request issued for: [hybrid-spoke]
Waiting for operation [projects/ncc/locations/us-central1/operations/operation-1719932916561-61c45168774be-0a06ae03-88192175] to complete...done.
Created spoke [hybrid-spoke].
Vérifier la configuration des branches du hub de réseau maillé
Utilisez la commande gcloud pour lister le contenu de la table de routage par défaut du hub NCC.
gcloud network-connectivity hubs list-spokes mesh-hub
Analyser la table de routage par défaut du hub de réseau maillé
Utilisez la commande gcloud pour lister le contenu de la table de routage par défaut du hub NCC.
gcloud network-connectivity hubs route-tables routes list --hub=mesh-hub \
--route_table=default
Les préfixes appris par le routeur cloud avec des valeurs MED BGP sont propagés sur les spokes du NCC lorsque vous utilisez l'échange de routes dynamique avec des spokes hybrides du NCC.
Utilisez la commande gcloud pour afficher la valeur de priorité de "111".
gcloud network-connectivity hubs route-tables routes list \
--hub=mesh-hub \
--route_table=default \
--effective-location=us-central1 \
--filter=10.0.3.0/24
6. Vérifier le chemin d'accès aux données
À cette étape, nous allons valider le chemin de données entre le NCC hybride et le rayon du VPC.
Utilisez la sortie de ces commandes gcloud pour vous connecter à la VM sur site.
gcloud compute instances list --filter="name=vm3-onprem"
Connectez-vous à l'instance de VM située sur le réseau sur site.
gcloud compute ssh vm3-onprem --zone=us-central1-a
Dans le terminal de vm3-onprem, utilisez la commande curl pour établir une session Web avec la VM hébergée dans workload-vpc.
curl 10.0.1.2 -v
* Trying 10.0.1.2:80...
* Connected to 10.0.1.2 (10.0.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.0.1.2
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Wed, 03 Jul 2024 15:41:34 GMT
< Server: Apache/2.4.59 (Debian)
< Last-Modified: Mon, 01 Jul 2024 20:36:16 GMT
< ETag: "1e-61c358c8272ba"
< Accept-Ranges: bytes
< Content-Length: 30
< Content-Type: text/html
<
<h3>Web Server: www-vm1</h3>
* Connection #0 to host 10.0.1.2 left intact
7. Effectuer un nettoyage
Se connecter à Cloud Shell et supprimer des ressources GCP
Supprimer des spokes NCC
gcloud network-connectivity spokes delete workload-vpc-spoke --global \
--quiet
gcloud network-connectivity spokes delete hybrid-spoke \
--quiet \
--region us-central1
Supprimer le hub NCC
gcloud network-connectivity hubs delete mesh-hub --quiet
Supprimer des règles de pare-feu
gcloud compute firewall-rules delete onprem-vpc-port-firewall-prem onprem-vpc-protocol-firewall routing-vpc--port-fw routing-vpc-protocol-fw workload-port-firewall-vpc workload-protocol-fw-vpc --quiet
Supprimer un tunnel VPN haute disponibilité
gcloud compute vpn-tunnels delete on-prem-tunnel \
--region=us-central1 \
--quiet
gcloud compute vpn-tunnels delete routing-vpc-tunnel \
--region=us-central1 \
--quiet
Supprimer VPN-Gateway
gcloud compute vpn-gateways delete on-prem-vpn-gateway \
--region=us-central1 --quiet
gcloud compute vpn-gateways delete routing-vpc-vpn-gateway \
--region us-central1 --quiet
Supprimer un routeur cloud
gcloud compute routers delete routing-vpc-cr --region us-central1 --quiet
gcloud compute routers delete on-prem-router --region us-central1 --quiet
Supprimer des instances GCE
gcloud compute instances delete vm1-vpc-workload \
--zone=us-central1-a \
--quiet
gcloud compute instances delete vm2-vpc-routing \
--zone=us-central1-a \
--quiet
gcloud compute instances delete vm3-onprem \
--zone=us-central1-a \
--quiet
Supprimer des sous-réseaux VPC
gcloud compute networks subnets delete workload-subnet --region us-central1 --quiet
gcloud compute networks subnets delete on-prem-subnet --region us-central1 --quiet
gcloud compute networks subnets delete routing-vpc-subnet --region us-central1 --quiet
Supprimer un ou plusieurs VPC
gcloud compute networks delete on-prem-net-vpcworkload-vpc routing-vpc
--quiet
8. Félicitations !
Vous avez terminé l'atelier sur l'échange de routes dynamiques dans Network Connectivity Center.
Sujets abordés
- Échange de routes dynamiques avec Network Connectivity Center
Étapes suivantes
© Google, LLC ou ses sociétés affiliées. Tous droits réservés. Ne pas diffuser.