Configurer des services en périphérie du réseau avec des groupes de points de terminaison du réseau de connectivité hybride
Google propose divers services de périphérie de réseau qui peuvent améliorer les fonctionnalités et la sécurité des services basés en dehors de Google Cloud (services sur site et multicloud), par exemple dans un centre de données sur site. ou dans un autre cloud public.
Ces services de périphérie de réseau vous permettent d'effectuer les opérations suivantes :
Accepter et acheminer le trafic client externe à l'échelle mondiale avec une adresse IP virtuelle Anycast unique
Réduire la charge du serveur en interrompant le trafic TLS en périphérie avec un équilibreur de charge d'application externe et des certificats SSL gérés par Google.
Activez les règles de pare-feu d'application Web (WAF, Web Application Firewall) préconfigurées, et appliquez les listes d'autorisation et les listes de blocage au trafic entrant avec Google Cloud Armor.
Contrôler l'accès des utilisateurs à vos applications et ressources avec Identity-Aware Proxy.
Optimiser la diffusion de contenu et la latence côté utilisateur avec Cloud CDN
Pour bénéficier de ces avantages sur vos services privés, sur site ou multicloud, vous devez déployer un équilibreur de charge d'application externe afin de recevoir du trafic provenant de l'Internet public. L'équilibreur de charge d'application externe transfère le trafic vers un proxy intermédiaire configuré par Cloud Service Mesh. Ce proxy intermédiaire achemine le trafic vers votre environnement sur site ou autre que Google Cloud à l'aide de Cloud VPN ou de Cloud Interconnect.
Ce tutoriel présente un exemple de bout en bout qui utilise Google Cloud Armor en périphérie de Google pour autoriser de manière sélective les clients à accéder de manière privée à un service sur site. Les clients sont autorisés à accéder à l'application en fonction de leur adresse IP.
Effectuez les tâches suivantes :
- Déployer Envoy en tant que proxy intermédiaire dans un groupe d'instances géré Ce proxy Envoy est automatiquement connecté à Cloud Service Mesh.
- Créer une instance de machine virtuelle (VM) privée sur site simulée En réalité, vous possédez probablement déjà une VM sur site.
- Configurez Cloud Service Mesh pour acheminer toutes les requêtes atteignant le proxy intermédiaire vers la VM simulée sur site.
- Créez un équilibreur de charge d'application externe pour recevoir le trafic provenant du réseau Internet public et le transférer vers le proxy intermédiaire.
- Associez une stratégie de sécurité Google Cloud Armor à l'équilibreur de charge d'application externe.
Une fois ces tâches terminées, vous pouvez éventuellement explorer d'autres services périphériques et des fonctionnalités avancées de gestion du trafic.
Prérequis
Avant de configurer votre proxy intermédiaire, effectuez les tâches suivantes :
Consultez la page Préparer la configuration de Cloud Service Mesh avec Envoy et effectuez toutes les tâches préalables, y compris accorder les autorisations et les rôles requis et activer l'API Cloud Service Mesh.
Vérifiez que vos points de terminaison privés sur site sont accessibles depuis votre réseau de cloud privé virtuel (VPC) Google Cloud via Cloud VPN ou Cloud Interconnect. L'exemple utilisé dans ce tutoriel achemine uniquement le trafic vers un point de terminaison dans Google Cloud. Vous n'avez donc pas besoin de configurer une connectivité hybride pour continuer. Dans un scénario de déploiement réel, la configuration de la connectivité hybride devrait être nécessaire.
Assurez-vous que les plages CIDR de votre sous-réseau VPC n'entrent pas en conflit avec vos plages CIDR distantes. Lorsque les adresses IP se chevauchent, les routes de sous-réseau sont prioritaires sur la connectivité à distance.
Pour cette démonstration, obtenez les autorisations nécessaires pour créer et mettre à jour des règles de sécurité Google Cloud Armor. Les autorisations peuvent varier si vous souhaitez utiliser un service différent, tel que Cloud CDN.
Déployer le proxy intermédiaire sur les VM Compute Engine
Cette section décrit comment déployer Envoy en tant que proxy intermédiaire sur Compute Engine pour recevoir le trafic de l'équilibreur de charge externe et le transférer vers votre destination distante.
Créer le modèle d'instance pour le proxy intermédiaire
Un modèle d'instance spécifie la configuration des VM dans un groupe d'instances géré (MIG).
Utilisez le modèle suivant pour créer des instances de VM avec un proxy Envoy connecté à Cloud Service Mesh:
gcloud compute instance-templates create td-middle-proxy \ --service-proxy=enabled \ --tags=allow-hc
Pour personnaliser votre déploiement Envoy, par exemple en spécifiant le nom du réseau, en définissant un chemin d'accès au journal ou en activant le traçage, consultez le guide des options de déploiement automatisé d'Envoy.
Créer le MIG du proxy intermédiaire
Créez le MIG à partir du modèle. Dans cet exemple, vous pouvez conserver la taille du groupe d'instances correspondant à 1 pour déployer une seule instance. Pour l'utilisation en production, activez l'autoscaling, par exemple basé sur l'utilisation du processeur, afin d'éviter de créer un goulot d'étranglement si votre proxy intermédiaire a besoin de gérer une grande quantité de trafic.
gcloud compute instance-groups managed create td-middle-proxy-us-central1-a \ --zone=us-central1-a \ --template=td-middle-proxy \ --size=1
Pour les configurations et la vérification ultérieures, identifiez et stockez l'adresse IP interne de l'instance dans
MIDDLE_PROXY_IP
:MIDDLE_PROXY_IP=$(gcloud compute instances list \ --filter="name~'td-middle-proxy-us-central1-a-.*'" \ --zones=us-central1-a \ --format="value(networkInterfaces.networkIP)")
Dans cet exemple, nous créons le MIG contenant les instances de VM exécutant Envoy dans us-central1-a
. Plus loin dans ce tutoriel, vous créerez un équilibreur de charge externe pour gérer le trafic Internet public provenant de vos clients.
Étant donné que l'équilibreur de charge externe peut acheminer automatiquement le trafic vers la région la plus proche de vos clients et vers le groupe d'instances géré de cette région, vous pouvez envisager de créer plusieurs MIG. Pour obtenir la liste complète des régions et des zones disponibles dans Google Cloud, consultez la page Régions et zones.
Déployer le service sur site simulé
Cette section décrit le déploiement d'un groupe de points de terminaison du réseau de connectivité hybride (NEG). Dans un déploiement en production, ce NEG contient un point de terminaison (IP:port
) qui renvoie vers votre serveur sur site. Dans cet exemple, vous créez une VM Compute Engine accessible sur un IP:port
. Cette VM agit en tant que serveur sur site simulé.
Créer la VM sur site de simulation
Déployez une seule instance de VM pour simuler un serveur privé sur site.
gcloud compute instances create on-prem-vm \ --zone=us-central1-a \ --metadata startup-script='#! /bin/bash ## Installs apache and a custom homepage sudo su - apt-get update apt-get install -y apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello world from on-premises!</h1></body></html> EOF'
Identifiez et stockez son adresse IP interne pour des configurations et des vérifications futures. Le serveur de cette VM écoute les requêtes entrantes sur le port
80
:ON_PREM_IP=$(gcloud compute instances describe on-prem-vm \ --zone=us-central1-a \ --format="value(networkInterfaces.networkIP)" | sed "s/['\[\]]*//g")
Créer le groupe de points de terminaison du réseau
Créez le NEG pour cette configuration de démonstration en spécifiant le type de point de terminaison du réseau non-gcp-private-ip-port
. Ajoutez l'adresse IP et le port de votre VM sur site simulée comme point de terminaison à ce NEG. À la suite de l'étape précédente, l'adresse IP est stockée dans la variable d'environnement ON_PREM_IP
.
Créez le NEG :
gcloud compute network-endpoint-groups create td-on-prem-neg \ --network-endpoint-type=non-gcp-private-ip-port \ --zone=us-central1-a
Ajoutez
IP:port
à votre nouveau NEG :gcloud compute network-endpoint-groups update td-on-prem-neg \ --zone=us-central1-a \ --add-endpoint="ip=$ON_PREM_IP,port=80"
Configurer Cloud Service Mesh avec des composants Cloud Load Balancing
Cette section explique comment configurer Cloud Service Mesh et permettre à votre proxy intermédiaire de transférer le trafic vers votre service privé sur site. Vous configurez les composants suivants :
Une vérification de l'état Cette vérification de l'état se comporte légèrement différemment des vérifications d'état configurées pour d'autres types de NEG.
Un service de backend Pour en savoir plus, consultez la page Comprendre les services de backend.
Une carte des règles de routage. Cela inclut la création d'une règle de transfert, d'un proxy cible et d'un mappage d'URL. Pour plus d'informations, consultez la page sur les cartes des règles de routage.
Créer la vérification de l'état
Les vérifications de l'état vérifient que vos points de terminaison sont opérationnels et qu'ils peuvent recevoir des requêtes. La vérification de l'état de ce type de NEG repose sur le mécanisme de vérification de l'état distribué de Envoy.
D'autres types de NEG utilisent le système de vérification d'état centralisé de Google Cloud :
gcloud compute health-checks create http td-on-prem-health-check
Créez le service de backend :
Créez un service de backend avec le schéma d'équilibrage de charge
INTERNAL_SELF_MANAGED
à utiliser avec Cloud Service Mesh. Lorsque vous créez ce service de backend, spécifiez la vérification d'état que vous avez créée précédemment :gcloud compute backend-services create td-on-prem-backend-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --health-checks=td-on-prem-health-check
Ajoutez le NEG que vous avez créé précédemment en tant que backend de ce service de backend.
gcloud compute backend-services add-backend td-on-prem-backend-service \ --global \ --network-endpoint-group=td-on-prem-neg \ --network-endpoint-group-zone=us-central1-a \ --balancing-mode=RATE \ --max-rate-per-endpoint=5
Créer la carte des règles de routage
La carte des règles de routage définit la manière dont Cloud Service Mesh achemine le trafic vers votre service de backend.
Créez un mappage d'URL qui utilise le service de backend défini ci-dessus.
gcloud compute url-maps create td-hybrid-url-map \ --default-service=td-on-prem-backend-service
Créez un fichier nommé
target_proxy.yaml
avec le contenu suivant :name: td-hybrid-proxy proxyBind: true urlMap: global/urlMaps/td-hybrid-url-map
Exécutez la commande
import
pour créer le proxy HTTP cible (pour en savoir plus, consultez la section sur les proxys cibles pour Cloud Service Mesh):gcloud compute target-http-proxies import td-hybrid-proxy \ --source=target_proxy.yaml
Créez une règle de transfert qui fait référence à ce proxy HTTP cible. Définissez l'adresse IP de la règle de transfert sur
0.0.0.0
. La définition de l'adresse IP de la règle sur0.0.0.0
achemine le trafic en fonction du port entrant, du nom d'hôte HTTP et des informations de chemin configurées dans le mappage d'URL. L'adresse IP spécifiée dans la requête HTTP est ignorée.gcloud compute forwarding-rules create td-hybrid-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=0.0.0.0 \ --target-http-proxy=td-hybrid-proxy \ --ports=8080 \ --network=default
Vérifier que le proxy intermédiaire peut acheminer les requêtes vers le service sur site simulé
Cloud Service Mesh est désormais configuré pour acheminer le trafic via le proxy intermédiaire vers votre service privé sur site simulé. Vous pouvez vérifier cette configuration en créant une VM cliente de test, en vous connectant à cette VM et en envoyant une requête au proxy intermédiaire qui exécute Envoy. Après avoir vérifié la configuration, supprimez la VM cliente de test.
Commencez par obtenir l'adresse IP du proxy intermédiaire. Vous n'avez besoin que de ces informations pour l'étape de validation :
gcloud compute instances list
Notez l'adresse IP de l'instance du groupe d'instances géré
td-middle-proxy-us-central1-a
.Créez une instance de client de test :
gcloud compute instances create test-client \ --zone=us-central1-a
Utilisez
ssh
pour vous connecter au client de test:gcloud compute ssh test-client --zone=us-central1-a
Envoyez une requête à la VM de proxy intermédiaire en remplaçant l'adresse IP que vous avez obtenue précédemment pour
MIDDLE_PROXY_IP
:curl $MIDDLE_PROXY_IP:8080
Vous devriez obtenir le résultat suivant :
Hello world from on-premises!
Quittez la VM cliente de test. Après avoir quitté la VM, vous pouvez la supprimer :
gcloud compute instances delete test-client \ --zone=us-central1-a
Déployer l'équilibreur de charge d'application externe
Dans cette section, vous allez déployer un équilibreur de charge d'application externe qui envoie le trafic entrant vers le proxy intermédiaire. Il s'agit d'une configuration standard de l'équilibreur de charge d'application externe.
Réserver une adresse IP externe
Créer une adresse IP externe statique globale (external-lb-vip
) vers laquelle les clients externes envoient le trafic Vous récupérerez cette adresse IP externe lors de l'étape de validation plus loin dans ce tutoriel.
gcloud compute addresses create external-lb-vip \ --ip-version=IPV4 \ --global
Configurer l'équilibreur de charge HTTP externe
Configurez l'équilibreur de charge externe pour acheminer le trafic Internet vers votre proxy intermédiaire déjà configuré.
Créez une vérification d'état permettant de déterminer si le MIG qui exécute le proxy intermédiaire est opérationnel et peut recevoir du trafic :
gcloud compute health-checks create tcp tcp-basic-check \ --port=8080
Créez une règle de pare-feu pour autoriser la vérification de l'état. Utilisez à nouveau le tag
allow-hc
pour appliquer la règle de pare-feu aux VM de proxy intermédiaire :gcloud compute firewall-rules create fw-allow-health-checks \ --network=default \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-hc \ --rules=tcp
Créez un service de backend :
gcloud compute backend-services create td-middle-proxy-backend-service \ --protocol=HTTP \ --health-checks=tcp-basic-check \ --global
Ajoutez le MIG du proxy intermédiaire en tant que backend à ce service de backend :
gcloud compute backend-services add-backend td-middle-proxy-backend-service \ --instance-group=td-middle-proxy-us-central1-a \ --instance-group-zone=us-central1-a \ --global
Créez un mappage d'URL pour acheminer les requêtes entrantes vers le proxy intermédiaire en tant que service de backend par défaut.
gcloud compute url-maps create lb-map-http \ --default-service=td-middle-proxy-backend-service
Créez un proxy HTTP cible de sorte que les requêtes adressées à l'adresse IP virtuelle (VIP) de la règle de transfert de l'équilibreur de charge externe soient traitées en fonction du mappage d'URL :
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map-http
Créez une règle de transfert globale pour acheminer les requêtes entrantes vers le proxy HTTP cible.
gcloud compute forwarding-rules create http-forwarding-rule \ --address=external-lb-vip\ --global \ --load-balancing-scheme=EXTERNAL \ --target-http-proxy=http-lb-proxy \ --ports=80
Définir le port nommé du MIG
Définissez un port nommé pour le groupe d'instances pour permettre à votre proxy intermédiaire de recevoir le trafic HTTP de l'équilibreur de charge externe.
gcloud compute instance-groups managed set-named-ports td-middle-proxy-us-central1-a \ --named-ports=http:8080 \ --zone=us-central1-a
Vérifier la configuration de l'équilibreur de charge d'application externe
Au cours de cette étape, vous allez vérifier que l'équilibreur de charge externe est correctement configuré.
Vous devriez pouvoir envoyer une requête à l'adresse IP virtuelle de l'équilibreur de charge et obtenir une réponse de la VM virtuelle sur site simulée.
PUBLIC_VIP=gcloud compute addresses describe external-lb-vip \ --format="get(address)" \ --global
Envoyez une requête
curl
à l'adresse IP externe (PUBLIC_VIP
) et vérifiez que vous recevez le messageHello world
:curl $PUBLIC_VIP
Le résultat suivant s'affiche :
Hello world from on-premises!
Activer Google Cloud Armor
Configurez les règles de sécurité Google Cloud Armor pour n'autoriser l'accès à votre service qu'à partir de CLIENT_IP_RANGE
, qui doit inclure l'adresse IP externe de l'appareil client avec lequel vous souhaitez effectuer des tests, par exemple, "192.0.2.0/24"
.
Ces règles sont appliquées au service de backend de l'équilibreur de charge externe (dans cet exemple, td-hybrid-backend-service
pointant vers le proxy intermédiaire). Pour en savoir plus sur les autorisations requises pour définir ces règles, consultez la section Configurer les règles de sécurité Google Cloud Armor.
Créez la stratégie de sécurité de Google Cloud Armor.
gcloud compute security-policies create external-clients-policy \ --description="policy for external clients"
Mettez à jour la règle par défaut de la règle de sécurité pour refuser tout le trafic.
gcloud compute security-policies rules update 2147483647 \ --security-policy=external-clients-policy \ --action="deny-404"
Ajoutez une règle de priorité plus élevée pour autoriser le trafic provenant d'une plage d'adresses IP spécifique.
gcloud compute security-policies rules create 1000 \ --security-policy=external-clients-policy \ --description="allow traffic from CLIENT_IP_RANGE" \ --src-ip-ranges="CLIENT_IP_RANGE" \ --action="allow"
Associez les règles de sécurité Google Cloud Armor à votre service de backend.
gcloud compute backend-services update td-middle-proxy-backend-service \ --security-policy=external-clients-policy
Validation finale
Envoyez une requête
curl
à l'adresse IP virtuelle publique de l'équilibreur de charge d'application externe. Si l'adresse IP de votre appareil client est comprise dans laCLIENT_IP_RANGE
autorisée spécifiée précédemment, vous devriez recevoir la réponse attendue.curl $PUBLIC_VIP
Le résultat suivant s'affiche :
Hello world from on-premises!
Envoyez la même requête
curl
à partir d'un autre appareil client dont l'adresse IP ne fait pas partie deCLIENT_IP_RANGE
, ou mettez simplement à jour votre règle de sécurité pour ne plus inclure votre adresse IP client. Vous devriez maintenant recevoir une erreur404 Not Found
.
Dépannage
Les instructions suivantes expliquent comment résoudre les problèmes de configuration.
Mon service sur site n'est pas accessible via l'adresse IP de l'équilibreur de charge d'application externe global
Si votre service sur site est déjà accessible sur les VM Google Cloud sur lesquelles les Envoys s'exécutent, procédez comme suit pour résoudre les problèmes de configuration:
Assurez-vous que le groupe d'instances géré Google Cloud Envoy est signalé comme étant opérationnel. Dans Google Cloud Console, accédez à Services réseau > Équilibrage de charge, puis cliquez sur
url-map lb-map-http
pour afficher les détails. Vous devriez voir 1/1 de l'instance danstd-middle-proxy-us-central1-a
comme étant opérationnelle.Si ce n'est pas le cas, vérifiez si une règle de pare-feu a été configurée pour autoriser le trafic de vérification de l'état entrant vers les VM Google Cloud qui exécutent Envoy:
gcloud compute firewall-rules describe fw-allow-health-check
Vous devriez obtenir le résultat suivant :
allowed: ‑ IPProtocol: tcp ... direction: INGRESS disabled: false ... ... sourceRanges: ‑ 130.211.0.0/22 ‑ 35.191.0.0/16 targetTags: ‑ allow-hc
Étape suivante
Pour trouver des règles de routage plus complexes pour vos services sur site ou multicloud, consultez les fonctionnalités de gestion avancée du trafic de Cloud Service Mesh.
Pour déployer Cloud Service Mesh, consultez la présentation du guide de configuration.
Pour activer des services de périphérie de réseau supplémentaires, consultez les guides suivants :