Chiamare un proxy API con accesso solo interno

Stai visualizzando la documentazione di Apigee X.
Visualizza la documentazione di Apigee Edge.

Questa sezione descrive come inviare richieste a un proxy API di cui hai eseguito il deployment e che hai limitato all'accesso interno solo durante il processo di provisioning.

Panoramica

Per accedere a proxy API solo per uso interno, devi creare un'altra VM Compute Engine all'interno del cluster. La nuova VM è la macchina da cui invii richieste al bilanciatore del carico interno (o router in entrata). Il bilanciatore del carico inoltra le richieste al proxy API appena sottoposto a deployment.

I passaggi riportati di seguito presuppongono che sia già stato eseguito il deployment di un proxy API con il percorso di base /hello-world. I passaggi per la creazione e il deployment del proxy sono descritti di seguito:

  • Se hai seguito i passaggi della procedura guidata dell'organizzazione a pagamento: Creare ed eseguire il deployment di un proxy API
  • Se hai seguito i passaggi dell'interfaccia a riga di comando dell'organizzazione a pagamento: Deploy a sample proxy
  • Se hai seguito i passaggi della procedura guidata di valutazione, è stato creato ed eseguito automaticamente il deployment di un proxy API chiamato hello-world.
  • Se hai seguito i passaggi dell'interfaccia a riga di comando dell'organizzazione di valutazione, è stato creato ed eseguito automaticamente il deployment di un proxy API chiamato hello-world.

Prima di iniziare

Segui questa procedura preliminare per la configurazione:

  1. Se non l'hai ancora fatto, inizializza Cloud SDK, come descritto in Inizializzazione di Cloud SDK, oppure assicurati che il progetto Google Cloud che hai creato in Prerequisiti sia il progetto predefinito per gcloud.
  2. Definisci le seguenti variabili di ambiente locali:

    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)")

    Dove:

    • PROJECT_ID è l'ID progetto cloud che hai creato nell'ambito dei prerequisiti.
    • AUTH definisce l'intestazione Authentication con un token di connessione. Utilizzerai questa intestazione quando chiami le API Apigee. Tieni presente che il token scade dopo un determinato periodo di tempo e, quando ciò accade, puoi semplicemente rigenerarlo utilizzando lo stesso comando. Per maggiori informazioni, consulta la pagina di riferimento del comando stampa-access-token.
    • SUBNET è la subnet specificata durante il provisioning. Ad esempio: default.
    • INSTANCE_NAME: nome della nuova istanza. Ad esempio, my-runtime-instance. Il nome deve iniziare con una lettera minuscola, può avere una lunghezza massima di 32 caratteri e può includere solo lettere minuscole, numeri e trattini. Non può iniziare o terminare con un trattino e deve contenere almeno 2 caratteri.
    • PROJECT_NUMBER è il numero di progetto Cloud che hai creato nell'ambito dei prerequisiti. In questo esempio viene emesso un comando gcloud per recuperare il numero del progetto.
  3. Recupera la località di runtime per l'istanza. Ad esempio:
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances

    La risposta dovrebbe essere simile alla seguente, dove il valore location è l'area geografica us-west1. L'area geografica potrebbe essere diversa:

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.39.126.2",
          "port": "443",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22"
        }
      ]
    }
  4. Inserisci il nome di una zona all'interno della regione di runtime in una variabile di ambiente denominata VM_ZONE. La zona deve essere all'interno della regione restituita nell'attributo location della risposta precedente. Ad esempio:
    export VM_ZONE="us-west1-b"

    oppure puoi usare questo comando gcloud per restituire un nome di zona per la regione di runtime configurata (us-west1 in questo esempio). L'area geografica potrebbe essere diversa:

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

Creare una VM e chiamare il proxy API

Successivamente, crea una nuova VM nella tua rete VPC utilizzando il comando gcloud beta compute. La VM funge da bridge che consente di inviare richieste all'IP del bilanciatore del carico interno. Dopo aver configurato la VM, puoi chiamare il proxy API hello-world di cui è stato eseguito il deployment durante il provisioning:

  1. L'esempio seguente crea una nuova VM con alcune opzioni comuni e utilizza variabili di ambiente che hai definito in precedenza come input.
    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. Apri una connessione sicura alla nuova VM appena creata.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. Nella shell della VM, installa l'utilità jq. e verrà utilizzato nei passaggi successivi:
    sudo apt-get update -y
    sudo apt-get install -y jq
    
  4. Nella shell della VM, crea le seguenti variabili di ambiente per semplificare la copia/incolla di la richiesta proxy 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]')
    export INTERNAL_LOAD_BALANCER_IP=$(curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances -s | jq -r '.instances[0].host')
    
  5. Assicurati che le variabili siano impostate correttamente:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
    echo $INTERNAL_LOAD_BALANCER_IP
  6. Invia una richiesta al proxy API di cui hai eseguito il deployment utilizzando la seguente coppia di comandi.
    1. Esegui il pull del certificato CA che hai creato durante la creazione dell'organizzazione con il seguente comando:
      curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
    2. Invia la richiesta al proxy API di cui hai eseguito il deployment:
      curl -is -H "Host: $ENV_GROUP_HOSTNAME" \
        https://example.$PROJECT_ID.apigee.internal/hello-world \
        --cacert cacert.crt \
        --resolve example.$PROJECT_ID.apigee.internal:443:$INTERNAL_LOAD_BALANCER_IP

    In caso di esito positivo, il proxy restituisce Hello, Guest!.

In caso di errori durante questa parte del processo, assicurati che tutte le variabili di ambiente che hai creato e utilizzato nei comandi abbiano valori validi. Consulta anche la sezione Risoluzione dei problemi.

Passaggio successivo

Prova a creare un proxy di cui potrai eseguire il deployment oppure fai un tour dei tutorial Apigee che ti presenteranno le funzionalità di Apigee, come prevenire picchi di traffico improvvisi o una visualizzazione dettagliata del flusso di richiesta/risposta.

(Avanzato) Se prevedi di trasformarlo in una configurazione di produzione, puoi configurare un perimetro di sicurezza attorno al nuovo cluster e ai servizi cloud correlati. Questo è possibile con i controlli di servizio VPC.