Questa pagina descrive come utilizzare Private Service Connect per connettersi a un'istanza Cloud SQL.
Puoi utilizzare Private Service Connect per connetterti a un'istanza Cloud SQL principale o a una delle sue repliche di lettura da più reti Virtual Private Cloud (VPC) appartenenti a gruppi, team, progetti o organizzazioni diversi.
Prima di iniziare
Il supporto per l'utilizzo di Private Service Connect con un'istanza Cloud SQL è disponibile per le versioni 416.0.0 e successive di gcloud CLI
.
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, criteri di connessione ai servizi ed endpoint 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 |
Concedi il controllo completo sulle risorse Cloud DNS, inclusi record e zone DNS. |
cloudsql.admin |
Fornisce il controllo completo di un'istanza Cloud SQL e controlla l'istanza durante il suo 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 esegui la connessione direttamente, non sono necessari ruoli e autorizzazioni Identity and Access Management (IAM). |
Creare un endpoint Private Service Connect
Gli endpoint di Private Service Connect sono indirizzi IP interni in una rete VPC del consumer a cui i client della rete possono accedere direttamente. I client possono utilizzare questi endpoint per connettersi alle istanze Cloud SQL.
Puoi chiedere a Cloud SQL di creare automaticamente un endpoint Private Service Connect nel tuo VPC oppure puoi crearlo manualmente.
Per fare in modo che Cloud SQL crei automaticamente l'endpoint Private Service Connect, segui questi passaggi:
- Crea un criterio di connessione ai servizi nelle tue reti VPC. Con questo criterio, puoi eseguire il provisioning automatico degli endpoint Private Service Connect.
- Crea un'istanza Cloud SQL con Private Service Connect abilitato per l'istanza e configura l'istanza in modo che crei automaticamente gli endpoint Private Service Connect.
- Recupero dell'endpoint per l'istanza. In questo modo puoi utilizzare l'endpoint per connetterti all'istanza.
Per creare manualmente l'endpoint Private Service Connect:
- Crea un'istanza Cloud SQL con Private Service Connect abilitato per l'istanza.
- Ottieni l'URI del collegamento al servizio. Utilizza questo URI per creare l'endpoint Private Service Connect.
- Riserva un indirizzo IP interno per l'endpoint Private Service Connect e crea un endpoint con quell'indirizzo.
Creare l'endpoint automaticamente
Le sezioni successive spiegano come configurare l'istanza per consentire a Cloud SQL di creare automaticamente l'endpoint Private Service Connect.
Crea una policy di connessione al servizio
Un criterio di connessione al servizio ti consente di autorizzare una classe di servizi specificata a creare un endpoint Private Service Connect nella rete VPC consumer. Puoi utilizzare il criterio di connessione al servizio per consentire a Cloud SQL di creare automaticamente endpoint Private Service Connect.
Puoi creare un criterio di connessione al servizio utilizzando la console Google Cloud, gcloud CLI o l'API.
Console
Nella console Google Cloud, vai alla pagina Private Service Connect.
Fai clic sulla scheda Norme di collegamento.
Fai clic su Crea criterio di connessione.
Inserisci un nome per il criterio di connessione.
Specifica la classe di servizio nel seguente modo:
- In Classe di servizio di origine, seleziona Servizi Google.
- Nel menu Classe di servizio, seleziona
google-cloud-sql
perché Cloud SQL è il servizio gestito per il criterio di connessione.
Nella sezione Ambito endpoint target, seleziona una Rete e una Regione a cui si applicano queste norme.
Nella sezione Criteri, seleziona una o più subnet dal menu Subnet. Le subnet vengono utilizzate per assegnare indirizzi IP per gli endpoint.
(Facoltativo) Specifica un limite di connessioni per il criterio. Il limite determina il numero di endpoint che possono essere creati utilizzando questo criterio di connessione. Se non specifichi un limite di connessioni, non esiste alcun limite.
Fai clic su Crea criterio.
gcloud
Per creare un criterio di connessione al servizio, utilizza il
comando service-connection-policies create
.
gcloud network-connectivity service-connection-policies create POLICY_NAME \ --network=NETWORK \ --project=PROJECT_ID \ --region=REGION \ --service-class=SERVICE_CLASS \ --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \ --psc-connection-limit=LIMIT \ --description=DESCRIPTION \ --producer-instance-location=PRODUCER_INSTANCE_LOCATION \ --allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL
Sostituisci quanto segue:
POLICY_NAME
: il nome del criterio di connessione del servizio.NETWORK
: la rete a cui si applicano queste norme.PROJECT_ID
: l'ID o il numero del progetto della rete VPC. Per le reti VPC condivise, devi implementare i criteri di connessione dei servizi nel progetto host perché questi criteri non sono supportati nei progetti di servizio.REGION
: la regione a cui si applicano queste norme. Deve essere presente lo stesso criterio per ogni regione in cui vuoi automatizzare la connettività dei servizi.SERVICE_CLASS
: l'identificatore della risorsa fornito dal produttore della classe di servizio. Per Cloud SQL, la classe di servizio ègoogle-cloud-sql
.SUBNETS
: una o più subnet consumer regolari utilizzate per allocare indirizzi IP per gli endpoint Private Service Connect. Questi indirizzi IP vengono allocati automaticamente e restituiti al pool della subnet man mano che le istanze di servizio gestito vengono create ed eliminate. Le reti private virtuali devono trovarsi nella stessa regione del criterio di connessione del servizio. Se più criteri di connessione condividono la stessa regione, puoi riutilizzare la stessa subnet in questi criteri. Puoi inserire più sottoreti in un elenco separato da virgole.LIMIT
: il numero massimo di endpoint che puoi creare utilizzando questo criterio. Se non specifichi un limite, non esiste alcun limite.DESCRIPTION
: una descrizione facoltativa del criterio di connessione al servizio.PRODUCER_INSTANCE_LOCATION
: utilizza questo flag facoltativo per specificare se autorizzare una gerarchia personalizzata delle località per un'istanza Cloud SQL. Puoi impostare il valore diPRODUCER_INSTANCE_LOCATION
su uno solo dei seguenti valori:custom-resource-hierarchy-levels
: l'istanza deve trovarsi in uno dei progetti, delle cartelle o delle organizzazioni che fornisci come valore per il parametroallowed-google-producers-resource-hierarchy-level
.none
: l'istanza si trova nello stesso progetto del criterio di connessione al servizio.
RESOURCE_HIERARCHY_LEVEL
: un elenco di progetti, cartelle o organizzazioni in cui si trova l'istanza. Questo elenco è in formatoprojects/PROJECT_ID
,folders/FOLDER_ID
oorganizations/ORGANIZATION_ID
.
Ad esempio, il seguente comando crea una regola di connessione al servizio per la classe di servizio
google-cloud-sql
che alloca indirizzi IP dalla sottorete managed-services
. Utilizzando questa norma, è possibile creare un massimo di 10 endpoint Private Service Connect. Gli endpoint devono essere creati in progetti che fanno parte della stessa organizzazione dell'istanza di servizio gestito. L'istanza Cloud SQL si trova nel progetto myproject
.
gcloud network-connectivity service-connection-policies create cloud-sql-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-sql \ --subnets=managed-service-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-google-producers-resource-hierarchy-level=projects/myproject
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del progetto.REGION
: la regione del criterio di connessione al servizio.POLICY_NAME
: il nome del criterio di connessione del servizio.DESCRIPTION
: una descrizione facoltativa del criterio di connessione del servizio.NETWORK
: la rete del criterio di connessione del servizio.LIMIT
: il numero massimo di endpoint che puoi creare utilizzando questo criterio. Se non specifichi un limite, non esiste alcun limite.SUBNETS
: una o più subnet consumer regolari utilizzate per allocare indirizzi IP per gli endpoint Private Service Connect. Questi indirizzi IP vengono allocati automaticamente e restituiti al pool della sottorete man mano che le istanze di servizio gestite vengono create ed eliminate. Le subnet devono trovarsi nella stessa regione del criterio di connessione del servizio. Se più criteri di connessione condividono la stessa regione, puoi riutilizzare la stessa sottorete in questi criteri. Puoi inserire più sottoreti in un elenco separato da virgole.SERVICE_CLASS
: l'identificatore della risorsa fornito dal produttore della classe di servizio.
Metodo HTTP e URL:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
Corpo JSON della richiesta:
{ "description": "DESCRIPTION", "network": "projects/PROJECT_ID/global/networks/NETWORK", "pscConfig": { "limit": "LIMIT", "subnetworks": [ "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET" ] }, "serviceClass": "SERVICE_CLASS" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T16:59:29.236110917Z", "target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Crea un'istanza Cloud SQL
Puoi creare un'istanza con Private Service Connect abilitato e configurarla in modo che crei automaticamente gli endpoint utilizzando gcloud CLI o l'API.
gcloud
Per creare un'istanza con Private Service Connect abilitato, 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 \ --psc-auto-connections=network=VPC_NETWORK,project=SERVICE_PROJECT \ --enable-bin-log
Apporta 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 separato da virgole di ID progetto o numeri consentiti da cui gli endpoint Private Service Connect possono connettersi alle istanze Cloud SQL.
Se un progetto non è incluso in questo elenco, non puoi creare endpoint Private Service Connect nel progetto per connetterti all'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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, consulta 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 per l'istanza (ad esempio
MYSQL_8_0
). - VPC_NETWORK: il percorso della rete VPC da cui devono essere creati gli endpoint di Private Service Connect. Ad esempio:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: il progetto in cui viene creato l'endpoint Private Service Connect. Se la rete VPC non è un VPC condiviso, questo può essere solo il progetto host per la rete. Se si tratta di un VPC condiviso, può essere il progetto host o il progetto di servizio.
Tutti i progetti specificati nei parametri di collegamento automatico vengono aggiunti automaticamente ai progetti consentiti. Se vuoi, puoi aggiungere all'elenco dei progetti consentiti i progetti in cui vuoi creare manualmente gli endpoint Private Service Connect.
REST
Prima di utilizzare i dati della richiesta, apporta 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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, consulta Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.
ALLOWED_PROJECTS: un elenco separato da virgole di ID progetto o numeri consentiti da cui gli endpoint Private Service Connect possono connettersi alle istanze Cloud SQL.
Se un progetto non è incluso in questo elenco, non puoi creare endpoint Private Service Connect nel progetto per connetterti all'istanza.
- MACHINE_TYPE: il tipo di macchina per l'istanza.
- VPC_NETWORK: il percorso della rete VPC da cui devono essere creati gli endpoint di Private Service Connect.
SERVICE_PROJECT: il progetto in cui viene creato l'endpoint Private Service Connect. Se la rete VPC non è un VPC condiviso, questo può essere solo il progetto host per la rete. Se si tratta di un VPC condiviso, può essere il progetto host o il progetto di servizio.
Tutti i progetti specificati nei parametri di collegamento automatico vengono aggiunti automaticamente ai progetti consentiti. Se vuoi, puoi aggiungere all'elenco dei progetti consentiti i progetti in cui vuoi creare manualmente gli endpoint Private Service Connect.
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" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Per inviare la richiesta, espandi una di queste 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" }
Recupera l'endpoint
Se recuperi l'indirizzo IP interno, ovvero l'endpoint Private Service Connect di un'istanza, puoi utilizzare questo endpoint per connetterti all'istanza.
gcloud
Per visualizzare le informazioni su un'istanza, incluso l'indirizzo IP che è l'endpoint di Private Service Connect per l'istanza, utilizza il comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
Apporta le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL. Se per questa istanza è attivato Private Service Connect, gli endpoint Private Service Connect nelle reti VPC possono connettersi.
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud che contiene l'istanza.
Nella risposta, prendi nota del valore visualizzato accanto al campo pscConfig:pscAutoConnections:ipAddress
. Questo valore è l'indirizzo IP interno che è anche l'endpoint di Private Service Connect per l'istanza.
REST
Prima di utilizzare i dati della richiesta, apporta 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 Cloud SQL. Se per questa istanza è attivato Private Service Connect, gli endpoint Private Service Connect nelle reti VPC possono connettersi.
Metodo HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "MYSQL_8_0", "settings": { "authorizedGaeApplications": [], "tier": "db-custom-2-7680", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": { consumerNetwork:"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK", consumerNetworkStatus:"CONSUMER_NETWORK_STATUS", consumerProject:"SERVICE_PROJECT", ipAddress:"IP_ADDRESS", status:"STATUS" }, "pscEnabled": true }, "ipv4Enabled": false }, }
Per le istanze per cui è abilitato Private Service Connect sono presenti i seguenti campi:
allowedConsumerProjects
: un elenco dei progetti consentiti per l'istanza. Puoi creare endpoint Private Service Connect da qualsiasi rete VPC in questi progetti al collegamento di servizio dell'istanza.pscAutoConnections
: la rete VPC consentita, lo stato del criterio di connessione del servizio e lo stato dell'indirizzo IP che è l'endpoint dell'istanza.pscEnabled
: indica se per un'istanza è abilitato Private Service Connect.
Per scoprire come creare la richiesta dell'API REST sottostante per questa attività, consulta la pagina instances:get.
Creare l'endpoint manualmente
Le sezioni successive spiegano come creare manualmente un endpoint Private Service Connect.
Crea un'istanza Cloud SQL
Puoi creare un'istanza con Private Service Connect abilitato utilizzando gcloud CLI, Terraform o l'API.
gcloud
Per creare un'istanza con Private Service Connect abilitato, 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
Apporta 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 separato da virgole di ID progetto o numeri consentiti da cui gli endpoint Private Service Connect possono connettersi alle istanze Cloud SQL.
Se un progetto non è incluso in questo elenco, non puoi creare endpoint Private Service Connect nel progetto per connetterti all'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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, consulta 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 per l'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 in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.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 file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa 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
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
REST
Prima di utilizzare i dati della richiesta, apporta 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. Viene eseguito il failover dell'istanza in un'altra zona all'interno della regione selezionata.ZONAL
: non fornisce funzionalità di failover. Questo è il valore predefinito.
Per ulteriori informazioni su come impostare e rimuovere l'alta disponibilità per le istanze, consulta Configurare un'istanza esistente per l'alta disponibilità e Disattivare l'alta disponibilità per un'istanza.
ALLOWED_PROJECTS: un elenco separato da virgole di ID progetto o numeri consentiti da cui gli endpoint Private Service Connect possono connettersi alle istanze Cloud SQL.
Se un progetto non è incluso in questo elenco, non puoi creare endpoint Private Service Connect nel progetto per connetterti all'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 di queste 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" }
Recupera il collegamento al servizio
Dopo aver creato un'istanza Cloud SQL con Private Service Connect abilitato, recupera l'URI del collegamento a un servizio e utilizzalo per creare l'endpoint Private Service Connect.
gcloud
Per visualizzare informazioni di riepilogo su un'istanza con Private Service Connect abilitato, ad esempio il campo pscServiceAttachmentLink
che mostra l'URI che punta al collegamento al servizio dell'istanza, utilizza il comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Apporta 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 in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.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 file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa 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
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
REST
Prima di utilizzare i dati della richiesta, apporta 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 di queste 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.
Creare 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 disporre dell'URI del collegamento al servizio e dei 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
Apporta 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 per l'endpoint.
- SUBNET_NAME: il nome della subnet per l'indirizzo IP.
- INTERNAL_IP_ADDRESS: l'indirizzo IP da prenotare. Questo indirizzo IP deve rientrare 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 per l'indirizzo IP venga visualizzato lo stato
RESERVED
.Per creare l'endpoint Private Service Connect e indirizzarlo al collegamento di 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
Apporta le seguenti sostituzioni:
- ENDPOINT_NAME: il nome dell'endpoint
- NETWORK_NAME: il nome della rete VPC per l'endpoint
- SERVICE_ATTACHMENT_URI: l'URI del collegamento al servizio
Per verificare che l'attacco del 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 uno 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 in un progetto Google Cloud, completa i passaggi nelle seguenti sezioni.
Prepara Cloud Shell
- Avvia Cloud Shell.
-
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform.
Devi eseguire questo comando una sola volta per progetto e puoi farlo in qualsiasi directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.
Prepara la directory
Ogni file di configurazione di Terraform deve avere una propria directory (chiamata anche modulo principale).
-
In Cloud Shell, crea una directory e un nuovo
file al suo interno. Il nome file deve avere l'estensione
.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 file
main.tf
appena creato.Se vuoi, copia il codice da GitHub. Questa 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
Se vuoi, per utilizzare la versione più recente del provider Google, includi l'opzione
-upgrade
:terraform init -upgrade
Applica le modifiche
-
Rivedi la configurazione e verifica che le risorse che Terraform sta per creare o
aggiornare corrispondano alle tue aspettative:
terraform plan
Apporta le correzioni necessarie alla configurazione.
-
Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt:terraform apply
Attendi che Terraform mostri il messaggio "Applicazione completata".
- Apri il tuo progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nell'interfaccia utente per assicurarti che Terraform le abbia create o aggiornate.
REST
Riserva un indirizzo IP interno per l'endpoint Private Service Connect.
Verifica che l'indirizzo IP sia riservato.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente 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 di queste 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 per l'indirizzo IP venga visualizzato lo stato
RESERVED
.Crea l'endpoint Private Service Connect e indirizzalo al collegamento di servizio Cloud SQL.
Verifica che l'attacco del servizio accetti l'endpoint.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente 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 di queste 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 uno 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 dei linguaggi Cloud SQL o altre applicazioni Google Cloud.
Configura una zona gestita DNS e un record DNS
Cloud SQL non crea automaticamente i record DNS. La risposta dell'API di ricerca dell'istanza 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 il proxy di autenticazione Cloud SQL in modo coerente per connetterti da reti diverse.
gcloud
Per visualizzare 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
Apporta 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 pattern:
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
Apporta 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 per la zona) - NETWORK_NAME: il nome della rete VPC
Dopo aver creato l'endpoint Private Service Connect, per creare un record DNS nella zona, utilizza il comando
gcloud dns record-sets create
:gcloud dns record-sets create DNS_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Apporta le seguenti sostituzioni:
- DNS_RECORD: il nome del record DNS. Questo record è impostato sul nome DNS recuperato dall'istanza Cloud SQL in precedenza in questa procedura (ad esempio
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE: il 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, ad esempiorrdata1 rrdata2 rrdata3
(ad esempio10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD: il nome del record DNS. Questo record è impostato sul nome DNS recuperato dall'istanza Cloud SQL in precedenza in questa procedura (ad esempio
REST
- Recupera 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 contenente 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 per la 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 contenente la zona DNS.
- ZONE_NAME: il nome della zona.
- DNS_RECORD: il nome del record DNS. Questo record è impostato sul nome DNS recuperato dall'istanza Cloud SQL in precedenza in questa procedura (ad esempio
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE: il tipo di insieme di record (ad esempio,
A
). - TTL: il valore durata (TTL) per il record impostato in numero di secondi (ad es.
300
). - RR_DATA: l'indirizzo IP allocato per l'endpoint Private Service Connect (ad esempio
198.51.100.5
). Puoi anche inserire più valori, ad esempiorrdata1 rrdata2 rrdata3
(ad esempio10.1.2.3 10.2.3.4 10.3.4.5
).
Prima di utilizzare i dati della richiesta, apporta 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 di queste 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, apporta 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 di queste 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, apporta 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 di queste 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" }
Eseguire la connessione direttamente utilizzando un record DNS
Prima di connetterti a un'istanza Cloud SQL utilizzando un record DNS, svolgi i seguenti passaggi:
- Crea un endpoint Private Service Connect.
- Verifica che l'associazione del servizio dell'istanza accetti l'endpoint. Per verificare che lo stato dell'endpoint sia
ACCEPTED
, controlla lo stato. - Configura una zona gestita DNS 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
Apporta 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, svolgi i seguenti passaggi:
- Crea un endpoint Private Service Connect.
- Verifica che l'associazione del 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 utilizzando il nome dell'indirizzo IP dell'endpoint.
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
Apporta 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 contenente l'endpoint
- REGION_NAME: il nome della regione per l'endpoint
Nella risposta, verifica che venga visualizzato un indirizzo IP per il campo
address
. Questo è l'indirizzo IP interno.REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente l'endpoint
- REGION_NAME: il nome della regione per l'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 di queste 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
.In alternativa, recupera l'indirizzo IP interno dell'endpoint Private Service Connect utilizzando il collegamento a un servizio dell'istanza Cloud SQL.
gcloud
Per recuperare l'indirizzo IP, utilizza il comando
gcloud compute forwarding-rules list
:gcloud compute forwarding-rules list \ --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \ --project=PROJECT_ID
Apporta le seguenti sostituzioni:
- REGION_NAME: il nome della regione per l'endpoint
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente l'endpoint
- SERVICE_ATTACHMENT_NAME: il nome dell'attacco del servizio per l'istanza Cloud SQL
Nella risposta, verifica che venga visualizzato un indirizzo IP. Questo è l'indirizzo IP interno.
Di seguito è riportato un esempio di risposta:
NAME
REGION
IP_ADDRESS
TARGET
myInstance
us-central1
10.10.10.10
us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente l'endpoint
- REGION_NAME: il nome della regione per l'endpoint
- SERVICE_ATTACHMENT_PROJECT_ID: l'ID o il numero del progetto Google Cloud contenente l'allegato del servizio
- SERVICE_ATTACHMENT_NAME: il nome dell'attacco del servizio per l'istanza Cloud SQL
Metodo HTTP e URL:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "kind": "compute#forwardingRuleList", "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules", "items": [ { "kind": "compute#forwardingRule", "id": "FORWARDING_RULE_ID", "creationTimestamp": "2023-10-31T13:04:37.168-07:00", "name": "FORWARDING_RULE_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/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID", "fingerprint": "FINGERPRINT_ID", "pscConnectionId": "PSC_CONNECTION_ID", "pscConnectionStatus": "CLOSED", "allowPscGlobalAccess": true } ], "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules" }
L'indirizzo IP interno è il valore associato al campo
IPAddress
.-
Per connetterti all'istanza Cloud SQL, utilizza l'indirizzo IP interno.
mysql --host=IP_ADDRESS --user=USERNAME -p
Apporta le seguenti sostituzioni:
- IP_ADDRESS: l'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 accesso sicuro a un'istanza con Private Service Connect abilitato senza la necessità di reti autorizzate o di configurazione di SSL.
Per consentire le connessioni dei client del proxy di autenticazione Cloud SQL, configura un record DNS corrispondente al nome DNS consigliato fornito per l'istanza. Il record DNS è una mappatura tra una risorsa DNS e un nome di dominio.
Se ti connetti tramite Private Service Connect, è necessaria la versione v2.5.0 o successiva del proxy di autenticazione Cloud SQL.
Scarica e installa il proxy di autenticazione Cloud SQL
Per connetterti alle istanze con Private Service Connect abilitato, devi scaricare e installare il file binario per il proxy di autenticazione Cloud SQL. Il file binario scaricato dipende dal sistema operativo e dall'utilizzo di un kernel a 32 o 64 bit. La maggior parte dell'hardware più recente utilizza un kernel a 64 bit.
Se non sai con certezza se la tua macchina esegue un kernel a 32 o 64 bit, utilizza il comando uname -a
per Linux o macOS. Per Windows, consulta la documentazione di Windows.
Avvia il proxy di autenticazione Cloud SQL
Il proxy di autenticazione Cloud SQL supporta le connessioni alle istanze con Private Service Connect abilitato. Per saperne di più, consulta Avvia il proxy di autenticazione Cloud SQL.
- Visualizza le informazioni di riepilogo di un'istanza Cloud SQL, incluso il nome della connessione dell'istanza.
gcloud
Per visualizzare le informazioni di riepilogo di un'istanza Cloud SQL, utilizza il comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'
Apporta 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, apporta 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 di queste 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 di 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 lingua Cloud SQL
I connettori dei linguaggi di Cloud SQL sono librerie che forniscono accesso sicuro a un'istanza Cloud SQL con Private Service Connect abilitato senza la necessità di reti autorizzate o di configurazione di SSL.
Per consentire le connessioni con i connettori di lingua Cloud SQL, configura un record DNS corrispondente 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 di IP PSC
all'interno delle rispettive librerie.
- Connettore Python Cloud SQL (v1.3.0 o successiva)
- Connettore Go Cloud SQL (v1.4.0 o successive)
- Connettore Java Cloud SQL (v1.13.0 o successiva)
- Connettore Node.js Cloud SQL (v0.5.0 o successive)
Eseguire la connessione da App Engine Standard, Cloud Run o Cloud Functions
Per connetterti alle istanze Cloud SQL con Private Service Connect abilitato, puoi utilizzare App Engine Standard, Cloud Run o le funzioni Cloud Run.
In questi ambienti serverless supportati, sono supportati sia i connettori dei linguaggi Cloud SQL sia le connessioni TCP dirette mediante 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 per l'host del database.
Se crei un record DNS per l'endpoint, puoi specificarlo per l'host.
Eseguire la connessione da BigQuery
Per accedere ai dati in Cloud SQL ed eseguire query su questi
dati tramite una connessione IP interna, utilizza il parametro --enable-google-private-path
. Questo parametro è valido solo se:
- Utilizzi il parametro
--no-assign-ip
. - Utilizza il parametro
--network
per specificare il nome della 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
Apporta 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 all'istanza. Per le istanze Cloud SQL per MySQL, il numero di porta è
3306
.
REST
Prima di utilizzare i dati della richiesta, apporta 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 all'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 di queste 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 con Private Service Connect abilitato.
- Non puoi utilizzare i backends Private Service Connect per le istanze in cui è abilitato Private Service Connect.
- I seguenti flag non sono validi o sono interessati:
--no-assign-ip:
utilizza questo flag perché le istanze con Private Service Connect abilitato non sono supportate per l'utilizzo di altri tipi di connettività, come le connessioni IP esterne--authorized-networks:
non puoi utilizzare questo flag per aggiungere emittenti autorizzate--network:
non puoi utilizzare questo flag perché è associato all'accesso ai servizi privati--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 con Private Service Connect abilitato.
- Non puoi attivare o disattivare Private Service Connect in un'istanza esistente.
- Non puoi configurare un'istanza in cui è attivato Private Service Connect per utilizzare l'accesso ai servizi privati o le connessioni IP esterne.
- Non puoi attivare le connessioni IP esterne su un'istanza con Private Service Connect abilitato.
- Non puoi attivare l'accesso ai servizi privati 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, Database Migration Service o Datastream per connetterti alle istanze Cloud SQL con Private Service Connect abilitato. - 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 come destinazione direttamente
- L'istanza come origine
- L'indirizzo IP dell'endpoint Private Service Connect come origine
- La lista consentita basata su IP tramite l'utilizzo di reti autorizzate non è supportata.
- Se il tuo progetto di rete contiene istanze che utilizzano la vecchia architettura di rete Cloud SQL, non puoi creare un'istanza Private Service Connect. Cloud SQL fornisce strumenti per aiutarti a eseguire l'upgrade delle istanze dalla vecchia alla nuova architettura di rete. Per ulteriori informazioni o per controllare l'architettura di rete delle istanze Cloud SQL nel tuo progetto ed eseguire gli 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 con Private Service Connect abilitato, nonché i passaggi per la risoluzione dei problemi.
Problema Risoluzione dei problemi Il collegamento del 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
Apporta le seguenti sostituzioni:
- ENDPOINT_NAME: il nome dell'endpoint
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente l'endpoint
- REGION_NAME: il nome della regione per l'endpoint
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID o il numero di progetto del progetto Google Cloud contenente 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 di queste 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 che contiene l'endpoint. Assicurati che il progetto di rete in cui viene creato l'endpoint sia consentito. Per ulteriori informazioni, 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 con Private Service Connect abilitato.
- Scopri di più sulla clonazione di un'istanza con Private Service Connect abilitato.
- Scopri di più su come visualizzare le informazioni di riepilogo sulle istanze con Private Service Connect abilitato.
- Scopri di più su come impostare e rimuovere l'alta disponibilità per un'istanza con Private Service Connect abilitato.
- Scopri di più su come modificare ed eliminare un'istanza con Private Service Connect abilitato.