Chiamata a un proxy API con accesso solo interno

Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Questo documento spiega come chiamare i proxy API dai client in esecuzione sulla tua rete interna. Questi passaggi sono utili per testare la configurazione se Apigee è stato sottoposto a provisioning per utilizzare il routing di rete interno. Puoi seguire i passaggi descritti in questo documento se Apigee è stato provisionato con una delle seguenti configurazioni di routing di rete:

Opzione di provisioning Opzione di networking Passaggi di provisioning
Abbonamento a pagamento Con il peering VPC Routing interno (VPC)
Routing interno (PSC)
Pagamento a consumo Con il peering VPC Routing interno (VPC)
Routing interno (PSC)
Valutazione Con il peering VPC Configurare il routing (interno)
Valutazione Senza peering VPC Routing interno (PSC)

Vedi anche Opzioni di networking.

Prima di iniziare

Esegui i seguenti passaggi di configurazione preliminare:

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

    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 periodo di tempo e, quando ciò accade, puoi rigenerarlo semplicemente utilizzando lo stesso comando. Per maggiori informazioni, consulta la pagina di riferimento per il comando print-access-token.
    • SUBNET è la subnet specificata durante il provisioning. Ad esempio: default.
    • INSTANCE_NAME: il nome della nuova istanza. Ad esempio, my-runtime-instance. Il nome deve iniziare con una lettera minuscola, può contenere fino a 32 caratteri e può includere solo lettere minuscole, numeri e trattini. Non può iniziare o terminare con un trattino e deve contenere almeno due caratteri.
    • PROJECT_NUMBER è il numero del progetto Cloud che hai creato nell'ambito dei prerequisiti. Questo esempio esegue un comando gcloud per ottenere il numero di progetto.
  3. Ottieni il valore della proprietà location dalla tua istanza Apigee. Questo valore è la regione in cui si trova l'istanza, ad esempio us-west1:
    curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances
  4. Scegli una zona all'interno della regione dell'istanza e inserisci il nome della zona in una variabile. La zona deve trovarsi all'interno dell'istanza. Ad esempio:
    export VM_ZONE="us-west1-b"

    Se hai bisogno di aiuto per identificare una zona all'interno della regione dell'istanza, puoi utilizzare questo comando gcloud per restituire un nome di zona per la regione di runtime configurata. Ad esempio:

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

Crea una VM e chiama il proxy API

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

  1. L'esempio seguente crea una nuova VM con alcune opzioni comuni e utilizza le 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-12-bookworm-v20240701 \
      --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 che hai appena creato.

    gcloud compute ssh $INSTANCE_NAME --zone=$VM_ZONE --project=$PROJECT_ID
  3. Nella shell della VM, installa l'utilità jq. Viene 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 della richiesta del 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]')
    
  5. Assicurati che le variabili siano impostate correttamente:
    echo $AUTH
    echo $PROJECT_ID
    echo $ENV_GROUP_HOSTNAME
  6. Chiama un proxy API. Seleziona un'opzione di seguito che corrisponda alla modalità di configurazione del routing durante il provisioning di Apigee.

    Opzioni per le installazioni che utilizzano il peering VPC

    • (Opzione TLS n. 1) Se hai configurato un bilanciatore del carico interno (ILB) nel tuo progetto, come spiegato in Routing interno (VPC), chiama il proxy utilizzando l'IP di questo bilanciatore del carico interno. Questa opzione utilizza i certificati CA sotto il tuo controllo e creati al momento della creazione del bilanciatore del carico interno:
      1. Recupera l'IP del bilanciatore del carico interno nel tuo progetto, come spiegato in Configura il bilanciamento del carico HTTP(S) interno con i backend dei gruppi di istanze VM.
      2. Chiama un proxy API:
        curl -H "Host: $ENV_GROUP_HOSTNAME" \
          https://INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opzione TLS n. 2) Utilizza il nome di dominio completo predefinito che si risolve nel bilanciatore del carico interno nel progetto Apigee. Con questa opzione, TLS viene utilizzato con certificati autofirmati Apigee creati internamente. Non hai il controllo di questi certificati.
      1. Ottieni l'IP del bilanciatore del carico interno nel progetto 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. Esegui il pull del certificato CA creato durante la creazione dell'organizzazione con il comando seguente:
        curl -H "$AUTH" https://apigee.googleapis.com/v1/organizations/$PROJECT_ID | jq -r .caCertificate | base64 -d > cacert.crt
      3. Invia la richiesta a un proxy API di cui è stato eseguito il deployment, dove example.$PROJECT_ID.apigee.internal è il nome di dominio completo interno predefinito che viene risolto nel bilanciamento del carico interno.
        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
    • (Opzione non TLS) Se riscontri problemi di convalida del certificato SSL/TLS, puoi utilizzare il flag -k (o --insecure) con il comando curl. In questo modo, la convalida del certificato viene ignorata e la connessione può procedere. Tieni presente che, sebbene la comunicazione rimanga criptata, questa opzione comporta implicazioni per la sicurezza, in quanto l'autenticità del server non viene verificata.
      1. Ottieni l'IP del bilanciatore del carico interno nel progetto 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. Chiama un proxy API:
        curl -i -k \
          -H "Host: $ENV_GROUP_HOSTNAME" \
          https://$INTERNAL_LOAD_BALANCER_IP/PROXY_BASEPATH
    • (Opzione endpoint di servizio) Se hai eseguito il provisioning di un'organizzazione a pagamento o di valutazione con PSC e hai scelto l'opzione di routing dell'endpoint di servizio:
      1. Ottieni l'IP dell'endpoint di servizio. Se devi cercare l'IP dell'endpoint, consulta Elenca endpoint.
      2. Chiama un proxy API:
        curl -i -k \
           -H "Host: $ENV_GROUP_HOSTNAME" \
           https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Ad esempio:

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

    Opzioni per le installazioni che non utilizzano il peering non VPC

    • (Opzione endpoint di servizio) Se hai eseguito il provisioning di un'organizzazione a pagamento o di valutazione con PSC e hai scelto l'opzione di routing dell'endpoint di servizio:
      1. Ottieni l'IP dell'endpoint di servizio. Se devi cercare l'IP dell'endpoint, consulta Elenca endpoint.
      2. Chiama un proxy API:
        curl -i -k \
            -H "Host: $ENV_GROUP_HOSTNAME" \
            https://SERVICE_ENDPOINT_IP/PROXY_BASEPATH

        Ad esempio:

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

    Se si verificano errori durante questa parte della procedura, assicurati che tutte le variabili di ambiente che hai creato e utilizzato nei comandi abbiano valori validi. Vedi anche Risoluzione dei problemi.

    Passaggio successivo

    Prova a creare un proxy che puoi poi implementare oppure fai un tour dei tutorial di Apigee che ti introdurranno alle funzionalità di Apigee, ad esempio proteggerti da picchi improvvisi di traffico o ottenere una visualizzazione dettagliata del flusso di richiesta/risposta.

    (Avanzato) Se prevedi di trasformare questa configurazione in un ambiente di produzione, puoi configurare un perimetro di sicurezza attorno al nuovo cluster e ai servizi cloud correlati. Ciò è possibile con i Controlli di servizio VPC.