Questa pagina si applica ad Apigee, ma non ad Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Questo documento spiega come utilizzare Private Service Connect (PSC) per creare una connessione privata tra Apigee e i servizi di destinazione di backend. Per impostazione predefinita, puoi accedere agli endpoint target a livello globale. Tieni presente che il traffico del proxy API che passa tra Apigee e un servizio di destinazione di backend è definito traffico "in uscita".
I passaggi per la configurazione della rete southbound descritti in questo documento si applicano sia alle istanze Apigee con peering VPC sia a quelle con peering non VPC. Tieni presente, tuttavia, che il peering DNS privato è supportato solo per le istanze Apigee con peering VPC.
Connessione privata di Apigee ai target di backend
Per connettere privatamente Apigee a un target di backend, devi creare due entità: un collegamento di servizio nella rete VPC in cui è dipiegato il target e un collegamento di endpoint nel VPC di Apigee. Queste due entità consentono ad Apigee di connettersi al servizio di destinazione.
La Figura 1 mostra l'architettura di rete Apigee che supporta l'accesso globale per le connessioni southbound in più regioni:
Figura 1: architettura di rete southbound di Apigee.
Limitazioni
In un'organizzazione Apigee, è consentito un allegato di endpoint per un determinato allegato di servizio. Ad esempio, supponiamo che tu abbia 10 allegati di servizio che espongono i servizi target. Puoi creare 10 allegati di endpoint nella tua organizzazione Apigee, uno per ogni allegato di servizio.
Esempio: esposizione di un servizio target ad Apigee
Questo esempio mostra come utilizzare PSC per consentire ad Apigee di comunicare con un servizio target in esecuzione
in una rete VPC non in peering diretto con Apigee. I passaggi di questo esempio utilizzano le chiamate API gcloud
e Apigee per impostare e configurare un collegamento di servizio nella rete VPC in cui è eseguito il deployment della destinazione e un collegamento di endpoint nel VPC Apigee.
Scenario di esempio
Questo esempio prende in considerazione il caso in cui hai un server web Apache di cui è stato eseguito il deployment in un gruppo di istanze gestite (MIG) in esecuzione nella tua VPC. Per poter comunicare con Apigee in questo contesto, esponiamo i servizi tramite un gateway di ingresso.
Configura un bilanciatore del carico
Configura un bilanciatore del carico nel VPC in cui si trovano i microservizi che vuoi esporre:
- 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
- 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"
- 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
- 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
- Crea un bilanciatore del carico:
- 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
- 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
- Crea una regola di forwarding:
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 servizio di backend:
Creare un allegato del servizio
Crea un allegato del servizio PSC nella rete VPC in cui sono dipiazzati i servizi target.
- Per eseguire questa attività, devi disporre dell'autorizzazione
compute.subnetworks.create
o del ruolo IAM Amministratore rete Compute (roles/compute.networkAdmin
). - Crea una subnet PSC con il parametro
purpose
impostato suPRIVATE_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
- Crea un allegato del servizio nella rete VPC:
- Recupera 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
- 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, composta solo da lettere minuscole, numeri e trattini. Non può contenere numeri e trattini iniziali. Inoltre, non può contenere i trattini finali. Per una descrizione dettagliata dei parametri di questo comando, consulta il riferimento di 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 eseguire questo passaggio anche nell'interfaccia utente della console. Ad esempio, consulta Pubblicare un servizio con l'approvazione automatica del progetto.
- Recupera la regola di inoltro del
bilanciatore del carico interno.
Utilizzerai questa regola in un passaggio successivo:
Crea un collegamento dell'endpoint
Crea un collegamento dell'endpoint nell'organizzazione Apigee. Puoi eseguire questo passaggio dalla riga di comando o dall'interfaccia utente dell'allegato dell'endpoint Apigee.
Prerequisito: prima di creare un collegamento all'endpoint, devi pubblicare i servizi che vuoi esporre utilizzando Private Service Connect (PSC) creando un bilanciatore del carico e un collegamento al servizio, come spiegato in precedenza in questo esempio. Per ulteriori informazioni sull'esposizione dei servizi con PSC, consulta Pubblicare servizi gestiti utilizzando Private Service Connect. Tieni presente che l'attacco del servizio deve essere configurato per accettare nuove connessioni.
Riga di comando
Crea un collegamento dell'endpoint nella VPC di Apigee dalla riga di comando:
- Recupera la risorsa del collegamento al servizio:
gcloud compute service-attachments list
Il comando restituisce le informazioni relative all'allegato del servizio. Utilizzerai 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
- Recupera il token di autenticazione per l'API Apigee:
TOKEN="$(gcloud auth print-access-token)"
- Utilizza questa API Apigee per creare l'allegato dell'endpoint. Utilizza i valori restituiti dal
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 l'allegato del servizio.
- EA_NAME è il nome dell'allegato dell'endpoint. Il nome deve essere univoco. Non possono essere presenti altri endpoint con lo stesso nome e non puoi modificarlo in un secondo momento. Il nome deve iniziare con una lettera minuscola seguita da un massimo di 31 lettere minuscole, numeri o trattini, ma non può terminare 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, visualizzerai una risposta simile alla 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 l'allegato del servizio, come mostrato nel passaggio successivo. Tieni presente che7.0.3.4
è un privately used public IP (PUPI) assegnato da Apigee al gateway in entrata. Non viene pubblicizzato su internet e nessun servizio Google utilizza internamente gli IP in questo intervallo. - REGION è la regione del collegamento al servizio. Ad esempio:
- Utilizza l'indirizzo IP dell'host dell'attacco del servizio come target 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 dell'endpoint nell'organizzazione Apigee nell'interfaccia utente di Apigee:
- Nell'interfaccia utente di Apigee, vai ad Amministrazione > Allegati endpoint.
- Fai clic su + Allegato endpoint. Viene visualizzata la finestra di dialogo Collegamento endpoint.
- Inserisci un nome per l'allegato dell'endpoint. Il nome deve essere univoco. Non possono essere presenti altri endpoint con lo stesso nome e non puoi modificarlo in un secondo momento. Il nome deve iniziare con una lettera minuscola seguita da un massimo di 31 lettere minuscole, numeri o trattini, ma non può terminare con un trattino. La lunghezza minima è 2.
- Fai clic su Avanti.
- Dall'elenco a discesa Collegamento di servizio, scegli il collegamento di servizio a cui connetterti.
Il comportamento dell'interfaccia utente dipende dalle tue autorizzazioni. Se disponi dell'autorizzazione per elencare le regioni e i collegamenti ai servizi, puoi semplicemente selezionare il collegamento al servizio dall'elenco a discesa. Se non disponi dell'autorizzazione per elencare le regioni, viene visualizzato un elenco statico di regioni che puoi selezionare. Se non disponi dell'autorizzazione per elencare gli allegati del servizio, devi inserire il nome manualmente. e il nome del collegamento al servizio. Tieni presente che se non disponi dell'autorizzazione per elencare le regioni, verrà visualizzato un elenco statico di regioni tra cui scegliere.
- Verifica che l'endpoint del servizio possa accettare connessioni. Per la procedura, consulta Controllare e gestire la connettività degli allegati.
- Fai clic su Avanti.
- Fai clic su Crea. Il completamento dell'operazione richiede in genere uno o due minuti.
- Per controllare lo stato corrente della creazione, fai clic su Aggiorna nella pagina dell'elenco.
- Utilizza l'indirizzo IP dell'host dell'attacco del servizio come target di un proxy API.
L'IP host viene visualizzato nell'interfaccia utente degli allegati dell'endpoint al termine del processo di creazione, come mostrato
nello screenshot seguente:
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 allegato del servizio possa accedere a un allegato dell'endpoint nel progetto Apigee e come modificare la preferenza di connessione, se vuoi.
- Segui i passaggi descritti in Elenco dei servizi pubblicati per visualizzare l'elenco degli allegati di servizio nel progetto.
- Seleziona il collegamento al servizio a cui vuoi connetterti come spiegato in Visualizzare i dettagli di un servizio pubblicato.
- Scegli una preferenza di connessione per il collegamento del servizio pubblicato. Private Service Connect offre due opzioni descritte di seguito. Se vuoi modificare la preferenza di connessione corrente, segui la procedura descritta in Modificare la preferenza di connessione per un servizio pubblicato.
- Accetta automaticamente tutte le connessioni: il collegamento del servizio accetta i collegamenti degli endpoint da qualsiasi progetto. Se scegli questa opzione, il collegamento del servizio potrà accettare una connessione da un collegamento dell'endpoint nel progetto Apigee. Non è necessaria alcuna ulteriore configurazione.
- Accetta connessioni da progetti selezionati: specifica i progetti da cui il collegamento al servizio accetterà le connessioni. Se scegli questa opzione, devi aggiungere il
progetto ID del progetto Apigee al collegamento del servizio. Puoi trovare
l'ID progetto Apigee nel passaggio Verifica la connessione del progetto nell'interfaccia utente di Allegato endpoint, come mostrato in questo screenshot:
Puoi anche recuperare l'ID progetto Apigee utilizzando l'API Apigee Organizations, che restituisce l'ID in un campo denominato
apigeeProjectId
.
- Se hai apportato modifiche alle preferenze di connessione, salvale.
- Nell'interfaccia utente di Apigee, vai ad Amministrazione > Allegati endpoint. Puoi anche elencare gli allegati dell'endpoint con l'API Apigee Endpoints.
- Nell'elenco degli allegati, verifica che lo stato della connessione del PSC sia ora
ACCEPTED
. Se il campo mostra uno stato diverso daACCEPTED
, consulta Risoluzione dei problemi relativi allo stato della connessione del PSC.
Gestione dei collegamenti endpoint
L'API endpointAttachments di Apigee fornisce metodi per creare, eliminare, recuperare ed elencare gli allegati degli endpoint.
Collegamenti endpoint dell'elenco
Puoi visualizzare un elenco di collegamenti endpoint nell'interfaccia utente dei collegamenti endpoint di Apigee o chiamando l'API Endpoints di Apigee.
Per elencare i collegamenti di un endpoint nell'interfaccia utente di Apigee:
- Nell'interfaccia utente di Apigee, vai ad Amministrazione > Allegati endpoint.
- Visualizza l'elenco dei collegamenti degli endpoint.
Creazione di un collegamento dell'endpoint
Per creare un collegamento dell'endpoint nell'interfaccia utente o con l'API Apigee Endpoints, consulta Creare un collegamento dell'endpoint.
Eliminazione di un collegamento dell'endpoint
Per eliminare un endpoint utilizzando l'interfaccia utente di Apigee:
- Nell'interfaccia utente di Apigee, vai ad Amministrazione > Allegati endpoint.
- Seleziona il collegamento dell'endpoint da eliminare.
- Fai clic su Elimina collegamento dell'endpoint.
Puoi anche utilizzare l'API Apigee Endpoints per elencare, creare ed eliminare gli allegati degli endpoint.
Peering DNS privato
Se hai una zona privata Cloud DNS ospitata nel progetto Cloud in coppia con Apigee, puoi configurare il peering DNS per consentire ad Apigee di risolvere i nomi nella tua zona privata. Per impostazione predefinita, le zone private sono private per la rete VPC in cui sono ospitate. Per la procedura di configurazione del 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 allegato dell'endpoint e lo stato è Attivo, ma lo stato della connessione non è Accettato. Alcuni possibili stati di connessione sono mostrati nella Figura 2.
Figura 2: dettagli dello stato del collegamento dell'endpoint
Lo stato fornito può aiutarti a individuare la causa probabile, come descritto nella tabella seguente:
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 dei progetti rifiutati. | Aggiungi l'ID progetto Apigee all'elenco di accettazione del consumatore nell'aggancio del servizio. Consulta Modificare la preferenza di connessione per un servizio pubblicato. |
RIFIUTATA | L'ID progetto Apigee è nell'elenco di rifiuto del consumer. | Rimuovi l'ID progetto Apigee dall'elenco di rifiuto del consumer e aggiungilo all'elenco di accettazione del consumer nell'allegato del servizio. Consulta Gestire le richieste di accesso a un servizio pubblicato. |
FROZEN | Il collegamento al servizio per questo collegamento endpoint è stato sospeso o disabilitato. | Per informazioni dettagliate, descrivi l'allegato del servizio. Consulta 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 il collegamento all'endpoint. |
NEEDS_ATTENTION | L'associazione dell'endpoint è stata accettata dall'associazione del servizio, ma si è verificato un problema con l'associazione del servizio. | Per ulteriori dettagli, descrivi il collegamento al servizio. Consulta Visualizzare i dettagli di un servizio pubblicato. |
NON DISPONIBILE | Lo stato di connettività non è disponibile, il che può verificarsi durante il provisioning. | Attendi qualche minuto per vedere se lo stato cambia. |
Configurazione PSC con Apigee
Consulta il playbook Problemi di connettività di Apigee con i target PSC southbound.