In questa pagina viene descritto come utilizzare Private Service Connect per connettersi a un di Cloud SQL.
Puoi utilizzare Private Service Connect per connetterti a un'istanza Cloud SQL principale o a una qualsiasi delle sue repliche di lettura da più reti Virtual Private Cloud (VPC) che appartengono a diversi gruppi, team, progetti o organizzazioni.
Prima di iniziare
Il supporto per l'utilizzo di Private Service Connect con un'istanza Cloud SQL è disponibile per gcloud CLI
versione 416.0.0 e successive.
Ruoli utente
La tabella seguente fornisce informazioni sui ruoli necessari per utilizzare Private Service Connect con un'istanza Cloud SQL:
Ruolo | Descrizione |
---|---|
compute.networkAdmin |
Concede il controllo completo sulla rete VPC che avvia una connessione a un'istanza Cloud SQL. Puoi creare e gestire indirizzi IP, regole firewall ed endpoint di Private Service Connect. Se utilizzi Private Service Connect per connetterti a un'istanza Cloud SQL da più reti VPC, ogni rete ha il proprio amministratore. |
dns.admin |
Concede il controllo completo sulle risorse Cloud DNS, inclusi zone e record DNS. |
cloudsql.admin |
Fornisce il controllo completo di un'istanza Cloud SQL e ne controlla l'intero ciclo di vita. |
cloudsql.instanceUser |
Fornisce l'accesso all'istanza Cloud SQL. Se ti connetti tramite il client proxy di autenticazione Cloud SQL, devi disporre del ruolo Client Cloud SQL. Se ti connetti direttamente, non hai bisogno di ruoli e autorizzazioni per Identity and Access Management (IAM). |
Crea un'istanza Cloud SQL
Puoi creare un'istanza e abilitare Private Service Connect utilizzando gcloud CLI, Terraform o l'API.
gcloud
Per creare un'istanza e abilitare Private Service Connect per l'istanza, utilizza il comando gcloud sql instances create
:
gcloud sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --enable-bin-log
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza.
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
- REGION_NAME: il nome della regione per l'istanza.
ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è contenuto in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect per l'istanza.
- AVAILABILITY_TYPE: abilita l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
REGIONAL
: abilita l'alta disponibilità ed è consigliato per le istanze di produzione. Il failover dell'istanza viene eseguito su un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per saperne di più sull'impostazione e sulla rimozione dell'alta disponibilità per le istanze, vedi Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.
- MACHINE_TYPE: il tipo di macchina per l'istanza.
- DATABASE_VERSION: la versione del database dell'istanza (ad esempio
MYSQL_8_0
).
Terraform
Per creare un'istanza con Private Service Connect abilitato, utilizza la google_sql_database_instance
risorsa Terraform.
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
- INSTANCE_NAME: il nome dell'istanza.
- REGION_NAME: il nome della regione per l'istanza.
- AVAILABILITY_TYPE: abilita l'alta disponibilità per l'istanza. Per questo parametro, specifica uno dei seguenti valori:
REGIONAL
: abilita l'alta disponibilità ed è consigliato per le istanze di produzione. Il failover dell'istanza viene eseguito su un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per saperne di più sull'impostazione e sulla rimozione dell'alta disponibilità per le istanze, vedi Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.
ALLOWED_PROJECTS: un elenco di ID o numeri di progetto consentiti, separati da virgole. Se un progetto non è contenuto in questo elenco, non puoi utilizzarlo per creare un'istanza e abilitare Private Service Connect per l'istanza.
- MACHINE_TYPE: il tipo di macchina per l'istanza.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Corpo JSON della richiesta:
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Ottieni il collegamento al servizio
Dopo aver creato un'istanza Cloud SQL con Private Service Connect abilitato, recupera l'URI del collegamento al servizio e utilizzalo per creare l'endpoint Private Service Connect.
gcloud
Per visualizzare informazioni di riepilogo su un'istanza in cui è abilitato Private Service Connect, ad esempio il campo pscServiceAttachmentLink
in cui viene visualizzato l'URI che rimanda al collegamento al servizio dell'istanza, utilizza il comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui possono connettersi gli endpoint Private Service Connect nelle reti VPC
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
L'esempio seguente mostra un output di esempio per questo comando:
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
Terraform
Per ottenere l'URI del collegamento al servizio, utilizza la google_compute_address
risorsa Terraform.
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
- INSTANCE_NAME: il nome dell'istanza
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" }
Il campo pscServiceAttachmentLink
mostra l'URI che punta al collegamento del servizio dell'istanza.
Crea un endpoint Private Service Connect
Puoi prenotare un indirizzo IP interno per l'endpoint Private Service Connect e creare un endpoint con quell'indirizzo. Per creare l'endpoint, devi avere l'URI del collegamento al servizio e i progetti consentiti per l'istanza.
gcloud
Per prenotare un indirizzo IP interno per l'endpoint Private Service Connect, utilizza il comando
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_NAME \ --addresses=INTERNAL_IP_ADDRESS
Effettua le seguenti sostituzioni:
- ADDRESS_NAME: il nome dell'indirizzo IP interno.
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud per l'endpoint.
- REGION_NAME: il nome della regione dell'endpoint.
- SUBNET_NAME: il nome della subnet per l'indirizzo IP.
- INTERNAL_IP_ADDRESS: l'indirizzo IP da prenotare. Questo indirizzo IP deve essere compreso nell'intervallo IP principale della subnet. L'indirizzo IP può essere un indirizzo RFC 1918 o una subnet con intervalli non RFC.
Per verificare che l'indirizzo IP sia riservato, utilizza il comando
gcloud compute addresses list
:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
Nella risposta, verifica che sia visualizzato lo stato
RESERVED
per l'indirizzo IP.Per creare l'endpoint Private Service Connect e puntarlo al collegamento del servizio Cloud SQL, utilizza il comando
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access
Effettua le seguenti sostituzioni:
- ENDPOINT_NAME: il nome dell'endpoint
- NETWORK_NAME: il nome della rete VPC dell'endpoint
- SERVICE_ATTACHMENT_URI: l'URI del collegamento al servizio
Per verificare che il collegamento al servizio accetti l'endpoint, utilizza il comando
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Nella risposta, verifica che venga visualizzato lo stato
ACCEPTED
per il campopscConnectionStatus
. L'endpoint può connettersi al collegamento al servizio.
Terraform
Per creare un endpoint Private Service Connect, utilizza la google_sql_database_instance
risorsa Terraform.
Per applicare la configurazione Terraform a un progetto Google Cloud, completa i passaggi nella le sezioni seguenti.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito dove vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti in Terraform di configurazione del deployment.
Prepara la directory
Ogni file di configurazione Terraform deve avere una directory dedicata (inoltre chiamato modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
all'interno di quella directory. Il nome del file deve contenere
.tf
, ad esempiomain.tf
. In questo tutorial, il file è denominatomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.
Copia il codice campione nel nuovo oggetto
main.tf
.Facoltativamente, copia il codice da GitHub. Opzione consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.
- Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
- Salva le modifiche.
-
Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
terraform init
Facoltativamente, per utilizzare la versione più recente del provider Google, includi
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform creerà o
che l'aggiornamento soddisfi le tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione Terraform eseguendo questo comando e inserendo
yes
alla richiesta:terraform apply
Attendi finché Terraform non visualizzi il messaggio "Applicazione completata!". .
- Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti create o aggiornate da Terraform.
REST
Prenota un indirizzo IP interno per l'endpoint Private Service Connect.
Verifica che l'indirizzo IP sia riservato.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'endpoint Private Service Connect
- REGION_NAME: il nome della regione
- ADDRESS_NAME: il nome dell'indirizzo IP
Metodo HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
Nella risposta, verifica che sia visualizzato lo stato
RESERVED
per l'indirizzo IP.Crea l'endpoint Private Service Connect e puntalo al collegamento del servizio Cloud SQL.
Verifica che il collegamento al servizio accetti l'endpoint.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'endpoint Private Service Connect
- REGION_NAME: il nome della regione
- ENDPOINT_NAME: il nome dell'endpoint
Metodo HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
Nella risposta, verifica che venga visualizzato lo stato
ACCEPTED
per il campopscConnectionStatus
. L'endpoint può connettersi al collegamento al servizio.
Connettiti a un'istanza Cloud SQL
Puoi connetterti a un'istanza Cloud SQL con Private Service Connect abilitato utilizzando un indirizzo IP interno, un record DNS, il proxy di autenticazione Cloud SQL, i connettori di linguaggio Cloud SQL o altre applicazioni Google Cloud.
configura una zona gestita e un record DNS
Cloud SQL non crea automaticamente record DNS. La risposta dell'API Lookup fornisce invece un nome DNS suggerito. Ti consigliamo di creare il record DNS in una zona DNS privata nella rete VPC corrispondente. In questo modo, puoi utilizzare in modo coerente il proxy di autenticazione Cloud SQL per connetterti da reti diverse.
gcloud
Per visualizzare le informazioni di riepilogo su un'istanza Cloud SQL, incluso il nome DNS dell'istanza, utilizza il comando
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
Nella risposta, verifica che venga visualizzato il nome DNS. Questo nome ha il seguente schema:
INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
. Ad esempio:1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
.Per creare una zona DNS privata, utilizza il comando
gcloud dns managed-zones create
. Questa zona è associata alla rete VPC utilizzata per connettersi all'istanza Cloud SQL tramite l'endpoint Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Effettua le seguenti sostituzioni:
- ZONE_NAME: il nome della zona DNS
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene la zona
- DESCRIPTION: una descrizione della zona (ad esempio, una zona DNS per l'istanza Cloud SQL)
- DNS_NAME: il nome del suffisso DNS per la zona, ad esempio
REGION_NAME.sql.goog.
(dove REGION_NAME è il nome della regione della zona) - NETWORK_NAME: il nome della rete VPC
Dopo aver creato l'endpoint Private Service Connect, utilizza il comando
gcloud dns record-sets create
per creare un record DNS nella zona:gcloud dns record-sets create DNS_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Effettua le seguenti sostituzioni:
- DNS_RECORD: il nome del record DNS. Questo record è impostato sul nome DNS che hai recuperato dall'istanza Cloud SQL in precedenza in questa procedura (ad esempio,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE: tipo di record di risorse del set di record DNS (ad esempio
A
). - RR_DATA: l'indirizzo IP allocato per l'endpoint Private Service Connect (ad esempio,
198.51.100.5
). Puoi anche inserire più valori, comerrdata1 rrdata2 rrdata3
(ad es.10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD: il nome del record DNS. Questo record è impostato sul nome DNS che hai recuperato dall'istanza Cloud SQL in precedenza in questa procedura (ad esempio,
REST
- Ottieni il nome DNS di un'istanza Cloud SQL.
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
- INSTANCE_NAME: il nome dell'istanza
- Crea una zona DNS privata. Questa zona è associata alla rete VPC utilizzata per connettersi all'istanza Cloud SQL tramite l'endpoint Private Service Connect.
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene la zona DNS
- ZONE_NAME: il nome della zona
- DESCRIPTION: una descrizione della zona (ad esempio, una zona DNS per l'istanza Cloud SQL)
- DNS_NAME: il nome del suffisso DNS per la zona, ad esempio
REGION_NAME.sql.goog.
(dove REGION_NAME è il nome della regione della zona) - NETWORK_NAME: il nome della rete VPC
- Dopo aver creato l'endpoint Private Service Connect, crea un record DNS nella zona.
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene la zona DNS.
- ZONE_NAME: il nome della zona.
- DNS_RECORD: il nome del record DNS. Questo record è impostato sul nome DNS che hai recuperato dall'istanza Cloud SQL in precedenza in questa procedura (ad esempio,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE: tipo di set di record (ad esempio
A
). - TTL: la durata (TTL) del record impostato in un numero di secondi (ad esempio,
300
). - RR_DATA: l'indirizzo IP allocato per l'endpoint Private Service Connect (ad esempio,
198.51.100.5
). Puoi anche inserire più valori, comerrdata1 rrdata2 rrdata3
(ad es.10.1.2.3 10.2.3.4 10.3.4.5
).
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ ... "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog." }
Il campo dnsName
mostra il nome DNS dell'istanza Cloud SQL. I nomi DNS terminano sempre con un punto (.
).
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
Metodo HTTP e URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones
Corpo JSON della richiesta:
{ "name": "ZONE_NAME", "description": "DESCRIPTION", "dnsName": "DNS_NAME", "visibility": "private", "privateVisibilityConfig": { "kind": "dns#managedZonePrivateVisibilityConfig", "networks": [ { "kind": "dns#managedZonePrivateVisibilityConfigNetwork", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME" } ] } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "ZONE_NAME", "dnsName": "DNS_NAME", "description": "DESCRIPTION", "id": "ID", "nameServers": [ "ns-gcp-private.googledomains.com." ], "creationTime": "2024-05-10T17:05:34.607Z", "visibility": "private", "privateVisibilityConfig": { "networks": [ { "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME", "kind": "dns#managedZonePrivateVisibilityConfigNetwork" } ], "gkeClusters": [], "kind": "dns#managedZonePrivateVisibilityConfig" }, "cloudLoggingConfig": { "kind": "dns#managedZoneCloudLoggingConfig" }, "kind": "dns#managedZone" }
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
Metodo HTTP e URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME
Corpo JSON della richiesta:
{ "deletions": [] "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ] } ] }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "additions": [ { "name": "DNS_RECORD", "type": "RRSET_TYPE", "ttl": TTL, "rrdatas": [ "RR_DATA" ], "signatureRrdatas": [], "kind": "dns#resourceRecordSet" } ], "deletions": [], "startTime": "2024-05-10T17:29:44.375Z", "id": "CHANGE_ID", "status": "pending", "kind": "dns#change" }
Connettersi direttamente utilizzando un record DNS
Prima di connetterti a un'istanza Cloud SQL utilizzando un record DNS, completa queste azioni:
- Crea un endpoint Private Service Connect.
- Conferma che il collegamento al servizio dell'istanza accetti l'endpoint. Per verificare che lo stato dell'endpoint sia
ACCEPTED
, controlla lo stato. - Configura una zona gestita e un record DNS.
Dopo aver soddisfatto queste condizioni, utilizza il record DNS per connetterti all'istanza da qualsiasi rete VPC in cui hai creato l'endpoint.
mysql --host=DNS_RECORD --user=USERNAME -p
Effettua le seguenti sostituzioni:
- DNS_RECORD: il record DNS dell'endpoint
- USERNAME: il nome dell'utente che si connette all'istanza
Connettiti direttamente tramite un indirizzo IP interno
Prima di connetterti a un'istanza Cloud SQL con Private Service Connect abilitato, completa queste azioni:
- Crea un endpoint Private Service Connect.
- Conferma che il collegamento al servizio dell'istanza accetti l'endpoint. Per verificare che lo stato dell'endpoint sia
ACCEPTED
, controlla lo stato.
Dopo aver soddisfatto queste condizioni, utilizza l'indirizzo IP dell'endpoint per accedere all'istanza da qualsiasi rete VPC in cui hai creato l'endpoint.
Recupera l'indirizzo IP interno dell'endpoint Private Service Connect.
gcloud
Per recuperare l'indirizzo IP, utilizza il comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Effettua le seguenti sostituzioni:
- ADDRESS_NAME: il nome dell'indirizzo IP dell'endpoint
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'endpoint
- REGION_NAME: il nome della regione dell'endpoint
Nella risposta, verifica che sia presente un indirizzo IP per il campo
address
. Questo è l'indirizzo IP interno.REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'endpoint
- REGION_NAME: il nome della regione dell'endpoint
- ADDRESS_NAME: il nome dell'indirizzo IP dell'endpoint
Metodo HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "compute#address", "id": "ADDRESS_ID", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "addressType": "EXTERNAL" }
L'indirizzo IP interno è il valore associato al campo
address
.-
Per connetterti all'istanza Cloud SQL, utilizza l'indirizzo IP interno.
mysql --host=IP_ADDRESS --user=USERNAME -p
Effettua le seguenti sostituzioni:
- IP_ADDRESS: indirizzo IP dell'endpoint
- USERNAME: il nome dell'utente che si connette all'istanza
Connettiti utilizzando il proxy di autenticazione Cloud SQL
Il proxy di autenticazione Cloud SQL è un connettore che fornisce l'accesso sicuro a un'istanza in cui è abilitato Private Service Connect, senza che siano necessarie reti autorizzate o la configurazione di SSL.
Per consentire le connessioni client del proxy di autenticazione Cloud SQL, configura un record DNS che corrisponda al nome DNS consigliato fornito per l'istanza. Il record DNS è una mappatura tra una risorsa DNS e un nome di dominio.
Scarica e installa il proxy di autenticazione Cloud SQL
Per connetterti alle istanze in cui è abilitato Private Service Connect, devi scaricare e installare il programma binario per il proxy di autenticazione Cloud SQL. Il file binario scaricato dipende dal sistema operativo e dall'utilizzo o meno di un kernel a 32 o 64 bit. La maggior parte dell'hardware più recente utilizza un kernel a 64 bit.
Se non hai la certezza che la tua macchina esegua un kernel a 32 bit o a 64 bit, utilizza il comando uname -a
per Linux o macOS. Per Windows, consulta la documentazione relativa a Windows.
Avvia il proxy di autenticazione Cloud SQL
Il proxy di autenticazione Cloud SQL supporta le connessioni alle istanze in cui è abilitato Private Service Connect. Per ulteriori informazioni, vedi Avviare il proxy di autenticazione Cloud SQL.
- Visualizza le informazioni di riepilogo su un'istanza Cloud SQL, incluso il nome della connessione dell'istanza.
gcloud
Per visualizzare informazioni di riepilogo su un'istanza di Cloud SQL, utilizza il comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
Il nome della connessione è nel formato
PROJECT_ID:REGION_NAME:INSTANCE_NAME
.REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza
- INSTANCE_NAME: il nome dell'istanza
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }
Il nome della connessione è nel formato
PROJECT_ID:REGION_NAME:INSTANCE_NAME
. - Copia il nome della connessione dell'istanza.
Avvia il proxy di autenticazione Cloud SQL:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc
Sostituisci INSTANCE_CONNECTION_NAME con il nome della connessione dell'istanza che hai copiato nel passaggio precedente.
Connettiti utilizzando i connettori di linguaggio Cloud SQL
I connettori di linguaggio Cloud SQL sono librerie che forniscono un accesso sicuro a un'istanza Cloud SQL con Private Service Connect abilitato senza bisogno di reti autorizzate o di configurazione di SSL.
Per consentire le connessioni con i connettori di lingua Cloud SQL, configura un record DNS che corrisponda al nome DNS consigliato fornito per l'istanza. Il record DNS è una mappatura tra una risorsa DNS e un nome di dominio.
I connettori di lingua Cloud SQL supportano le connessioni Private Service Connect tramite il tipo IP PSC
all'interno delle rispettive librerie.
- Connettore Python di Cloud SQL
- Connettore Cloud SQL Go
- Connettore Java Cloud SQL
- Connettore Node.js Cloud SQL
Connettiti da App Engine Standard, Cloud Run o Cloud Functions
Per connetterti alle istanze Cloud SQL in cui è abilitato Private Service Connect, puoi utilizzare App Engine Standard, Cloud Run o Cloud Functions.
In questi ambienti serverless supportati, sono supportati sia i connettori dei linguaggi di Cloud SQL sia le connessioni TCP dirette tramite un indirizzo IP e un numero di porta. Per le connessioni TCP dirette, si tratta dell'indirizzo IP che prenoti quando crei l'endpoint Private Service Connect. Puoi specificare l'indirizzo IP come indirizzo dell'host del database.
Se crei un record DNS per l'endpoint, puoi specificare questo record per l'host.
Connettiti da BigQuery
Per accedere ai dati in Cloud SQL ed eseguire query su questo
su una connessione IP interno, usa il parametro --enable-google-private-path
. Questo parametro è valido solo se:
- Utilizzi il parametro
--no-assign-ip
. - Utilizzi il parametro
--network
per specificare il nome del La rete VPC che vuoi utilizzare per creare una connessione interna.
Testa la connettività
Per testare la connettività in entrata a un'istanza Cloud SQL con Private Service Connect abilitato, imposta l'indirizzo IP dell'endpoint Private Service Connect come indirizzo IP di destinazione.
gcloud
Per creare un test di connettività per un'istanza Cloud SQL con Private Service Connect abilitato, utilizza il comando gcloud network-management connectivity-tests create
:
gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
Effettua le seguenti sostituzioni:
- CONNECTIVITY_TEST_NAME: il nome del test di connettività.
- SOURCE_INSTANCE: l'URI dell'istanza Compute Engine in cui si trova l'indirizzo IP di origine (ad esempio,
projects/myproject/zones/myzone/instances/myinstance
). - DESTINATION_CLOUD_SQL_INSTANCE: l'URL dell'istanza Cloud SQL (ad esempio
projects/myproject/instances/myinstance
). - DESTINATION_NETWORK: l'URI della rete VPC in cui si trova l'indirizzo IP di destinazione (ad esempio,
projects/myproject/global/networks/mynetwork
). - DESTINATION_PORT: il numero di porta riservato per l'istanza. Per le istanze Cloud SQL per MySQL, il numero di porta è
3306
.
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
- CONNECTIVITY_TEST_NAME: il nome del test di connettività.
- SOURCE_IP_ADDRESS: l'indirizzo IP dell'istanza Compute Engine di origine.
- SOURCE_INSTANCE: l'URI dell'istanza Compute Engine in cui si trova l'indirizzo IP di origine (ad esempio,
projects/myproject/zones/myzone/instances/myinstance
). - SOURCE_NETWORK: l'URI della rete VPC in cui si trova l'indirizzo IP di origine (ad esempio,
projects/myproject/global/networks/mynetwork
). - DESTINATION_IP_ADDRESS: l'indirizzo IP dell'istanza Cloud SQL di destinazione.
- DESTINATION_PORT: il numero di porta riservato per l'istanza. Per le istanze Cloud SQL per MySQL, il numero di porta è
3306
. - DESTINATION_NETWORK: l'URI della rete VPC in cui si trova l'indirizzo IP di destinazione (ad esempio,
projects/myproject/global/networks/mynetwork
).
Metodo HTTP e URL:
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
Corpo JSON della richiesta:
{ "source": { "ipAddress": "SOURCE_IP_ADDRESS", "instance": "SOURCE_INSTANCE", "network": "SOURCE_NETWORK" }, "destination": { "ipAddress": "DESTINATION_IP_ADDRESS", "port": DESTINATION_PORT, "network": "DESTINATION_NETWORK", "projectId": "PROJECT_ID" }, "protocol": "TCP" }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata", "createTime": "2024-05-23T16:43:49.313981473Z", "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME", "verb": "create", "cancelRequested": false, "apiVersion": "v1" }, "done": false }
Limitazioni
- Puoi configurare fino a 20 endpoint Private Service Connect che si connettono al collegamento al servizio di un'istanza Cloud SQL in cui è abilitato Private Service Connect.
- Non puoi utilizzare i backend per le istanze in cui è abilitato Private Service Connect.
- I seguenti flag sono stati invalidati o interessati:
--no-assign-ip:
utilizza questo flag perché le istanze con Private Service Connect abilitato non sono supportate per utilizzare altri tipi di connettività come le connessioni IP esterni--authorized-networks:
non puoi utilizzare questo flag per aggiungere reti autorizzate--network:
non puoi utilizzare questo flag perché è associato all'accesso privato ai servizi--allocated-ip-range-name:
non puoi utilizzare questo flag perché i nomi degli intervalli IP consentiti non sono supportati
- Non puoi creare una replica esterna di un'istanza in cui è abilitato Private Service Connect.
- Non puoi attivare o disattivare Private Service Connect in un'istanza esistente.
- Non puoi configurare un'istanza con Private Service Connect abilitato per l'utilizzo dell'accesso privato ai servizi o di connessioni IP esterne.
- Non puoi abilitare le connessioni IP esterni su un'istanza in cui è abilitato Private Service Connect.
- Non puoi abilitare l'accesso privato ai servizi o aggiungere reti autorizzate all'istanza.
- Non puoi modificare il tipo di connettività dell'istanza.
- Non puoi utilizzare il comando
gcloud sql connect
, Cloud Shell, Cloud Build o Database Migration Service per connetterti alle istanze Cloud SQL in cui è abilitato Private Service Connect. - Quando testi la connettività a un'istanza Cloud SQL con Private Service Connect abilitato, non puoi impostare i seguenti elementi:
- L'indirizzo IP interno o il nome DNS dell'istanza direttamente come destinazione
- L'istanza come origine
- L'indirizzo IP dell'endpoint Private Service Connect come origine
- L'inserimento nella lista consentita basata su IP mediante reti autorizzate non è supportata.
- Se il progetto di rete contiene istanze che utilizzano la vecchia di rete di Cloud SQL, quindi non potrai creare Istanza Private Service Connect. Cloud SQL offre strumenti per aiutarti a eseguire l'upgrade delle istanze dalla vecchia architettura di rete una nuova architettura di rete. Per ulteriori informazioni o per controllare la rete delle istanze Cloud SQL del tuo progetto ed eseguire eventuali upgrade necessari, consulta Eseguire l'upgrade di un'istanza alla nuova architettura di rete.
Risoluzione dei problemi
Questa sezione contiene informazioni sui problemi associati alle istanze Cloud SQL in cui è abilitato Private Service Connect, insieme ai passaggi per la risoluzione dei problemi.
Problema Risoluzione dei problemi Il collegamento al servizio dell'istanza non accetta l'endpoint Private Service Connect. - Controlla lo stato dell'endpoint.
gcloud
Per controllare lo stato, utilizza il comando
gcloud compute forwarding-rules describe
.gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ | grep pscConnectionStatus
Effettua le seguenti sostituzioni:
- ENDPOINT_NAME: il nome dell'endpoint
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'endpoint
- REGION_NAME: il nome della regione dell'endpoint
REST
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'endpoint Private Service Connect
- REGION_NAME: il nome della regione
- ENDPOINT_NAME: il nome dell'endpoint
Metodo HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "compute#forwardingRule", "id": "ENDPOINT_ID", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME", "IPAddress": "IP_ADDRESS", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "CONNECTION_ID", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }
- Verifica che lo stato dell'endpoint sia
ACCEPTED
. Se lo stato èPENDING
, l'istanza non consente il progetto Google Cloud contenente l'endpoint. Assicurati che il progetto di rete in cui è stato creato l'endpoint sia consentito. Per saperne di più, consulta Modificare un'istanza con Private Service Connect abilitato.
Passaggi successivi
- Scopri di più sull'IP privato.
- Scopri di più su Private Service Connect.
- Scopri di più sulla creazione di una replica di lettura di un'istanza in cui è abilitato Private Service Connect.
- Scopri di più sulla clonazione di un'istanza in cui è abilitato Private Service Connect.
- Scopri di più sulla visualizzazione delle informazioni di riepilogo sulle istanze in cui è abilitato Private Service Connect.
- Scopri di più su come impostare e rimuovere l'alta disponibilità per un'istanza in cui è abilitato Private Service Connect.
- Scopri di più su come modificare ed eliminare un'istanza con Private Service Connect abilitato.