Appeler un proxy d'API avec accès interne uniquement

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

Consultez la documentation d' Apigee Edge.

Ce document explique comment appeler des proxys d'API à partir de clients exécutés sur votre réseau interne. Ces étapes sont utiles pour tester votre configuration si Apigee est provisionné pour utiliser un routage réseau interne. Vous pouvez suivre les étapes du présent document si Apigee a été provisionné avec l'une de ces configurations de routage réseau :

Option de provisionnement Option de mise en réseau Procédure de provisionnement
Abonnement payant Avec appairage de VPC Routage interne (VPC)
Routage interne (PSC)
Paiement à l'usage Avec appairage de VPC Routage interne (VPC)
Routage interne (PSC)
Évaluation Avec appairage de VPC Configurer le routage (interne)
Évaluation Sans appairage de VPC Routage interne (PSC)

Consultez également la page Options de mise en réseau.

Avant de commencer

Suivez la procédure de configuration préliminaire suivante :

  1. Si vous ne l'avez pas déjà fait, initialisez le SDK Cloud comme décrit sur la page Initialiser gcloud CLI ou vérifiez que le projet Google Cloud que vous avez créé dans la section Prérequis est le projet par défaut pour gcloud.
  2. Définissez les variables d'environnement locales suivantes :

    export PROJECT_ID=YOUR_PROJECT_ID
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export SUBNET=NETWORK_NAME
    export INSTANCE_NAME=INSTANCE_NAME
    export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")

    Où :

    • PROJECT_ID est l'ID de projet Cloud que vous avez créé dans la section Prérequis.
    • AUTH définit l'en-tête Authentication avec un jeton de support. Vous utiliserez cet en-tête lors de l'appel des API Apigee. Notez que le jeton expire après un certain temps. Si c'est le cas, il vous suffit de le générer à nouveau en exécutant la même commande. Pour en savoir plus, consultez la page de référence sur la commande print-access-token.
    • SUBNET est le sous-réseau spécifié lors du provisionnement. Par exemple : default.
    • INSTANCE_NAME : nom de votre nouvelle instance. Exemple :my-runtime-instance Le nom doit commencer par une lettre minuscule, peut comporter jusqu'à 32 caractères et ne peut contenir que des lettres minuscules, des chiffres et des traits d'union. Il ne peut pas commencer, ni se terminer par un trait d'union et doit comporter au moins deux caractères.
    • PROJECT_NUMBER est l'ID du projet Cloud que vous avez créé dans la section Prérequis. Dans cet exemple, la commande gcloud récupère le numéro de projet automatiquement.
  3. Récupérez la valeur de la propriété location à partir de votre instance Apigee. Cette valeur correspond à la région où se trouve l'instance, par exemple us-west1 :
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
  4. Choisissez une zone dans la région de l'instance et placez le nom de la zone dans une variable. La zone doit se trouver dans l'instance. Par exemple :
    export VM_ZONE="us-west1-b"

    Si vous avez besoin d'identifier une zone dans la région de l'instance, vous pouvez utiliser cette commande gcloud pour renvoyer un nom de zone pour la région d'exécution configurée. Par exemple :

    VM_ZONE=$(gcloud compute zones list | grep "us-west1" | head -n 1 | awk '{print $1}')

Créer une VM et appeler le proxy d'API

Créez une VM dans votre réseau VPC à l'aide de la commande gcloud beta compute. La VM sert de lien pour envoyer des requêtes à l'adresse IP de l'équilibreur de charge interne. Une fois la VM configurée, vous pouvez appeler un proxy d'API déployé :

  1. L'exemple suivant crée une VM avec des options courantes et utilise les variables d'environnement que vous avez définies précédemment comme entrées.
    gcloud beta compute --project=$PROJECT_ID \
      instances create $INSTANCE_NAME \
      --zone=$VM_ZONE \
      --machine-type=e2-micro \
      --subnet=$SUBNET \
      --network-tier=PREMIUM \
      --no-restart-on-failure \
      --maintenance-policy=TERMINATE \
      --preemptible \
      --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --scopes=https://www.googleapis.com/auth/cloud-platform \
      --tags=http-server,https-server \
      --image=debian-10-buster-v20210217 \
      --image-project=debian-cloud \
      --boot-disk-size=10GB \
      --boot-disk-type=pd-standard \
      --boot-disk-device-name=$INSTANCE_NAME \
      --no-shielded-secure-boot \
      --shielded-vtpm \
      --shielded-integrity-monitoring \
      --reservation-affinity=any
  2. Ouvrez une connexion sécurisée à la nouvelle VM que vous venez de créer.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. Dans l'interface système de la VM, installez l'utilitaire jq. Il est utilisé dans les étapes suivantes :
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. Dans le shell de la VM, créez les variables d'environnement suivantes pour faciliter le copier-coller de la requête adressée au proxy d'API :
    export AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    export PROJECT_ID=YOUR_PROJECT_ID
    export ENV_GROUP_HOSTNAME=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups -s | jq -r '.environmentGroups[0].hostnames[0]')
    
  5. Assurez-vous que les variables sont correctement définies :
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. Appelez un proxy d'API. Sélectionnez une option ci-dessous, correspondant à la configuration de routage que vous avez appliquée lors du provisionnement d'Apigee.

    Options concernant les installations utilisant l'appairage de VPC

    • Option TLS n° 1 : si vous avez configuré un équilibreur de charge interne dans votre projet, comme expliqué dans la section Routage interne (VPC), appelez le proxy en utilisant l'adresse IP de l'équilibreur de charge interne. Cette option utilise les certificats CA que vous contrôlez et qui ont été créés lors de la création de l'équilibreur de charge interne :
      1. Obtenez l'adresse IP de l'équilibreur de charge interne de votre projet, comme expliqué dans la section Configurer un équilibrage de charge HTTP(S) interne avec les backends de groupe d'instances de VM.
      2. Appelez un proxy d'API :
        curl -H "Host: $ENV_GROUP_HOSTNAME" \
          https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • Option TLS n° 2 : utilisez le nom de domaine complet par défaut qui renvoie à l'équilibreur de charge interne dans le projet Apigee. Avec cette option, TLS est utilisé à l'aide de certificats autosignés Apigee créés en interne. Vous n'avez aucun contrôle sur ces certificats.
      1. Obtenez l'adresse IP de l'équilibreur de charge interne dans le projet Apigee :
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Extrayez le certificat CA qui a été créé lors de la création de l'organisation à l'aide de la commande suivante :
        curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
      3. Envoyez la requête à un proxy d'API déployé, où example.$PROJECT_ID.apigee.internal est le nom de domaine complet, interne et par défaut qui renvoie à l'équilibreur de charge interne.
        curl -is -H "Host: $ENV_GROUP_HOSTNAME" \
          https://example.$PROJECT_ID.apigee.internal/PROXY_BASEPATH \
          --cacert cacert.crt \
          --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP
    • Option sans TLS : si vous n'avez pas besoin de TLS, vous pouvez utiliser l'option -k de la commande curl pour désactiver TLS et éventuellement éviter les problèmes liés à SSL :
      1. Obtenez l'adresse IP de l'équilibreur de charge interne dans le projet Apigee :
        export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
      2. Appelez un proxy d'API :
        curl -i -k \
          -H "Host: $ENV_GROUP_HOSTNAME" \
          https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Option de point de terminaison de service) Si vous avez provisionné une organisation payante ou une organisation d'évaluation avec PSC et que vous avez choisi l'option de routage de point de terminaison de service :
      1. Obtenez l'adresse IP du point de terminaison du service. Si vous devez rechercher l'adresse IP du point de terminaison, consultez la section Répertorier les points de terminaison.
      2. Appelez un proxy d'API :
        curl -i -k \
           -H "Host: $ENV_GROUP_HOSTNAME" \
           https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Par exemple :

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Options concernant les installations qui n'utilisent pas l'appairage non-VPC

    • (Option de point de terminaison de service) Si vous avez provisionné une organisation payante ou une organisation d'évaluation avec PSC et que vous avez choisi l'option de routage de point de terminaison de service :
      1. Obtenez l'adresse IP du point de terminaison du service. Si vous devez rechercher l'adresse IP du point de terminaison, consultez la section Répertorier les points de terminaison.
      2. Appelez un proxy d'API :
        curl -i -k \
            -H "Host: $ENV_GROUP_HOSTNAME" \
            https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Par exemple :

        curl -H "Host: $ENV_GROUP_HOSTNAME" https://10.138.0.2/helloworld -k

    Si vous rencontrez des erreurs au cours de cette étape du processus, assurez-vous que toutes les variables d'environnement que vous avez créées et utilisées dans les commandes ont des valeurs valides. Consultez également la page Dépannage.

    Étape suivante

    Essayez de créer un proxy que vous pouvez ensuite déployer ou suivez une visite guidée des tutoriels Apigee qui vous présenteront les fonctionnalités d'Apigee, telles que la protection contre les pics de trafic soudains ou l'obtention d'une vue détaillée du flux de requêtes/réponses.

    (Avancé) Si vous envisagez de transformer cette configuration en configuration de production, vous pouvez configurer un périmètre de sécurité autour de votre nouveau cluster et des services cloud associés. Cette configuration peut être réalisée avec VPC Service Controls.