Utilizzo di reti VPC condivise

Questa pagina si applica a Apigee, ma non a Apigee ibrido.

Visualizza documentazione di Apigee Edge.

Questo documento spiega come configurare un host VPC (Virtual Private Cloud) condiviso e collegare separa Apigee e i progetti di servizio di destinazione backend. Le reti VPC condivise consentono di implementare una configurazione regolata centralmente dell'infrastruttura di networking con Google Cloud. Puoi utilizzare una singola rete VPC in un progetto host per connettere risorse da più progetti di servizio.

Vantaggio del VPC condiviso

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

Condivisa
VPC con backend interni nel VPC di un altro progetto

Vedi anche Architettura di Apigee Panoramica.

In molti scenari, la topologia descritta sopra è eccessivamente semplice, perché la rete VPC parte di un unico progetto Google Cloud e molte organizzazioni vogliono seguire best practice per le gerarchie di risorse e distribuendo la rispettiva infrastruttura in più in modo programmatico a gestire i progetti. Immagina una topologia di rete in cui il progetto tenant Apigee è connesso in peering rete VPC come prima, ma con backend interni situati nel VPC di un altro progetto. Come mostrato come mostrato in questo diagramma:

Condivisa
VPC con backend interni nel 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, poiché il peering di rete è simmetrico. Tuttavia, il progetto tenant di Apigee può comunicare solo con il VPC Apigee, poiché il peering non transitivo, come descritto nella documentazione relativa al peering VPC. Affinché funzioni, puoi eseguire il deployment di proxy aggiuntivi nel VPC di Apigee per inoltrare il traffico attraverso il link di peering al VPC di backend; tuttavia, questo approccio aggiunge ulteriori costi generali e manutenzione.

Il VPC condiviso offre una soluzione al problema descritto sopra. Un VPC condiviso consente di definire tra il runtime Apigee e i backend che si trovano in altre istanze Progetti Cloud nella stessa organizzazione senza componenti di networking aggiuntivi.

Configurazione di un VPC condiviso con Apigee

Questa sezione spiega come collegare un progetto di servizio VPC Apigee a un host VPC condiviso. Subnet definite nel progetto host vengono 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 dell'architettura risultante:

VPC condiviso
panoramica dell'architettura

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

Prerequisiti

  1. Esamina i concetti discussi in Panoramica del VPC condiviso. È importante per comprendere i concetti di progetto host e progetto di servizio.
  2. Crea un nuovo progetto Google Cloud che puoi configurare per il VPC condiviso. Questo è il progetto host. Consulta Creare e gestire progetti.
  3. Segui i passaggi in Provisioning condiviso di un VPC per eseguire il provisioning del progetto per il VPC condiviso. Devi essere un amministratore dell'organizzazione o ricevere una concessione i ruoli amministrativi di Identity and Access Management (IAM) appropriati per abilitare per il VPC condiviso.
  4. Creare un secondo progetto Google Cloud. Questo è un progetto di servizio. Successivamente, lo collegherai al progetto host.

Scaricare lo script

Apigee fornisce uno script di provisioning per semplificare la creazione della topologia richiesta. Ti servono per eseguire il pull dello 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 del VPC condiviso che hai creato come uno dei e i prerequisiti necessari.
    • SERVICE_PROJECT_ID è l'ID del progetto di servizio Google Cloud che hai creato i 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 tua rete VPC condiviso.
    • YOUR_SHARED_SUBNET è il nome della tua subnet VPC condiviso.
    • CIDR_BLOCK è il blocco CIDR per Apigee in un VPC. Ad esempio: 10.111.0.0/23.
  3. Per configurare il peering VPC e il firewall Apigee, esegui lo script con queste 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 all'interno del 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 configurerai il progetto di servizio. Al termine, lo script crea 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 la rete condivisa impostazioni:
    ./apigee-x-trial-provision.sh \
        -p $SERVICE_PROJECT

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

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

Configura un altro progetto di servizio per i servizi di backend

Come best practice, conviene separare l'infrastruttura Google Cloud in più progetti. Vedi Decidi una gerarchia delle risorse per la tua zona di destinazione di Google Cloud. Questa sezione spiega come eseguire il deployment di un backend in un progetto di servizio separato e collegarlo dell'host VPC condiviso. Apigee può utilizzare il servizio di backend come destinazione proxy API perché sia il progetto di servizio Apigee e il progetto di servizio di backend sono collegati all'host del VPC condiviso.

Prerequisiti

Per eseguire questi passaggi, supponiamo che il VPC condiviso sia già configurato e condiviso progetto di servizio di backend, come descritto in Configurazione di un VPC condiviso.

configura il progetto di servizio

In questa sezione testerai un servizio di backend in un'altra subnet VPC condivisa, creerai un secondo nel progetto host e utilizzare il relativo indirizzo IP RFC1918 privato come URL di destinazione per Proxy API Apigee.

  1. Dal tuo progetto di servizio di backend, esegui questo comando per visualizzare 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 è uno degli output delle subnet dal comando precedente.
  3. Per creare un servizio httpbin di backend 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 ed esegui il deployment di un proxy API Apigee seguendo i passaggi in Crea un proxy API.
  5. Recupera l'indirizzo IP interno della macchina virtuale (VM) su cui è in esecuzione il servizio di destinazione. Utilizzerai questo IP nel passaggio successivo per chiamare il proxy API di prova:
    gcloud compute instances list --filter=name=httpbin
  6. Per testare la configurazione, chiama il proxy. Utilizza l'indirizzo IP interno della VM ottenuta nel passaggio precedente. L'esempio seguente presuppone che tu abbia denominato il percorso base del proxy /myproxy. Ad esempio:
    curl -v https://INTERNAL_IP/myproxy

    Questa chiamata API restituisce Hello, Guest!.