Pattern di networking verso sud

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

Visualizza documentazione di Apigee Edge.

Questo documento spiega come utilizzare le impostazioni private Service Connect (PSC) per creare una connessione privata tra Apigee e i servizi di destinazione del backend. Per impostazione predefinita, puoi accedere agli endpoint di destinazione a livello globale. Tieni presente che il proxy API il traffico che fluisce tra Apigee e un servizio di destinazione backend viene definito come "in direzione sud" per via del traffico.

I passaggi di configurazione della rete verso sud descritti in questo documento si applicano sia ai peering VPC e non istanze di Apigee in peering VPC. Tieni presente, tuttavia, che il peering DNS privato è supportato solo per le istanze Apigee con peering VPC.

Connessione privata di Apigee alle destinazioni del backend

Per connettere privatamente Apigee a una destinazione di backend, devi creare due entità: una collegamento del servizio nella rete VPC in cui viene eseguito il deployment del target e di un collegamento endpoint nel VPC Apigee. Questi due entità consentono ad Apigee di connettersi al servizio di destinazione.

La Figura 1 illustra l'architettura di networking di Apigee che supporta l'accesso globale per la zona sud connessioni tra più regioni:

Figura 1: architettura di rete di Apigee verso sud.

Limitazioni

In un'organizzazione Apigee è consentito un collegamento endpoint per un determinato collegamento a servizio. Ad esempio, supponiamo che tu abbia 10 collegamenti ai servizi che espongono i servizi di destinazione. Puoi creare 10 collegamenti di endpoint nella tua organizzazione Apigee, uno per ogni collegamento al servizio.

Esempio: esposizione di un servizio di destinazione ad Apigee

Questo esempio mostra come utilizzare PSC per consentire ad Apigee di comunicare con un servizio di destinazione in esecuzione in una rete VPC non connessa direttamente in peering con Apigee. I passaggi in questo esempio utilizzano gcloud e le chiamate API Apigee per impostare e configurare un collegamento a un servizio nella rete VPC in cui viene eseguito il deployment della destinazione e di un collegamento endpoint nel VPC Apigee.

Scenario di esempio

Questo esempio considera un caso in cui è stato eseguito il deployment di un server web Apache su un gruppo di istanze gestite (MIG) in esecuzione nel VPC. Per poter comunicare con Apigee in questo contesto, esponiamo i servizi tramite un gateway in entrata.

Configura un bilanciatore del carico

Configura un bilanciatore del carico nel tuo VPC in cui i microservizi che vuoi esporre,

  1. Crea queste variabili di ambiente:
    export PROJECT_ID=YOUR_PROJECT_ID
    export IMAGE_PROJECT=debian-cloud
    export IMAGE_FAMILY=debian-12
    export BACKEND=foo
    export REGION=us-west1
    export ZONE=us-west1-a
    export NETWORK=default
    export SUBNET_NAME=default
  2. Crea un modello di istanza:
    gcloud compute instance-templates create "$BACKEND" \
        --tags=psc-demo,http-server,https-server \
        --image-family "$IMAGE_FAMILY" --image-project "$IMAGE_PROJECT" \
        --network "$NETWORK" --subnet "$SUBNET_NAME" --region "$REGION" \
        --project "$PROJECT_ID" \
        --metadata startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>foo[/]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
        sudo mkdir /var/www/html/foo
        echo '<!doctype html><html><body><h1>foo[/foo]: '\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/foo/index.html"
  3. Crea un gruppo di istanze gestite:
    gcloud compute instance-groups managed create $BACKEND \
        --project $PROJECT_ID --base-instance-name $BACKEND \
        --size 1 --template $BACKEND --region $REGION
  4. Crea un controllo di integrità:
    gcloud compute instance-groups managed set-named-ports $BACKEND \
        --project $PROJECT_ID --region $REGION --named-ports http:80
    gcloud compute health-checks create tcp hc-tcp-$BACKEND \
      --region=$REGION \
      --description="health check for psc backend" \
      --port-name=http --project=$PROJECT_ID
  5. Crea un bilanciatore del carico:
    1. Crea un servizio di backend:
      gcloud compute backend-services create be-ilb \
          --load-balancing-scheme=internal \
          --protocol=tcp \
          --region=$REGION \
          --network=$NETWORK \
          --health-checks=hc-tcp-$BACKEND \
          --health-checks-region=$REGION \
          --project=$PROJECT_ID
    2. Aggiungi il gruppo di istanze gestite al servizio di backend:
      gcloud compute backend-services add-backend be-ilb \
          --region=$REGION \
          --instance-group=$BACKEND \
          --instance-group-zone=$ZONE \
          --project=$PROJECT_ID
      
    3. Crea una regola di inoltro:
      gcloud compute forwarding-rules create fr-ilb \
          --region=$REGION \
          --load-balancing-scheme=internal \
          --network=$NETWORK \
          --subnet=$SUBNET_NAME \
          --ip-protocol=TCP \
          --ports=80 \
          --backend-service=be-ilb \
          --backend-service-region=$REGION \
          --project=$PROJECT_ID

Crea un collegamento a un servizio

Crea un collegamento al servizio PSC nella rete VPC in cui viene eseguito il deployment dei servizi di destinazione.

  1. Per eseguire questa attività, devi avere il Autorizzazione compute.subnetworks.create o Amministratore rete Compute ruolo IAM (roles/compute.networkAdmin).
  2. Crea una subnet PSC con il parametro purpose impostato su PRIVATE_SERVICE_CONNECT:
    gcloud compute networks subnets create PSC_SUBNET_NAME \
      --network NETWORK --region=REGION --purpose=PRIVATE_SERVICE_CONNECT --range=RANGE
    gcloud compute --project=$PROJECT_ID firewall-rules create allow-psc-nat-80 \
      --direction=INGRESS --priority=1000 --network NETWORK --action=ALLOW --rules=tcp:80
      --source-ranges=RANGE --target-tags=psc-demo

    Per una descrizione dettagliata dei parametri del comando, consulta la documentazione di riferimento di Google Cloud CLI. Puoi eseguire questo passaggio anche nella console o con un'API.

    Ad esempio:

    gcloud compute networks subnets create psc-subnet --network default \
    --region=us-west1 --purpose=PRIVATE_SERVICE_CONNECT --range=10.100.0.0/28
  3. Crea un collegamento a un servizio nella tua rete VPC:
    1. Ottieni la regola di inoltro del bilanciatore del carico interno. Utilizzerai questa regola in un passaggio successivo:
      gcloud compute forwarding-rules list --project=PROJECT_ID

      Dove PROJECT_ID è un ID progetto Google Cloud. Ad esempio:

      gcloud compute forwarding-rules list --project=my-project
      NAME                                                  REGION    IP_ADDRESS    IP_PROTOCOL  TARGET
      k8s2-tcp-e61tta3j-apps-istio-ingressgateway-0kl92frk  us-west1  10.138.0.53   TCP
      
    2. Crea il collegamento al servizio:
      gcloud compute service-attachments create PSC_NAME \
          --region=REGION --producer-forwarding-rule=PRODUCER_FORWARDING_RULE \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=PSC_SUBNET_NAME --project=PROJECT_ID

      Il parametro NAME deve essere una stringa di 1-63 caratteri, composto solo da lettere minuscole, numeri e trattini. Non può avere numeri e trattini. Inoltre, non può contenere trattini finali. Per una descrizione dettagliata dei parametri per questo comando, consulta Riferimento per Google Cloud CLI.

      Ad esempio:

      gcloud compute service-attachments create gkebackend \
          --region=us-west1 --producer-forwarding-rule=k8s2-tcp-e62tta1j-apps-istio-ingressgateway-0kl92frk \
          --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-subnet --project=my-project

      Puoi anche eseguire questo passaggio nell'interfaccia utente della console. Vedi, ad esempio, Pubblicare un servizio con approvazione automatica del progetto.

Crea un collegamento dell'endpoint

Creare un collegamento endpoint nell'organizzazione Apigee. Puoi eseguire questo passaggio dalla riga di comando o UI del collegamento di endpoint Apigee.

Prerequisito: prima di creare un collegamento dell'endpoint, devi pubblicare i servizi vuoi esporre utilizzando Private Service Connect (PSC) creando un bilanciatore del carico e un servizio come spiegato in precedenza in questo esempio. Per ulteriori informazioni sull'esposizione dei servizi con PSC, consulta Pubblicazione di servizi gestiti utilizzando Service Connect. Tieni presente che il collegamento al servizio deve essere configurato in modo da accettare nuove connessioni.

Riga di comando

Crea un collegamento dell'endpoint nel VPC di Apigee dalla riga di comando:

  1. Ottieni la risorsa di collegamento al servizio:
    gcloud compute service-attachments list

    Il comando restituisce le informazioni sul collegamento al servizio. Userai queste informazioni nel passaggio successivo. Ad esempio:

    NAME       REGION   TARGET_SERVICE                                       CONNECTION_PREFERENCE
    gkebackend us-west1 k8s2-tcp-tgysilgj-apps-istio-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
  2. Ottieni il token di autenticazione per l'API Apigee:
    TOKEN="$(gcloud auth print-access-token)"
  3. Utilizza questa API Apigee per creare il collegamento dell'endpoint. Utilizza i valori restituiti dalla Comando gcloud compute service-attachments list nel corpo della richiesta:
    curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type:application/json" \
    "https://apigee.googleapis.com/v1/organizations/ORGANIZATION/endpointAttachments?endpointAttachmentId=EA_NAME" \
    -d '{
        "location": "REGION",
        "serviceAttachment": "projects/PROJECT_ID/regions/REGION/serviceAttachments/SA_NAME"
    }'

    Dove:

    • REGION è la regione del collegamento al servizio. Ad esempio: us-west1
    • ORGANIZATION è il nome della tua organizzazione Apigee.
    • PROJECT_ID è il progetto Google Cloud in cui è stato creato il collegamento al servizio.
    • EA_NAME è il nome del collegamento dell'endpoint. Il nome deve essere univoco. Non possono esistere altri endpoint allegati con lo stesso nome, che non potrai più modificare. Il nome deve iniziare con lettera minuscola seguita da un massimo di 31 lettere minuscole, numeri o trattini, ma non può terminano con un trattino. La lunghezza minima è 2.
    • SA_NAME è il nome del collegamento al servizio.

    Apigee avvia un'operazione a lunga esecuzione. Al termine dell'operazione, vedrai una risposta simile al seguente:

    {
      "name": "organizations/my-organization/operations/6e249895-e78e-48f0-a28f-7140e15e1676",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/my-organization/endpointAttachments/gkebackend",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.EndpointAttachment",
        "name": "organizations/my-organization/endpointAttachments/gkebackend",
        "location": "us-west1",
        "host": "7.0.3.4",
        "serviceAttachment": "projects/my-project/regions/us-west1/serviceAttachments/gkebackend"
      }
    }

    Ora puoi utilizzare l'indirizzo IP 7.0.3.4 restituito nella risposta per connetterti ai servizi dietro al collegamento al servizio, come mostrato nel passaggio successivo. Tieni presente che 7.0.3.4 è un IP pubblico utilizzato privatamente (PUPI) assegnato da Apigee al gateway in entrata. È non sono pubblicizzati su internet e nessun servizio Google utilizza IP in questo intervallo.

  4. Utilizza l'IP dell'host del collegamento al servizio come destinazione di un proxy API. Ad esempio:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.3.4/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Interfaccia utente di Apigee

Crea un collegamento endpoint nell'organizzazione Apigee nella UI di Apigee:

  1. Nell'UI di Apigee, vai ad Amministrazione > Collegamenti endpoint.
  2. Fai clic su + Collegamento endpoint. Viene visualizzata la finestra di dialogo del collegamento dell'endpoint.
  3. Inserisci un nome per il collegamento dell'endpoint. Il nome deve essere univoco. Non possono esistere altri endpoint allegati con lo stesso nome, che non potrai più modificare. Il nome deve iniziare con lettera minuscola seguita da un massimo di 31 lettere minuscole, numeri o trattini, ma non può terminano con un trattino. La lunghezza minima è 2.
  4. Fai clic su Avanti.
  5. Dall'elenco a discesa Collegamento del servizio, scegli il collegamento al servizio a cui connetterti.

    Il comportamento dell'interfaccia utente dipende dalle tue autorizzazioni. Se disponi dell'autorizzazione per elencare regioni e collegamenti ai servizi, puoi semplicemente selezionare il collegamento al servizio elenco a discesa. Se non hai l'autorizzazione per elencare le regioni, verrà visualizzato un elenco statico di regioni ed è possibile selezionarlo dall'elenco. Se non hai l'autorizzazione per elencare il servizio allegati, devi inserire il nome manualmente. localizzato e il nome del collegamento al servizio. Tieni presente che se non disponi dell'autorizzazione per elencare le regioni, viene visualizzato un elenco statico di regioni tra cui puoi scegliere.

    Posizione dell&#39;ID progetto Apigee necessario per la configurazione del collegamento al servizio.

  6. Verifica che l'endpoint di servizio possa accettare connessioni. Per i passaggi, vedi Verificare e gestire la connettività degli allegati.
  7. Fai clic su Avanti.
  8. Fai clic su Crea. L'operazione in genere richiede uno o due minuti.
  9. Per controllare lo stato della creazione attuale, fai clic su Aggiorna nella pagina dell'elenco.
  10. Utilizza l'IP dell'host del collegamento al servizio come destinazione di un proxy API. L'IP host viene visualizzato nell'interfaccia utente degli endpoint allegati al completamento del processo di creazione, come mostrato nello screenshot seguente:

    L&#39;IP host del collegamento al servizio viene mostrato nella UI del collegamento dell&#39;endpoint

    Ad esempio:
    <TargetEndpoint name="default">
        <HTTPTargetConnection>
            <URL>http://7.0.5.2/orders</URL>
        </HTTPTargetConnection>
    </TargetEndpoint>

Controllare e gestire la connettività degli allegati

Questa sezione spiega come verificare che un collegamento a un servizio possa accedere a un endpoint allegato nel tuo progetto Apigee e come modificare la preferenza di connessione se vuoi modificarlo.

  1. Segui i passaggi descritti in Elencare i servizi pubblicati per visualizzare l'elenco dei collegamenti ai servizi nel tuo progetto.
  2. Seleziona il collegamento al servizio a cui vuoi connetterti come spiegato in Visualizzare i dettagli di un servizio pubblicato.
  3. Scegli una preferenza di connessione per il collegamento al servizio pubblicato. Private Service Connect offre due opzioni descritti di seguito. Se vuoi modificare la preferenza di connessione corrente, segui i passaggi in Modificare la preferenza di connessione per un servizio pubblicato.
    • Accetta automaticamente tutte le connessioni: il collegamento al servizio accetta i collegamenti degli endpoint da qualsiasi progetto. Se scegli questa opzione, il collegamento al servizio sarà in grado di accettare una connessione da un collegamento endpoint nel progetto Apigee. Non sono disponibili ulteriori configurazioni obbligatorio.
    • Accetta connessioni dai progetti selezionati: devi specificare i progetti da cui collegamento al servizio accetterà connessioni. Se scegli questa opzione, devi aggiungere il parametro dell'ID progetto Apigee al collegamento al servizio. Puoi visualizzare L'ID progetto Apigee nel passaggio Verifica la connessione del progetto nell'interfaccia utente di Collegamento endpoint, come mostrato in screenshot:

      Posizione dell&#39;ID progetto Apigee necessario per la configurazione del collegamento al servizio.

      Puoi anche recuperare l'ID progetto Apigee utilizzando Apigee API Organization, che restituisce l'ID in un campo denominato apigeeProjectId.

  4. Se hai apportato modifiche alle preferenze di connessione, salvale.
  5. Nell'UI di Apigee, vai ad Amministrazione > Collegamenti endpoint. Puoi anche elencare gli endpoint con l'API Apigee Endpoints.
  6. Nell'elenco degli allegati, verifica che lo stato della connessione PSC sia ora ACCEPTED. Se il campo mostra uno stato diverso rispetto a ACCEPTED, consulta la sezione Risoluzione dei problemi di stato di connessione PSC.

Gestione dei collegamenti degli endpoint

L'API endpointAttachments di Apigee fornisce metodi per creare, eliminare, recuperare ed elencare i collegamenti degli endpoint.

Elenco dei collegamenti degli endpoint

Puoi visualizzare un elenco di collegamenti degli endpoint nella UI degli endpoint Apigee o tramite chiamando l'API Apigee Endpoints.

Per elencare i collegamenti di un endpoint nella UI di Apigee:

  1. Nell'UI di Apigee, vai ad Amministrazione > Collegamenti endpoint.
  2. Visualizza l'elenco dei collegamenti degli endpoint.

Creazione di un collegamento dell'endpoint

Per creare un collegamento di endpoint nella UI o con API Apigee Endpoints, consulta la pagina Creare un collegamento endpoint.

Eliminazione di un collegamento dell'endpoint

Per eliminare un endpoint utilizzando la UI di Apigee:

  1. Nell'UI di Apigee, vai ad Amministrazione > Collegamenti endpoint.
  2. Seleziona l'allegato dell'endpoint da eliminare.
  3. Fai clic su Elimina collegamento endpoint.

Puoi anche utilizzare l'API Apigee Endpoints per elencare, creare ed eliminare i collegamenti degli endpoint.

Peering DNS privato

Se disponi di una zona privata di Cloud DNS ospitata nel progetto Cloud in peering con Apigee, puoi configurare il peering DNS per consentire ad Apigee di risolvere i nomi nella zona privata. Per impostazione predefinita, le zone private sono private per la rete VPC in cui in hosting. Per i passaggi di configurazione Peering DNS tra una zona DNS privata e Apigee (il producer di servizi), consulta Condividere zone DNS private con i producer di servizi.

Risoluzione dei problemi

Problemi relativi allo stato della connessione PSC

Questa sezione descrive le possibili soluzioni quando è stato eseguito il provisioning di un collegamento endpoint lo stato è Attivo, ma la connessione lo stato non è Accettato. La Figura 2 mostra alcuni possibili stati della connessione.

Figura 2: dettagli dello stato del collegamento dell'endpoint

Lo stato specificato può essere utile per indicare la causa probabile, descritti nella seguente tabella:

Stato connessione Possibile causa Soluzione consigliata
ACCETTATO Il collegamento al servizio ha accettato la connessione dall'endpoint di connessione. N/D
IN ATTESA L'ID progetto Apigee potrebbe non essere nell'elenco dei progetti accettati dal consumatore né nell'elenco delle parole rifiutate. Aggiungi l'ID progetto Apigee all'elenco di accettazione consumer nella collegamento del servizio. Vedi Modificare la preferenza di connessione per un servizio pubblicato.
RIFIUTATO L'ID progetto Apigee è nell'elenco dei consumatori rifiutati. Rimuovi il ID progetto Apigee dall'elenco dei rifiuti dei consumer e aggiungerlo all'accettazione del consumer nel collegamento al servizio. Consulta Gestire le richieste di accesso a un servizio pubblicato.
CONGELATO Il collegamento al servizio per questo collegamento dell'endpoint è stato sospeso o disattivata. Descrivi il collegamento al servizio per maggiori dettagli. Consulta la sezione Visualizzare i dettagli di un servizio pubblicato.
CHIUSO Il collegamento al servizio per questo collegamento dell'endpoint è stato eliminato. Ricrea il collegamento al servizio e all'endpoint.
NEEDS_ATTENTION Il collegamento dell'endpoint è stato accettato dal servizio allegato, ma c'è un problema con il collegamento al servizio. Descrivi il servizio allegato per maggiori dettagli. Consulta la sezione Visualizzare i dettagli di un servizio pubblicato.
NON DISPONIBILE Lo stato della connettività non è disponibile e questo può verificarsi durante il provisioning. Attendi qualche minuto per vedere se lo stato cambia.

Configurazione PSC con Apigee

Consulta le Playbook sui problemi di connettività Apigee con gli obiettivi PSC indirizzati a sud.