Modèles de réseau Southbound

Cette page s'applique à Apigee, mais pas à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Ce document explique comment utiliser Private Service Connect (PSC) pour créer une connexion privée entre Apigee et des services cibles de backend. Par défaut, vous pouvez accéder aux points de terminaison cibles dans le monde entier. Notez que le trafic du proxy d'API qui circule entre Apigee et un service cible de backend est appelé trafic "Southbound".

Les étapes de configuration de la mise en réseau Southbound décrites dans ce document s'appliquent aux instances Apigee avec appairage de VPC et aux instances Apigee avec appairage non-VPC. Notez cependant que l'appairage DNS privé n'est disponible que pour les instances Apigee avec appairage de VPC.

Connecter Apigee de manière privée à des cibles de backend

Pour connecter Apigee de manière privée à une cible de backend, vous devez créer deux entités : un rattachement de service sur le réseau VPC où la cible est déployée et un rattachement de point de terminaison dans le VPC Apigee. Ces deux entités permettent à Apigee de se connecter au service cible.

La figure 1 illustre l'architecture réseau Apigee compatible avec l'accès mondial pour les connexions Southbound dans plusieurs régions :

Figure 1 : Architecture de mise en réseau Southbound Apigee.

Limites

Dans une organisation Apigee, un rattachement de point de terminaison est autorisé pour un rattachement de service donné. Par exemple, supposons que vous ayez 10 rattachements de service qui exposent les services cibles. Vous pouvez créer 10 rattachements de point de terminaison dans votre organisation Apigee, un pour chaque rattachement de service.

Exemple : Exposer un service cible à Apigee

Cet exemple montre comment utiliser PSC pour permettre à Apigee de communiquer avec un service cible s'exécutant sur un réseau VPC qui n'est pas directement appairé à Apigee. Les étapes de cet exemple utilisent gcloud et les appels d'API Apigee pour configurer un rattachement de service dans le réseau VPC où la cible est déployée et un rattachement de point de terminaison dans le VPC Apigee.

Exemple de scénario

Cet exemple prend en compte un serveur Web Apache déployé sur un groupe d'instances géré (MIG) exécuté dans votre VPC. Pour pouvoir communiquer avec Apigee dans ce contexte, nous allons exposer les services via une passerelle d'entrée.

Configurer un équilibreur de charge

Configurez un équilibreur de charge dans votre VPC où se trouvent les microservices que vous souhaitez exposer :

  1. Créez les variables d'environnement suivantes :
    export PROJECT_ID=YOUR_PROJECT_ID
    export IMAGE_PROJECT=debian-cloud
    export IMAGE_FAMILY=debian-10
    export BACKEND=foo
    export REGION=us-west1
    export ZONE=us-west1-a
    export NETWORK=default
    export SUBNET_NAME=default
  2. Créez un modèle d'instance :
    gcloud compute instance-templates create "$BACKEND" \
        --tags=psc-demo,http-server,https-server \
        --image-family "$IMAGE_FAMILY" --image-project "$IMAGE_PROJECT" \
        --network "$NETWORK" --subnet "$SUBNET_NAME" --region "$REGION" \
        --project "$PROJECT_ID" \
        --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>foo[/]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
        sudo mkdir /var/www/html/foo
        echo '<!doctype html><html><body><h1>foo[/foo]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/foo/index.html"
  3. Créez un groupe d'instances géré :
    gcloud compute instance-groups managed create $BACKEND \
        --project $PROJECT_ID --base-instance-name $BACKEND \
        --size 1 --template $BACKEND --region $REGION
  4. Créez une vérification d'état :
    gcloud compute instance-groups managed set-named-ports $BACKEND \
        --project $PROJECT_ID --region $REGION --named-ports http:80
    gcloud compute health-checks create tcp hc-tcp-$BACKEND \
      --region=$REGION \
      --description="health check for psc backend" \
      --port-name=http --project=$PROJECT_ID
  5. Créer un équilibreur de charge :
    1. Créez un service de backend :
      gcloud compute backend-services create be-ilb \
          --load-balancing-scheme=internal \
          --protocol=tcp \
          --region=$REGION \
          --network=$NETWORK \
          --health-checks=hc-tcp-$BACKEND \
          --health-checks-region=$REGION \
          --project=$PROJECT_ID
    2. Ajoutez un groupe d'instances géré au service de backend :
      gcloud compute backend-services add-backend be-ilb \
          --region=$REGION \
          --instance-group=$BACKEND \
          --instance-group-zone=$ZONE \
          --project=$PROJECT_ID
      
    3. Créez une règle de transfert :
      gcloud compute forwarding-rules create fr-ilb \
          --region=$REGION \
          --load-balancing-scheme=internal \
          --network=$NETWORK \
          --subnet=$SUBNET_NAME \
          --ip-protocol=TCP \
          --ports=80 \
          --backend-service=be-ilb \
          --backend-service-region=$REGION \
          --project=$PROJECT_ID

Créer un rattachement de service

Créez un rattachement de service PSC dans le réseau VPC sur lequel les services cibles sont déployés.

  1. Pour effectuer cette tâche, vous disposez de l'autorisation compute.subnetworks.create ou du rôle IAM Administrateur de réseaux Compute (roles/compute.networkAdmin).
  2. Créez un sous-réseau PSC avec le paramètre purpose défini sur PRIVATE_SERVICE_CONNECT :
    gcloud compute networks subnets create PSC_SUBNET_NAME \
      --network NETWORK --region=REGION --purpose=PRIVATE_SERVICE_CONNECT --range=RANGE
    gcloud compute --project=$PROJECT_ID firewall-rules create allow-psc-nat-80 \
      --direction=INGRESS --priority=1000 --network NETWORK --action=ALLOW --rules=tcp:80
      --source-ranges=RANGE --target-tags=psc-demo

    Pour obtenir une description détaillée des paramètres de la commande, consultez la documentation de référence de Google Cloud CLI. Vous pouvez également effectuer cette étape dans la console ou avec une API.

    Exemple :

    gcloud compute networks subnets create psc-subnet --network default \
    --region=us-west1 --purpose=PRIVATE_SERVICE_CONNECT --range=10.100.0.0/28
  3. Créez un rattachement de service dans votre réseau VPC :
    1. Obtenez la règle de transfert de l'équilibreur de charge interne. Vous utiliserez cette règle dans une prochaine étape :
      gcloud compute forwarding-rules list --project=PROJECT_ID

      PROJECT_ID est un ID de projet Google Cloud. Exemple :

      gcloud compute forwarding-rules list --project=my-project
      NAME                                                  REGION    IP_ADDRESS    IP_PROTOCOL  TARGET
      k8s2-tcp-e61tta3j-apps-istio-ingressgateway-0kl92frk  us-west1  10.138.0.53   TCP
      
    2. Créez le rattachement de service :
      gcloud compute service-attachments create PSC_NAME \
          --region=REGION --producer-forwarding-rule=PRODUCER_FORWARDING_RULE \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=PSC_SUBNET_NAME --project=PROJECT_ID

      Le paramètre NAME doit comporter entre 1 et 63 caractères, et ne peut contenir que des lettres minuscules, des chiffres et des traits d'union. Il ne peut pas commencer par des chiffres et des traits d'union. De plus, il ne peut pas se terminer par des traits d'union. Pour obtenir une description détaillée des paramètres de cette commande, consultez la documentation de référence de Google Cloud CLI.

      Exemple :

      gcloud compute service-attachments create gkebackend \
          --region=us-west1 --producer-forwarding-rule=k8s2-tcp-e62tta1j-apps-istio-ingressgateway-0kl92frk \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-subnet --project=my-project

      Vous pouvez également effectuer cette étape dans l'interface utilisateur de la console. Consultez par exemple la section Publier un service avec approbation automatique du projet.

Créer un rattachement de point de terminaison

Créez un rattachement de point de terminaison dans l'organisation Apigee. Vous pouvez effectuer cette étape depuis la ligne de commande ou l'interface utilisateur du rattachement de point de terminaison Apigee.

Conditions préalables : avant de créer un rattachement de point de terminaison, vous devez publier les services que vous souhaitez exposer à l'aide de Private Service Connect (PSC) en créant un équilibreur de charge et un rattachement de service, comme expliqué précédemment dans cet exemple. Pour en savoir plus sur la publication de services avec PSC, consultez la page Publier des services gérés à l'aide de Private Service Connect. Notez que le rattachement de service doit être configuré pour accepter les nouvelles connexions.

Command line

Créez un rattachement de point de terminaison dans le VPC Apigee à partir de la ligne de commande :

  1. Obtenez la ressource de rattachement de service :
    gcloud compute service-attachments list

    La commande renvoie les informations du rattachement de service. Vous utiliserez ces informations à l'étape suivante. Exemple :

    NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
    gkebackend us-west1 k8s2-tcp-tgysilgj-apps-istio-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
  2. Obtenez le jeton d'authentification pour l'API Apigee :
    TOKEN="$(gcloud auth print-access-token)"
  3. Utilisez l'API Apigee pour créer le rattachement de point de terminaison. Utilisez les valeurs renvoyées par la commande gcloud compute service-attachments list dans le corps de la requête :
    curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments?endpointAttachmentId=EA_NAME" \
    -d '{
        "location": "REGION",
        "serviceAttachment": "projects/PROJECT_ID/regions/REGION/serviceAttachments/SA_NAME"
    }'

    Où :

    • REGION correspond à la région du rattachement de service. Par exemple : us-west1
    • ORGANIZATION est le nom de votre organisation Apigee.
    • PROJECT_ID correspond au projet Google Cloud dans lequel le rattachement de service a été créé.
    • EA_NAME correspond au nom du rattachement de point de terminaison. Le nom doit être unique. Vous ne pouvez pas spécifier d'autres rattachements de point de terminaison portant le même nom, et vous ne pourrez pas le modifier par la suite. Le nom doit commencer par une lettre minuscule suivie d'un maximum de 31 caractères (lettres minuscules, chiffres ou traits d'union), mais ne peut pas se terminer par un trait d'union. La longueur minimale est de 2.
    • SA_NAME est le nom du rattachement de service.

    Apigee démarre une opération de longue durée. Une fois l'opération terminée, vous obtenez une réponse semblable à celle-ci :

    {
      "name": "organizations/my-organization/operations/6e249895-e78e-48f0-a28f-7140e15e1676",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/my-organization/endpointAttachments/gkebackend",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.EndpointAttachment",
        "name": "organizations/my-organization/endpointAttachments/gkebackend",
        "location": "us-west1",
        "host": "7.0.3.4",
        "serviceAttachment": "projects/my-project/regions/us-west1/serviceAttachments/gkebackend"
      }
    }

    Vous pouvez maintenant utiliser l'adresse IP 7.0.3.4 renvoyée dans la réponse pour vous connecter aux services derrière le rattachement de service, comme indiqué à l'étape suivante. Notez que 7.0.3.4 est une adresse IP publique (PUPI) utilisée de manière privée et attribuée par Apigee à la passerelle d'entrée. Elle n'est pas annoncée sur Internet, et aucun service Google n'utilise d'adresses IP de cette plage en interne.

  4. Utilisez l'adresse IP de l'hôte du rattachement de service comme cible d'un proxy d'API. Exemple :
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.3.4/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Interface utilisateur d'Apigee

Créez un rattachement de point de terminaison dans l'organisation Apigee de l'interface utilisateur d'Apigee :

  1. Dans l'interface utilisateur Apigee, accédez à Administrateur > Rattachements aux points de terminaison.
  2. Cliquez sur + Rattachement de point de terminaison. La boîte de dialogue "Rattachement de point de terminaison" s'affiche.
  3. Saisissez un nom pour le point de terminaison. Le nom doit être unique. Vous ne pouvez pas spécifier d'autres rattachements de point de terminaison portant le même nom, et vous ne pourrez pas le modifier par la suite. Le nom doit commencer par une lettre minuscule suivie d'un maximum de 31 caractères (lettres minuscules, chiffres ou traits d'union), mais ne peut pas se terminer par un trait d'union. La longueur minimale est de 2.
  4. Cliquez sur Suivant.
  5. Dans la liste déroulante Rattachement de service, choisissez le rattachement de service auquel vous souhaitez vous connecter.

    Le comportement de l'interface utilisateur dépend de vos autorisations. Si vous êtes autorisé à répertorier les régions et les rattachements de service, il vous suffit de sélectionner votre rattachement de service dans la liste déroulante. Si vous ne disposez pas des autorisations nécessaires pour répertorier les régions, une liste statique de régions s'affiche et vous pouvez en sélectionner une dans la liste. Si vous n'êtes pas autorisé à répertorier les rattachements de service, vous devez saisir le nom manuellement. localisé et le nom du rattachement de service. Notez que si vous ne disposez pas des autorisations nécessaires pour répertorier les régions, une liste statique de régions s'affiche.

    Emplacement de l'ID de projet Apigee nécessaire à la configuration du rattachement de service

  6. Vérifiez que le point de terminaison du service peut accepter les connexions. Pour connaître la procédure à suivre, consultez la section Vérifier et gérer la connectivité des rattachements.
  7. Cliquez sur Suivant.
  8. Cliquez sur Create (Créer). L'opération prend généralement une à deux minutes.
  9. Pour vérifier l'état de création actuel, cliquez sur Actualiser dans la page de la liste.
  10. Utilisez l'adresse IP de l'hôte du rattachement de service comme cible d'un proxy d'API. L'adresse IP de l'hôte apparaît dans l'interface utilisateur des points de terminaison des rattachements à la fin du processus de création, comme indiqué dans la capture d'écran suivante :

    L'adresse IP de l'hôte du rattachement de service est affichée dans l'interface utilisateur du rattachement de point de terminaison.

    Exemple :
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.5.2/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Vérifier et gérer la connectivité des rattachements

Cette section explique comment vérifier qu'un rattachement de service peut accéder à un rattachement de point de terminaison dans votre projet Apigee et comment modifier la préférence de connexion le cas échéant.

  1. Suivez les étapes de la section Répertorier les services publiés pour afficher la liste des rattachements de service dans votre projet.
  2. Sélectionnez le rattachement de service auquel vous souhaitez vous connecter, comme expliqué dans la section Afficher les détails d'un service publié.
  3. Choisissez une préférence de connexion pour le rattachement de service que vous avez publié. Private Service Connect propose deux options décrites ci-dessous. Si vous souhaitez modifier les préférences de connexion actuelles, suivez les étapes décrites dans la section Modifier les préférences de connexion d'un service publié.
    • Accepter automatiquement toutes les connexions : le rattachement de service accepte les rattachements de point de terminaison de n'importe quel projet. Si vous choisissez cette option, le rattachement de service pourra accepter une connexion à partir d'un rattachement de point de terminaison dans le projet Apigee. Aucune configuration supplémentaire n'est requise.
    • Accepter les connexions à partir de projets sélectionnés : vous spécifiez les projets à partir desquels le rattachement de service accepte les connexions. Si vous choisissez cette option, vous devez ajouter l'ID du projet Apigee au rattachement de service. Vous pouvez trouver l'ID du projet Apigee à l'étape Vérifier la connexion au projet dans l'interface utilisateur du rattachement de point de terminaison, comme illustré dans cette capture d'écran :

      Emplacement de l'ID de projet Apigee nécessaire à la configuration du rattachement de service

      Vous pouvez également récupérer l'ID de projet Apigee à l'aide de l'API Apigee Organizations, qui renvoie l'ID dans un champ nommé apigeeProjectId.

  4. Si vous avez modifié les préférences de connexion, enregistrez vos modifications.
  5. Dans l'interface utilisateur Apigee, accédez à Administrateur > Rattachements aux points de terminaison. Vous pouvez également lister les rattachements de points de terminaison à l'aide de l'API Apigee Endpoints.
  6. Dans la liste des rattachements, vérifiez que l'état de la connexion PSC est maintenant ACCEPTED. Si le champ affiche un état autre que ACCEPTED, consultez la section Résoudre les problèmes de connexion PSC.

Gérer les rattachements de points de terminaison

L'API endpointAttachments d'Apigee fournit des méthodes pour créer, supprimer, obtenir et répertorier les rattachements de points de terminaison.

Répertorier les rattachements de point de terminaison

Vous pouvez afficher la liste des rattachements de points de terminaison dans l'interface utilisateur des rattachements de points de terminaison Apigee ou en appelant l'API Apigee Endpoints.

Pour répertorier les rattachements de points de terminaison dans l'UI Apigee, procédez comme suit :

  1. Dans l'interface utilisateur Apigee, accédez à Administrateur > Rattachements aux points de terminaison.
  2. Affichez la liste des rattachements de points de terminaison.

Créer un rattachement de point de terminaison

Pour créer un rattachement de point de terminaison dans l'interface utilisateur ou à l'aide de l'API Apigee Endpoints, consultez la section Créer un rattachement de points de terminaison.

Supprimer un rattachement de point de terminaison

Pour supprimer un point de terminaison à l'aide de l'UI Apigee, procédez comme suit :

  1. Dans l'interface utilisateur Apigee, accédez à Administrateur > Rattachements aux points de terminaison.
  2. Sélectionnez le rattachement de point de terminaison à supprimer.
  3. Cliquez sur Supprimer le rattachement de point de terminaison.

Vous pouvez également utiliser l'API Apigee Endpoints pour répertorier, créer et supprimer des rattachements de points de terminaison.

Appairage DNS privé

Si vous disposez d'une zone privée Cloud DNS hébergée dans le projet Cloud appairé à Apigee, vous pouvez configurer l'appairage DNS pour permettre à Apigee de résoudre les noms dans votre zone privée. Par défaut, les zones privées sont privées dans le réseau VPC dans lequel elles sont hébergées. Pour savoir comment configurer l'appairage DNS entre une zone DNS privée et Apigee (producteur de services), consultez la page Partager des zones DNS privées avec les producteurs de services.

Dépannage

Problèmes d'état de connexion PSC

Cette section décrit les solutions possibles lorsqu'un rattachement de point de terminaison a été provisionné et que l'état est Actif, mais que l'état de la connexion n'est pas Accepté. Certains états de connexion possibles sont présentés dans la Figure 2.

Figure 2 : Détails de l'état du rattachement de point de terminaison

L'état affiché peut indiquer la cause probable, comme décrit dans le tableau suivant :

État de la connexion Cause possible Solution recommandée
ACCEPTÉ Le rattachement de service a accepté la connexion depuis le point de terminaison de la connexion. Non disponible
EN ATTENTE L'ID de projet Apigee peut ne pas se trouver dans la liste des projets acceptés par le client ni dans la liste des projets refusés. Ajoutez l'ID de projet Apigee à la liste d'acceptation des clients sur le rattachement de service. Consultez la section Modifier les préférences de connexion d'un service publié.
REFUS L'ID du projet Apigee figure dans la liste de refus du client. Supprimez l'ID de projet Apigee de la liste de refus du client et ajoutez-le à la liste d'acceptation sur le rattachement de service. Consultez Gérer les requêtes d'accès à un service publié.
GELÉ Le rattachement de service pour ce rattachement de point de terminaison a été suspendu ou désactivé. Décrivez le rattachement de service pour en savoir plus. Consultez Afficher les détails d'un service publié.
FERMÉE Le rattachement de service pour ce rattachement de point de terminaison a été supprimé. Recréez le rattachement de service et le rattachement de point de terminaison.
ATTENTION REQUISE Le rattachement de point de terminaison a été accepté par le rattachement de service, mais celui-ci présente un problème. Décrivez le rattachement de service pour en savoir plus. Consultez Afficher les détails d'un service publié.
UNAVAILABLE L'état de connectivité peut être indisponible pendant le provisionnement. Patientez quelques minutes pour voir si l'état change.

Configuration PSC avec Apigee

Consultez le playbook sur les problèmes de connectivité Apigee avec les cibles PSC Southbound.