Connettività di rete nel VPC Google Cloud
Questa pagina descrive come configurare la connettività privata da Integration Connectors al tuo servizio di backend, ad esempio MySQL, Postgres e SQL Server ospitati in Google Cloud VPC.
Questa pagina presuppone che tu abbia familiarità con i seguenti concetti:
La connettività privata al VPC Google Cloud può rientrare in una delle seguenti categorie:
- Sia il servizio di backend che l'allegato del servizio PSC si trovano nello stesso progetto Google Cloud o VPC.
- Sia il servizio di backend che il collegamento del servizio PSC si trovano in progetti Google Cloud o VPC diversi.
Considerazioni
Quando crei un collegamento del servizio PSC, considera i seguenti punti chiave:
- Il collegamento al servizio PSC e il bilanciatore del carico vengono creati in subnet diverse all'interno dello stesso VPC. Nello specifico, il collegamento del servizio viene sempre creato in una subnet NAT.
- Il traffico proveniente dal bilanciatore del carico e dal probe del controllo di integrità deve essere inviato alla stessa porta.
- Configura le regole firewall per facilitare il flusso di traffico.
Regole in entrata
Il traffico della subnet dell'allegato del servizio PSC deve raggiungere il servizio di backend.
Regole in uscita
Il traffico in uscita è abilitato per impostazione predefinita in un progetto Google Cloud, a meno che non siano configurate regole di negazione specifiche.
- Tutti i componenti Google Cloud, come l'allegato del servizio PSC e il bilanciatore del carico, devono trovarsi nella stessa regione.
Connettività privata a un servizio di backend in un VPC Google Cloud
Questa sezione descrive come stabilire la connettività privata quando sia il servizio di backend sia il collegamento del servizio PSC si trovano nello stesso progetto Google Cloud.
L'immagine seguente mostra la configurazione della connettività di rete privata da Integration Connectors a un servizio ospitato in un VPC Google Cloud:
Per configurare la connettività privata a un servizio di backend in un VPC Google Cloud, completa i seguenti passaggi:
- Crea un collegamento del servizio PSC.
- Crea un collegamento endpoint per utilizzare il collegamento del servizio PSC.
- Configura una connessione per utilizzare il collegamento endpoint.
Crea un collegamento del servizio PSC
Per stabilire la connettività privata da Integration Connectors, il servizio deve essere esposto a Integration Connectors utilizzando un collegamento di servizio PSC. Un collegamento del servizio utilizza sempre un bilanciatore del carico. Pertanto, se il tuo servizio non si trova dietro un bilanciatore del carico, è necessario configurarne uno.
- Crea un probe controllo di integrità e consenti il traffico dal probe.
- Crea il probe del controllo di integrità.
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION
In questo comando, imposta BACKEND_SERVER_PORT su 3306, che è la porta predefinita su cui viene eseguito il server MySQL.
- Crea una regola firewall per consentire il traffico dal probe.
gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
- Crea il probe del controllo di integrità.
- Crea un bilanciatore del carico interno L4 e consenti il traffico dal bilanciatore del carico.
- Crea un servizio di backend.
gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION
- Aggiungi il gruppo di istanze al servizio di backend.
gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
- Crea una regola di forwarding.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
-
Crea una regola firewall per consentire il traffico interno dal bilanciatore del carico al gruppo di istanze.
gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Crea un servizio di backend.
- Crea il collegamento al servizio
- Crea una subnet per PSC NAT. Il seguente comando crea una subnet con il nome
psc-nat-subnet1
e lo scopo èPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Crea una regola firewall per consentire il traffico da PSC NAT al bilanciatore del carico.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Crea un collegamento al servizio con approvazione esplicita.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
In questo comando, LIMIT è il limite di connessione per il progetto. Il limite di connessioni è il numero di endpoint PSC consumer che possono connettersi a questo servizio. Per ottenere il SERVICE_DIRECTORY_PROJECT_ID, segui questo passaggio:
-
Puoi creare il collegamento al servizio PSC in modo che accetti richieste solo dai progetti Google Cloud specificati. Tuttavia, per farlo, devi disporre dell'ID progetto della directory dei servizi associata al tuo progetto Google Cloud. Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato nell'esempio seguente.
Sintassi
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Sostituisci quanto segue:
- CONNECTORS_PROJECT_ID: l'ID del tuo progetto Google Cloud in cui hai creato la connessione.
Esempio
Questo esempio recupera l'ID progetto della directory dei servizi per il progetto Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
L'esecuzione di questo comando nel terminale mostra un output simile al seguente:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Nell'output di esempio, per il progetto Google Cloud
connectors-test
, l'ID progetto della service directory èabcdefghijk-tp
.
-
- Crea una subnet per PSC NAT. Il seguente comando crea una subnet con il nome
Dopo aver creato un collegamento al servizio PSC, crea un collegamento endpoint per utilizzare il collegamento al servizio PSC. Per saperne di più, consulta Creare un collegamento endpoint.
Connettività privata per diversi progetti Google Cloud
Questa sezione descrive come stabilire la connettività privata quando il servizio di backend e il collegamento del servizio PSC si trovano in progetti Google Cloud o VPC diversi.
L'immagine seguente mostra la configurazione della connettività di rete privata in cui il collegamento del servizio PSC e il servizio di backend si trovano in progetti Google Cloud diversi:
Per configurare la connettività privata per diversi progetti Google Cloud, completa i seguenti passaggi:
- Configura la connettività privata.
- Crea un collegamento endpoint per utilizzare il collegamento del servizio PSC.
- Configura una connessione per utilizzare il collegamento endpoint.
Configura la connettività privata
Per configurare la connettività privata:
- Crea un bilanciatore del carico. Se hai già un bilanciatore del carico, salta questo passaggio.
- Crea un NEG di zona. Per saperne di più, consulta Crea un NEG di zona.
- Aggiungi il NEG zonale come backend e crea le seguenti regole:
- Crea una regola di forwarding.
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \ --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \ --backend-service-region=REGION
-
Crea una regola firewall per consentire il traffico interno dal bilanciatore del carico al gruppo di istanze.
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \ --direction=INGRESS --priority=1000 --network=VPC_NETWORK \ --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
- Crea una regola di forwarding.
- Crea il collegamento al servizio
- Crea una subnet per PSC NAT. Il seguente comando crea una subnet con il nome
psc-nat-subnet1
e lo scopo èPRIVATE_SERVICE_CONNECT
.gcloud compute networks subnets create psc-nat-subnet1 \ --network=VPC_NETWORK --range=SUBNET_RANGE_1 \ --purpose=PRIVATE_SERVICE_CONNECT
- Crea una regola firewall per consentire il traffico da PSC NAT al bilanciatore del carico.
gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \ --direction=INGRESS --network=VPC_NETWORK \ --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
- Crea un collegamento al servizio con approvazione esplicita.
gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1
In questo comando, LIMIT è il limite di connessione per il progetto. Il limite di connessioni è il numero di endpoint PSC consumer che possono connettersi a questo servizio. Per ottenere il SERVICE_DIRECTORY_PROJECT_ID, segui questo passaggio:
-
Puoi creare il collegamento al servizio PSC in modo che accetti richieste solo dai progetti Google Cloud specificati. Tuttavia, per farlo, devi disporre dell'ID progetto della directory dei servizi associata al tuo progetto Google Cloud. Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato nell'esempio seguente.
Sintassi
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Sostituisci quanto segue:
- CONNECTORS_PROJECT_ID: l'ID del tuo progetto Google Cloud in cui hai creato la connessione.
Esempio
Questo esempio recupera l'ID progetto della directory dei servizi per il progetto Google Cloud
connectors-test
.curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
L'esecuzione di questo comando nel terminale mostra un output simile al seguente:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Nell'output di esempio, per il progetto Google Cloud
connectors-test
, l'ID progetto della service directory èabcdefghijk-tp
.
-
- Crea una subnet per PSC NAT. Il seguente comando crea una subnet con il nome
Aggiungere alla lista consentita il progetto Integration Connectors in un collegamento di servizio
Puoi creare il collegamento al servizio PSC in modo che accetti richieste solo dai progetti Google Cloud specificati. Tuttavia, per farlo, devi disporre dell'ID progetto della directory dei servizi associata al tuo progetto Google Cloud. Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato nell'esempio seguente.
Sintassi
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"
Sostituisci quanto segue:
- CONNECTORS_PROJECT_ID: l'ID del tuo progetto Google Cloud in cui hai creato la connessione.
Esempio
Questo esempio recupera l'ID progetto della directory dei servizi per il progetto Google Cloud connectors-test
.
curl -X GET \ -H "authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"
L'esecuzione di questo comando nel terminale mostra un output simile al seguente:
..... { "connections": [ { "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa", "createTime": "2022-10-07T09:02:31.905048520Z", "updateTime": "2022-10-07T09:22:39.993778690Z", "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1", "status": { "state": "ACTIVE" }, "configVariables": [ { "key": "project_id", "stringValue": "connectors-test" }, { "key": "dataset_id", "stringValue": "testDataset" } ], "authConfig": {}, "serviceAccount": "564332356444-compute@developer.gserviceaccount.com", "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime", "nodeConfig": { "minNodeCount": 2, "maxNodeCount": 50 } }, ....
Nell'output di esempio, per il progetto Google Cloud connectors-test
, l'ID progetto
della service directory è abcdefghijk-tp
.
Dopo aver inserito il progetto Integration Connectors in un elenco consentito in un collegamento del servizio PSC, crea un collegamento endpoint per utilizzare il collegamento del servizio PSC. Per saperne di più, consulta Creare un collegamento endpoint.
Crea un collegamento dell'endpoint
Collegamento dell'endpoint come indirizzo IPPer istruzioni su come creare un collegamento dell'endpoint come indirizzo IP, consulta Creare un collegamento dell'endpoint come indirizzo IP.
Collegamento endpoint come nome hostIn alcuni casi, come i backend abilitati per TLS, la destinazione richiede l'utilizzo di nomi host anziché IP privati per eseguire la convalida TLS. Nei casi in cui viene utilizzato un DNS privato anziché un indirizzo IP per la destinazione host, oltre a creare un collegamento endpoint come indirizzo IP, devi anche configurare le zone gestite. Per istruzioni su come creare un collegamento endpoint come nome host, vedi Creare un collegamento endpoint come nome host.
In un secondo momento, quando configuri la connessione per utilizzare l'allegato dell'endpoint, puoi selezionarlo.
Configura una connessione per utilizzare il collegamento endpoint
Ora che hai creato un collegamento dell'endpoint, utilizzalo nella connessione. Quando crei una nuova connessione o aggiorni una connessione esistente, nella sezione Destinazioni, seleziona Collegamento endpoint come Tipo di destinazione e seleziona il collegamento endpoint che hai creato dall'elenco Collegamento endpoint.
Se hai creato una zona gestita, seleziona Indirizzo host come Tipo di destinazione e utilizza il record A che hai creato durante la creazione della zona gestita.
Suggerimenti per la risoluzione dei problemi
Se hai problemi con la connettività privata, segui le linee guida elencate in questa sezione per evitare problemi comuni.
- Per verificare che il collegamento endpoint sia configurato correttamente e che la connessione PSC sia stabilita, controlla lo stato della connessione. Per saperne di più, vedi Verificare la connessione dell'allegato dell'endpoint.
- Assicurati che le regole firewall abbiano la seguente configurazione:
- Il traffico dalla subnet del collegamento del servizio PSC deve essere autorizzato a raggiungere il servizio di backend.
- Il bilanciatore del carico deve essere in grado di inviare traffico al servizio di backend.
- Bilanciatori del carico pass-through (L4 TCP/UDP ILB)
Le richieste provenienti dagli IP NAT del collegamento di servizio PSC devono essere in grado di raggiungere il backend. Questi IP NAT vengono allocati automaticamente dall'intervallo di subnet NAT PSC, pertanto devi consentire l'intero intervallo di indirizzi IP della subnet NAT in cui risiede l'allegato di servizio. Per trovare la subnet NAT PSC,
utilizza il seguente comando:
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
- Bilanciatori del carico basati su proxy/HTTP(S) (bilanciatore del carico interno proxy L4, bilanciatore del carico interno L7)
Le richieste provenienti da un bilanciatore del carico proxy hanno origine dalla subnet solo proxy della
regione. Pertanto, le regole firewall devono essere configurate per consentire alle richieste
provenienti dagli intervalli di subnet solo proxy di raggiungere il backend. Per trovare la subnet
solo proxy, utilizza il seguente comando:
gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
- Il probe del controllo di integrità deve essere in grado di accedere al sistema di backend. I probe di controllo di integrità di Google Cloud hanno un intervallo IP fisso (35.191.0.0/16, 130.211.0.0/22). Pertanto, questi indirizzi IP devono essere autorizzati a inviare traffico al tuo server di backend.
Per informazioni sulla risoluzione dei problemi del bilanciatore del carico, consulta la pagina Risolvere i problemi relativi ai bilanciatori del carico delle applicazioni interni.
- Bilanciatori del carico pass-through (L4 TCP/UDP ILB)
Le richieste provenienti dagli IP NAT del collegamento di servizio PSC devono essere in grado di raggiungere il backend. Questi IP NAT vengono allocati automaticamente dall'intervallo di subnet NAT PSC, pertanto devi consentire l'intero intervallo di indirizzi IP della subnet NAT in cui risiede l'allegato di servizio. Per trovare la subnet NAT PSC,
utilizza il seguente comando:
- Il test di connettività Google Cloud può essere utilizzato per identificare eventuali lacune nella configurazione di rete. Per saperne di più, vedi Creare ed eseguire test di connettività.