Utilizzo di reti VPC condivise

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

Visualizza la documentazione di Apigee Edge.

Questo documento spiega come configurare un host VPC (Virtual Private Cloud) condiviso e collegarvi progetti di servizi Apigee e di destinazione di backend distinti. Le reti VPC condivise ti consentono di implementare un'infrastruttura di rete gestita centralmente con Google Cloud. Puoi utilizzare una singola rete VPC in un progetto host per connettere le risorse di più progetti di servizio.

Vantaggio di VPC condiviso

Il runtime Apigee (in esecuzione in un VPC gestito da Google) è in peering con il VPC di tua proprietà. In questa topologia, l'endpoint di runtime di Apigee può comunicare con la tua rete VPC, come mostrato nel seguente diagramma:

VPC condivisi con backend interni nella VPC di un altro progetto

Consulta anche la panoramica dell'architettura Apigee.

In molti scenari, la topologia descritta sopra è eccessivamente semplice, perché la rete VPC fa parte di un singolo progetto Google Cloud e molte organizzazioni vogliono seguire le migliori pratiche per le gerarchie delle risorse e separare la propria infrastruttura in più progetti. Immagina una topologia di rete in cui il progetto tenant Apigee è in peering con una rete VPC come prima, ma i backend interni si trovano nella VPC di un altro progetto. Come mostrato in questo diagramma:

VPC condivisi con backend interni nella VPC di un altro progetto

Se esegui il peering del tuo VPC Apigee con il VPC di backend, come mostrato nel diagramma, il backend può essere raggiunto dalla rete VPC Apigee e viceversa, perché il peering di rete è simmetrico. Tuttavia, il progetto tenant Apigee può comunicare solo con il VPC Apigee, poiché il peering non è transitivo, come descritto nella documentazione sul peering VPC. Per farlo funzionare, puoi implementare proxy aggiuntivi nella tua VPC Apigee per inoltrare il traffico tramite il link di peering alla VPC di backend. Tuttavia, questo approccio aggiunge un ulteriore aggravio operativo e manutenzione.

VPC condiviso offre una soluzione al problema descritto sopra. VPC condiviso ti consente di stabilire la connettività tra il runtime Apigee e i backend che si trovano in altri progetti Google Cloud della stessa organizzazione senza componenti di rete aggiuntivi.

Configurazione di VPC condiviso con Apigee

Questa sezione spiega come collegare un progetto di servizio VPC Apigee a un host VPC condiviso. Le subnet definite nel progetto host sono condivise con i progetti di servizio. In una sezione successiva, spiegheremo come creare una seconda subnet per i servizi di backend di cui è stato eseguito il deployment in un secondo progetto di servizio VPC. Il seguente diagramma mostra l'architettura risultante:

Panoramica dell'architettura VPC condiviso

Apigee fornisce uno script di provisioning per semplificare la creazione della topologia richiesta. Segui i passaggi descritti in questa sezione per scaricare e utilizzare lo script di provisioning per configurare Apigee con una VPC condiviso.

Prerequisiti

  1. Esamina i concetti descritti nella Panoramica della rete VPC condivisa. È importante comprendere i concetti di progetto host e progetto di servizio.
  2. Crea un nuovo progetto Google Cloud che puoi configurare per VPC condiviso. Questo è il progetto host. Consulta la pagina Creare e gestire progetti.
  3. Segui i passaggi descritti in Provisioning della rete VPC condivisa per eseguire il provisioning del progetto per la VPC condiviso. Per attivare il progetto host per la VPC condiviso, devi essere un amministratore dell'organizzazione o disporre dei ruoli amministrativi IAM (Identity and Access Management) appropriati.
  4. Crea un secondo progetto Google Cloud. Questo è un progetto di servizio. In un secondo momento, lo collegherai al progetto host.

Scaricare lo script

Apigee fornisce uno script di provisioning per semplificare la creazione della topologia richiesta. Devi recuperare lo script da GitHub:

  1. Clona il progetto GitHub contenente lo script:
    git clone https://github.com/apigee/devrel.git
  2. Vai alla seguente directory del progetto:
    cd devrel/tools/apigee-x-trial-provision
  3. Imposta le seguenti variabili di ambiente:
    export HOST_PROJECT=HOST_PROJECT_ID
    export SERVICE_PROJECT=SERVICE_PROJECT_ID

    Dove:

    • HOST_PROJECT_ID è l'ID del progetto host VPC condiviso che hai creato come uno dei prerequisiti.
    • SERVICE_PROJECT_ID è l'ID del progetto di servizio Google Cloud che hai creato nei prerequisiti.

Configura il progetto host

  1. Imposta le seguenti variabili di ambiente:
  2. export NETWORK=YOUR_SHARED_VPC
    export SUBNET=YOUR_SHARED_SUBNET
    export PEERING_CIDR=CIDR_BLOCK

    Dove:

    • YOUR_SHARED_VPC è il nome della rete VPC condiviso.
    • YOUR_SHARED_SUBNET è il nome della subnet VPC condiviso.
    • CIDR_BLOCK è il blocco CIDR per il VPC Apigee. Ad esempio: 10.111.0.0/23.
  3. Per configurare il peering e il firewall della VPC Apigee, esegui lo script con le seguenti opzioni:
    ./apigee-x-trial-provision.sh \
        -p $HOST_PROJECT --shared-vpc-host-config --peering-cidr $PEERING_CIDR

    Lo script configura il progetto host. L'output sarà simile al seguente, dove NETWORK e SUBNET rappresentano i percorsi completi nel progetto host:

    export NETWORK=projects/$HOST_PROJECT/global/networks/$NETWORK
    export SUBNET=projects/$HOST_PROJECT/regions/us-west1/subnetworks/$SUBNET
  4. Esporta le variabili restituite nell'output.

Configura il progetto di servizio

In questo passaggio, devi configurare il progetto di servizio. Al termine, lo script crea ed esegue il deployment di un proxy API di esempio nel tuo ambiente Apigee che puoi utilizzare per testare il provisioning.

  1. Esegui lo script apigee-x-trial-provision.sh una seconda volta per eseguire il provisioning del progetto di servizio con le impostazioni di rete condivise:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

    Lo script crea un proxy di esempio nel tuo ambiente Apigee e stampa un comando curl su STDOUT che puoi chiamare per testare il provisioning.

  2. Chiama il proxy API di test. Ad esempio:
    curl -v https://10-111-111-111.nip.io/hello-world

Configurare un altro progetto di servizio per i servizi di backend

È buona prassi separare l'infrastruttura Google Cloud in più progetti. Consulta Decidere una gerarchia di risorse per la tua zona di destinazione Google Cloud. Questa sezione spiega come eseguire il deployment di un servizio di backend in un progetto di servizio separato e collegarlo all'host VPC condiviso. Apigee può utilizzare il servizio di backend come target del proxy API perché sia il progetto di servizio Apigee sia il progetto di servizio di backend sono collegati all'host VPC condiviso.

Prerequisiti

Per eseguire questi passaggi, presupponiamo che tu abbia già configurato e condiviso il VPC condiviso con il progetto di servizio di backend, come descritto in Configurare il VPC condiviso.

Configura il progetto di servizio

In questa sezione, testerai un servizio di backend in un'altra subnet VPC condivisa, creerai una seconda subnet nel progetto host e utilizzerai il relativo indirizzo IP RFC1918 privato come URL target per i proxy API Apigee.

  1. Dal progetto di servizio di backend, esegui il seguente comando per visualizzare tutte le subnet condivise disponibili:
    gcloud compute networks subnets list-usable --project $HOST_PROJECT  --format yaml
    

    Output di esempio:

    ipCidrRange: 10.0.0.0/20
    network: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/global/networks/hub-vpc
    subnetwork: https://www.googleapis.com/compute/v1/projects/my-svpc-hub/regions/europe-west1/subnetworks/sub1
  2. Crea queste variabili di ambiente:
    BACKEND_SERVICE_PROJECT=PROJECT_ID
    SHARED_VPC_SUBNET=SUBNET
    

    Dove:

    • PROJECT_ID è il nome del progetto di servizio che hai creato per i servizi di backend.
    • SUBNET è una delle sottoreti generate dal comando precedente.
  3. Per creare un servizio di backend httpbin nel progetto a scopo di test, utilizza il seguente comando:
    gcloud compute --project=$BACKEND_SERVICE_PROJECT instances create-with-container httpbin \
      --machine-type=e2-small --subnet=$SHARED_VPC_SUBNET \
      --image-project=cos-cloud --image-family=cos-stable --boot-disk-size=10GB \
      --container-image=kennethreitz/httpbin --container-restart-policy=always --tags http-server
    
  4. Crea e esegui il deployment di un proxy API Apigee seguendo i passaggi descritti in Creare un proxy API.
  5. Ottieni l'indirizzo IP interno della macchina virtuale (VM) in cui è in esecuzione il servizio di destinazione. Utilizzerai questo indirizzo IP nel passaggio successivo per chiamare il proxy API di test:
    gcloud compute instances list --filter=name=httpbin
  6. Per testare la configurazione, chiama il proxy. Utilizza l'indirizzo IP interno della VM ottenuto nel passaggio precedente. L'esempio seguente presuppone che tu abbia denominato il percorso di base del proxy /myproxy. Ad esempio:
    curl -v https://INTERNAL_IP/myproxy

    Questa chiamata API restituisce Hello, Guest!.