Chiamata a un proxy API con accesso solo interno

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

Visualizza Apigee Edge documentazione.

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

Opzione di provisioning Opzione di Networking Passaggi di provisioning
Abbonamento a pagamento Con peering VPC Routing interno (VPC)
Routing interno (Private Service Connect)
Pay-as-you-go Con peering VPC Routing interno (VPC)
Routing interno (Private Service Connect)
Valutazione Con peering VPC Configura il routing (interno)
Valutazione Senza peering VPC Routing interno (Private Service Connect)

Vedi anche Opzioni di rete.

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 cloud 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 periodo di tempo e, quando scade, puoi semplicemente rigenerarlo utilizzando lo stesso comando. Per ulteriori 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 di progetto Cloud che hai creato nell'ambito dei prerequisiti. Questo esempio esegue un comando gcloud per recuperare il numero di progetto.
  3. Recupera 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 gcloud comando per restituire il nome di una 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

Poi, crea una nuova VM all'interno della 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 utilizzata 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 e l'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 corrisponde 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 ILB. Questa opzione utilizza i certificati CA sotto il tuo controllo e creati durante la creazione del bilanciatore del carico interno:
      1. Recupera l'IP dell'ILB 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 viene risolto nel bilanciatore del carico interno nel progetto Apigee. Con questa opzione, il protocollo TLS viene utilizzato con i certificati autofirmati Apigee creati internamente. Non hai il controllo di questi certificati.
      1. Recupera 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. Recupera il certificato CA 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
      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 bilanciatore 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ò continuare. 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. Recupera 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 Private Service Connect e hai scelto l' opzione di routing dell'endpoint di servizio:
      1. Recupera l'IP dell'endpoint di servizio. Se devi cercare l'IP dell'endpoint, consulta Elenca gli 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 Private Service Connect e hai scelto l'opzione di routing dell'endpoint di servizio:
      1. Recupera l'IP dell'endpoint di servizio. Se devi cercare l'IP dell'endpoint, consulta Elenca gli 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 riscontri 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 di cui puoi eseguire il deployment o fai un tour dei tutorial di Apigee che ti introdurranno alle funzionalità di Apigee, ad esempio la protezione da picchi di traffico improvvisi o la visualizzazione dettagliata del flusso di richiesta/risposta.

    (Avanzato) Se prevedi di trasformare questa configurazione in una di produzione, puoi configurare un perimetro di sicurezza intorno al nuovo cluster e ai servizi Cloud correlati. È possibile farlo con i Controlli di servizio VPC.