Esegui il provisioning di un'organizzazione di valutazione con il peering VPC

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

Visualizza la documentazione di Apigee Edge.

Riepilogo dei passaggi

Questo documento spiega come installare e configurare un'organizzazione di valutazione Apigee (o organizzazione di valutazione) dalla riga di comando. Le organizzazioni di valutazione scadono dopo 60 giorni e potrebbero avere altre limitazioni. Vedi anche Confronto tra organizzazioni di valutazione e a pagamento.

I passaggi di provisioning sono i seguenti:

Passaggio 1: definizione delle variabili di ambiente

Configura gcloud e definisci le variabili di ambiente da utilizzare nei passaggi successivi:

  1. Assicurati di aver completato i requisiti elencati in Prerequisiti.
  2. Devi aver installato gcloud CLI. Se devi installarla, vedi Installazione di gcloud CLI.
  3. Inizializza gcloud CLI, come descritto in Inizializzazione di gcloud CLI, o, se la CLI è già inizializzata, assicurati che il progetto Google Cloud che hai creato in Prerequisiti sia il progetto predefinito per gcloud.
  4. Definisci le seguenti variabili di ambiente:
    AUTH="Authorization: Bearer $(gcloud auth print-access-token)"
    PROJECT_ID="YOUR_PROJECT_ID"
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    ANALYTICS_REGION="YOUR_ANALYTICS_REGION"

    Dove:

    • 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.
    • PROJECT_ID è l'ID progetto Cloud che hai creato nell'ambito dei Prerequisiti.
    • RUNTIME_LOCATION è la località fisica in cui si trova l'istanza Apigee. Per un elenco delle località di runtime disponibili, consulta Località Apigee.

    • ANALYTICS_REGION è la posizione fisica in cui verranno archiviati i dati di analisi di Apigee. Per un elenco delle regioni di analisi dell'API Apigee disponibili, consulta Località Apigee.

      RUNTIME_LOCATION e ANALYTICS_REGION possono essere la stessa regione, ma non è obbligatorio. Tuttavia, se sono uguali, le prestazioni potrebbero migliorare.

  5. (Facoltativo) Controlla il tuo lavoro ripetendo i valori che hai appena impostato. Tieni presente che quando vuoi utilizzare una variabile nei comandi, anteponi al nome della variabile il simbolo del dollaro ($).
    echo $AUTH
    echo $PROJECT_ID
    echo $RUNTIME_LOCATION
    echo $ANALYTICS_REGION
    

    Le risposte ai comandi echo dovrebbero essere simili alle seguenti:

    Authorization: Bearer ya29.a123456678940B63hPSAMPLEsampleKKYVsample0f3pWDWZDuH2-hENkNa
    TvgZ1PD977TMvv6edBQPJezdHw040880Ol_LoD5ZDkt-i-knizia_KhA9L20sSvztL81-SAMPLE42ELPMASk2_
    1CxN
    my-cloud-project
    us-west1
    us-west1
    

Passaggio 2: attivazione delle API

  1. Apigee richiede l'abilitazione di diverse API Google Cloud. Abilitali eseguendo il comando services enable:

    gcloud services enable apigee.googleapis.com \
      servicenetworking.googleapis.com compute.googleapis.com \
      cloudkms.googleapis.com --project=$PROJECT_ID
  2. (Facoltativo) Per controllare il tuo lavoro, utilizza il comando services list per mostrare tutte le API abilitate:

    gcloud services list

    La risposta mostra tutti i servizi abilitati, incluse le API che hai appena abilitato (Apigee, Service Networking, Cloud KMS e Compute Engine).

Passaggio 3: configurazione del networking di servizi

  1. Crea queste variabili di ambiente:
    RANGE_NAME=YOUR_RANGE_NAME
    NETWORK_NAME=YOUR_NETWORK_NAME
    

    Dove:

    • RANGE_NAME è il nome dell'intervallo di indirizzi IP che stai creando. Puoi assegnare all'intervallo il nome che preferisci. Ad esempio: google-svcs.
    • NETWORK_NAME è il nome della risorsa di rete in cui devono essere prenotati gli indirizzi. Google crea una rete predefinita (denominata default) per ogni nuovo progetto, quindi puoi utilizzarla. Tuttavia, Google sconsiglia di utilizzare la rete predefinita per qualsiasi attività diversa dai test.
  2. Crea un intervallo IP con una lunghezza CIDR di /22:
    gcloud compute addresses create $RANGE_NAME \
      --global \
      --prefix-length=22 \
      --description="Peering range for Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Dove --addresses ti consente di specificare facoltativamente uno o più IP di indirizzi per la lunghezza del prefisso di /22. Ad esempio, per allocare il blocco CIDR 192.168.0.0/22, specifica 192.168.0.0 per l'indirizzo e 22 per la lunghezza del prefisso. Vedi anche Creare un'allocazione IP.

    Se non fornisci il parametro --addresses, gcloud seleziona un intervallo di indirizzi disponibile per te.

    In caso di esito positivo, gcloud risponde con quanto segue:

    Created [https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/addresses/google-svcs].

    Dopo aver creato un intervallo di indirizzi IP, questi vengono associati al progetto finché non li rilasci.

  3. Crea un secondo intervallo IP con una lunghezza CIDR di /28. Questo intervallo viene utilizzato da Apigee per la risoluzione dei problemi e non può essere personalizzato o modificato.
    gcloud compute addresses create google-managed-services-support-1 \
      --global \
      --prefix-length=28 \
      --description="Peering range for supporting Apigee services" \
      --network=$NETWORK_NAME \
      --purpose=VPC_PEERING \
      --addresses=OPTIONAL_ADDRESSES \
      --project=$PROJECT_ID

    Dove --addresses ti consente di specificare facoltativamente uno o più IP di indirizzi per la lunghezza del prefisso di /28. Ad esempio, per allocare il blocco CIDR 192.168.0.0/28, specifica 192.168.0.0 per l'indirizzo e 28 per la lunghezza del prefisso. Vedi anche Creare un'allocazione IP.

    Se non fornisci il parametro --addresses, gcloud seleziona un intervallo di indirizzi disponibile per te.

  4. Connetti i tuoi servizi alla rete utilizzando il seguente comando:
    gcloud services vpc-peerings connect \
      --service=servicenetworking.googleapis.com \
      --network=$NETWORK_NAME \
      --ranges=$RANGE_NAME,google-managed-services-support-1 \
      --project=$PROJECT_ID

    Il completamento di questa operazione può richiedere diversi minuti. In caso di esito positivo, gcloud risponde con quanto segue:

    Operation "operations/OPERATION_ID" finished successfully.

    Dove OPERATION_ID è l'UUID dell'LRO (operazione a lunga esecuzione).

    Apigee crea una connessione tra la tua rete e i servizi di Google. In particolare, Apigee connette il tuo progetto all'API Service Networking tramite il peering VPC. Apigee associa anche gli indirizzi IP al tuo progetto.

Passaggio 4: creazione di un'organizzazione

Un'organizzazione è il contenitore di primo livello in Apigee. Contiene tutti i proxy API e le risorse correlate. Per maggiori dettagli, vedi Informazioni sulle organizzazioni.

  1. Crea una nuova organizzazione di valutazione utilizzando il comando gcloud alpha apigee organizations:
    gcloud alpha apigee organizations provision \
      --runtime-location=$RUNTIME_LOCATION \
      --analytics-region=$ANALYTICS_REGION \
      --authorized-network=$NETWORK_NAME \
      --project=$PROJECT_ID

    dove --authorized-network è il nome della tua rete di peering personalizzata. Ad esempio: default.

  2. Quando esegui il comando provision, Google avvia un'operazione di lunga durata per creare l'organizzazione di valutazione. Il completamento di questa operazione richiede fino a 40 minuti. Durante questo periodo, gcloud mostra quanto segue:

    Provisioning organization...

    Quando vengono creati l'organizzazione di valutazione e la relativa istanza di runtime, gcloud risponde con il seguente messaggio:

    Provisioning organization...done.
  3. Se esegui il seguente comando:

    gcloud alpha apigee operations list --organization=$PROJECT_ID

    dovresti vedere che tutti gli UUID sono nello stato FINISHED. Ad esempio:

    UUID                                  ORGANIZATION  STATE
    00bab06f-c60c-41a5-4242-7SAMPLE7f     my-org        FINISHED
    429790a7-3151-4642-4343-7SAMPLE7f     my-org        FINISHED
    d00a92a9-9b83-4642-4343-7SAMPLE7f     my-org        FINISHED
    f48a00ff-7daa-4c4a-4444-7SAMPLE7f     my-org        FINISHED

Passaggio 5: configura il routing

Decidi se consentire l'accesso esterno o solo quello interno:

Tipo di accesso Descrizione della procedura di configurazione e deployment
Interno

Consenti solo l'accesso interno ai tuoi proxy API.

Devi creare una nuova VM all'interno della rete e connetterti. Dalla nuova VM, puoi inviare una richiesta a un proxy API Apigee.

Esterno

Consenti l'accesso esterno ai tuoi proxy API.

Utilizza Private Service Connect (PSC) per abilitare la connessione privata tra un producer di servizi (Apigee) e un consumatore di servizi (il progetto VPC in peering e/o uno o più altri progetti cloud che controlli). Con questo metodo, le richieste passano attraverso un bilanciatore del carico esterno globale a un unico punto di collegamento, chiamato collegamento al servizio. Questa configurazione ti consente di inviare richieste proxy API Apigee da qualsiasi macchina abilitata alla rete.

Ciascuno di questi approcci di routing è presentato in una scheda nelle istruzioni riportate di seguito.

Routing interno

Non sono previste attività da svolgere per questo passaggio se utilizzi la riga di comando per configurare un proxy API per l'accesso interno. Puoi passare direttamente al passaggio 6: chiama il proxy API di esempio, in cui invierai una richiesta al tuo proxy API.

Routing esterno

Questa sezione descrive come configurare il routing esterno utilizzando Private Service Connect (PSC) per consentire la comunicazione tra Apigee e i VPC che controlli. Devi farlo prima di poter inviare una richiesta da un client esterno alla tua istanza Apigee Runtime.

I passaggi di configurazione esterni sono:

Passaggio 5a: crea un gruppo di endpoint di rete (NEG)
Passaggio 5b: configura il bilanciatore del carico

Ogni passaggio è descritto nelle sezioni seguenti.

Passaggio 5a: crea un gruppo di endpoint di rete (NEG)

  1. Recupera l'allegato di servizio per la tua istanza Apigee:
    curl -i -X GET -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/instances"

    Nel seguente output di esempio, il valore serviceAttachment è mostrato in grassetto:

    {
      "instances": [
        {
          "name": "eval-instance",
          "location": "us-west1",
          "host": "10.72.100.2",
          "port": "443",
          "createdAt": "1657832463500",
          "lastModifiedAt": "1657833920670",
          "state": "ACTIVE",
          "peeringCidrRange": "SLASH_22",
          "runtimeVersion": "1-8-0-apigee-18",
          "ipRange": "10.74.100.0/28,10.74.100.16/28",
          "consumerAcceptList": [
            "apigee-eval-test"
          ],
          "serviceAttachment": "projects/s8da1b0111eb33765-tp/regions/us-west1/serviceAttachments/apigee-us-west1-icza"
        }
      ]
    }
  2. Crea un gruppo di endpoint di rete (NEG) Private Service Connect che rimandi all'allegato del servizio che hai ottenuto dal corpo della risposta dell'istanza nel passaggio precedente.

    gcloud compute network-endpoint-groups create NEG_NAME \
      --network-endpoint-type=private-service-connect \
      --psc-target-service=TARGET_SERVICE \
      --region=$RUNTIME_LOCATION \
      --network=$NETWORK_NAME \
      --subnet=SUBNET_NAME \
      --project=$PROJECT_ID
    

    Sostituisci quanto segue:

    • NEG_NAME: un nome per il gruppo di endpoint di rete.
    • TARGET_SERVICE: il service attachment a cui vuoi connetterti. Ad esempio: projects/bfac7497a40c32a12p-tp/regions/us-west1/serviceAttachments/apigee-us-west1-crw7
    • SUBNET_NAME: il nome della subnet utilizzata per la connettività privata al produttore. La dimensione della subnet può essere ridotta: il NEG PSC ha bisogno di un solo IP dalla subnet. Per Apigee, è necessario un solo NEG PSC per regione. La subnet può essere condivisa e utilizzata da VM o altre entità. Se non viene specificata una subnet, gli endpoint di rete possono appartenere a qualsiasi subnet nella regione in cui viene creato il gruppo di endpoint di rete.

Passaggio 5b: configura il bilanciatore del carico

Configura un bilanciatore del carico HTTP(S) esterno globale (schema di bilanciamento del carico impostato su EXTERNAL_MANAGED).

Sebbene il NEG Private Service Connect sia regionale, tutti gli altri componenti di bilanciamento del carico in questa configurazione sono globali.

  1. Prenota un indirizzo IPv4 esterno globale per il bilanciatore del carico.
    gcloud compute addresses create ADDRESS_NAME \
      --ip-version=IPV4 --global --project=$PROJECT_ID

    Sostituisci ADDRESS_NAME con un nome per la risorsa dell'indirizzo IP.

    Esegui questo comando per visualizzare l'indirizzo IP riservato:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID
  2. Crea un servizio di backend per il NEG.
    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTPS \
      --global --project=$PROJECT_ID
  3. Sostituisci BACKEND_SERVICE_NAME con il nome del servizio di backend.

  4. Aggiungi il NEG al servizio di backend:
    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=$RUNTIME_LOCATION \
      --global --project=$PROJECT_ID

    Sostituisci quanto segue:

    • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    • NEG_NAME: il nome del gruppo di endpoint di rete.
  5. Crea una mappa URL per il bilanciatore del carico.

    Una mappa URL deve fare riferimento a un servizio di backend predefinito. Imposta il servizio di backend che hai appena creato come predefinito.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=DEFAULT_BACKEND_SERVICE_NAME \
      --global --project=$PROJECT_ID

    Sostituisci quanto segue:

    • URL_MAP_NAME: un nome per la mappa URL.
    • DEFAULT_BACKEND_SERVICE_NAME: il nome del servizio di backend predefinito del bilanciatore del carico. L'impostazione predefinita viene utilizzata quando nessuna regola host corrisponde al nome host richiesto.
  6. Crea un certificato SSL per il proxy HTTPS di destinazione.

    Per creare un bilanciatore del carico HTTPS, devi disporre di una risorsa certificato SSL da utilizzare nel proxy di destinazione HTTPS. Puoi creare una risorsa del certificato SSL utilizzando un certificato SSL gestito da Google o un certificato SSL autogestito.

    Utilizza questo comando per creare una risorsa del certificato SSL gestito da Google:

    gcloud compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN --project=$PROJECT_ID

    Sostituisci quanto segue:

    • CERTIFICATE: un nome per il certificato.
    • DOMAIN: il nome di dominio che utilizzerai per il bilanciatore del carico esterno.

    Per creare un certificato SSL autogestito, devi disporre di un file della chiave privata locale e di un file del certificato locale. Se devi creare questi file, consulta Utilizzo dei certificati SSL autogestiti.

    gcloud compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY --project=$PROJECT_ID

    Sostituisci quanto segue:

    • CERTIFICATE: un nome per il certificato.
    • LB_CERT: il percorso del file del certificato in formato PEM per il certificato autogestito.
    • LB_PRIVATE_KEY: il percorso del file della chiave privata in formato PEM per il certificato autogestito.
  7. Il provisioning del certificato può richiedere fino a un'ora. Per controllare lo stato del provisioning, esegui questo comando:

    gcloud compute ssl-certificates describe CERTIFICATE \
       --global \
       --format="get(name,managed.status, managed.Status)"
  8. Aggiungi il dominio al gruppo di ambienti Apigee creato per te. Il nome del gruppo di ambienti è eval-group:
    curl "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group" \
      -H "$AUTH" \
      -X PATCH \
      -H "Content-Type:application/json" \
      -d '{
        "hostnames":["'"DOMAIN"'"]
      }'
  9. Controlla lo stato dell'operazione del gruppo di ambienti:
    curl -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups/eval-group/attachments"
    
  10. Utilizza la risorsa del certificato SSL per creare un proxy HTTPS di destinazione.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE --project=$PROJECT_ID

    Sostituisci quanto segue:

    • PROXY_NAME: un nome per il proxy HTTPS di destinazione.
    • URL_MAP_NAME: il nome della mappa URL.
    • CERTIFICATE: il nome della risorsa del certificato.
  11. Crea la regola di forwarding.
    gcloud compute forwarding-rules create FWD_RULE \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=ADDRESS_NAME \
      --target-https-proxy=PROXY_NAME \
      --ports=443 \
      --global --project=$PROJECT_ID

    Sostituisci quanto segue:

    • FWD_RULE: un nome per la regola di forwarding.
    • ADDRESS_NAME: la risorsa dell'indirizzo IP che hai prenotato per l'utilizzo con la regola di forwarding.
    • PROXY_NAME: il nome del proxy HTTPS di destinazione.

Il provisioning di Apigee è completato.

Passaggio 6: chiama il proxy API di esempio

Durante il provisioning è stato creato e sottoposto a deployment un proxy API chiamato hello-world. In questo passaggio, testerai la nuova organizzazione di valutazione chiamando il proxy.

Chiamare il proxy con il routing interno

Se nel passaggio 5 hai scelto l'opzione di routing interno, segui i passaggi descritti in Chiamata a un proxy API con accesso solo interno.

Chiamare il proxy con il routing esterno

Se hai scelto l'opzione di routing esterno nel passaggio 5, segui i passaggi di questa sezione.

  1. Configura una voce DNS per il tuo dominio. Ecco due modi per svolgere questa attività:
    • Crea un record A che rimandi al tuo dominio presso il registrar. Ad esempio, se il tuo dominio è sales.example.com e l'IP è 10.23.0.2, indirizza il record per sales.example.com all'indirizzo 10.23.0.2.

      Esegui questo comando per visualizzare l'indirizzo IP riservato:

      gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --global --project=$PROJECT_ID
    • Utilizza Google Cloud DNS per mappare un URL a un indirizzo IP.
  2. Verifica che il proxy hello-world sia implementato:
    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/environments/eval/apis/hello-world/revisions/1/deployments"
  3. Chiama il proxy API:

    Invia una richiesta al proxy API da qualsiasi macchina abilitata alla rete eseguendo il comando seguente:

    curl -i -H "Host: DOMAIN" \
      https://DOMAIN/hello-world

    dove DOMAIN è il dominio che hai inserito nel certificato e aggiunto al gruppo di ambienti, come descritto nel passaggio 5: configura il routing. Se necessario, puoi utilizzare questa API per ottenere il valore DOMAIN dal gruppo di ambienti:

    curl -i -H "$AUTH" \
      "https://apigee.googleapis.com/v1/organizations/$PROJECT_ID/envgroups"

    In caso di esito positivo, il proxy API di esempio restituisce la risposta:

    Hello, Guest!

    Suggerimenti per la risoluzione dei problemi:

    Se ricevi un errore di handshake, controlla lo stato del certificato SSL. Per informazioni sulla risoluzione dei problemi relativi ai certificati autogestiti e gestiti da Google, consulta Risoluzione dei problemi relativi ai certificati SSL.

    Assicurati che il dominio registrato abbia un record A che punta all'indirizzo IP dell'indirizzo IPv4 esterno globale creato nel passaggio 5. Esegui questo comando per visualizzare l'indirizzo IP riservato:

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global --project=$PROJECT_ID

    Se non riesci a risolvere il problema di configurazione del dominio, prova a chiamare il proxy con questo comando:

    curl  -H Host:DOMAIN --resolve \
      DOMAIN:443:EXTERNAL_IP_ADDRESS  \
      https://DOMAIN:443/hello-world -k

Passaggio successivo:per saperne di più sulla creazione e sul deployment dei proxy API, consulta la panoramica sulla creazione del primo proxy API.