Questa pagina descrive come utilizzare Private Service Connect per connettersi a un'istanza AlloyDB per PostgreSQL.
Puoi utilizzare Private Service Connect per connetterti a un'istanza AlloyDB principale o a una delle sue repliche di lettura oppure a un'istanza AlloyDB secondaria da più reti VPC (Virtual Private Cloud) appartenenti a gruppi, team, progetti o organizzazioni diversi.
Ruoli obbligatori
Per poter connetterti a un'istanza AlloyDB, devi concedere tutti i seguenti ruoli a un utente della tua rete VPC.
Ruolo | Descrizione |
---|---|
compute.networkAdmin |
Concede il pieno controllo sulla rete VPC che avvia una connessione a un'istanza AlloyDB. Se utilizzi Private Service Connect per connetterti a un'istanza AlloyDB da più reti VPC, ogni rete ha il proprio amministratore. |
dns.admin |
Concede il controllo completo sulle risorse Cloud DNS, inclusi record e zone DNS. |
alloydb.admin |
Fornisce il controllo completo di un'istanza AlloyDB e la controlla durante il suo ciclo di vita. |
alloydb.databaseUser (facoltativo) |
Fornisce l'accesso all'istanza AlloyDB. Se ti connetti tramite il client AlloyDB Auth Proxy, devi disporre del ruolo Client AlloyDB. Se esegui la connessione direttamente, non sono necessari ruoli e autorizzazioni IAM (Identity and Access Management). |
Custom AlloyDB role (facoltativo) |
Se utilizzi un ruolo personalizzato, oltre a concedere i ruoli compute.networkAdmin e dns.admin , concedi le seguenti autorizzazioni:
|
Attivare Private Service Connect
Per abilitare la connettività in entrata, crea un cluster AlloyDB con Private Service Connect abilitato. Quando crei un'istanza principale, specifica i progetti consentiti per la connettività. Per la connettività in uscita, fornisci l'URI del collegamento alla rete.
Crea un cluster principale AlloyDB
L'esempio seguente utilizza il comando gcloud alloydb clusters create
con il flag --enable-private-service-connect
che crea un cluster AlloyDB con Private Service Connect abilitato.
La procedura di creazione di un cluster rimane invariata, ad eccezione del passaggio del flag --enable-private-service-connect
. Per informazioni dettagliate sulla creazione di un cluster, vedi Creare un cluster e la relativa istanza principale.
Per creare il cluster, utilizza il comando gcloud alloydb clusters
create
.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
Sostituisci quanto segue:
CLUSTER_ID
: l'ID del cluster che stai creando. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.PASSWORD
: la password da utilizzare per l'utentepostgres
predefinito.REGION_ID
: la regione in cui vuoi collocare il cluster.PROJECT_ID
: l'ID del progetto dove vuoi posizionare il cluster.
Questo comando avvia un'operazione a lunga esecuzione, restituendo un ID operazione.
Un cluster secondario creato per un cluster principale abilitato per Private Service Connect eredita automaticamente la configurazione di Private Service Connect. Per ulteriori informazioni, vedi Creare un cluster secondario.
Crea un'istanza AlloyDB
L'esempio seguente mostra come creare un'istanza principale con un elenco di progetti consentiti configurati. La procedura di creazione di un'istanza rimane invariata, ad eccezione del passaggio dell'elenco dei progetti consentiti utilizzando il flag --allowed-psc-projects
per un cluster principale abilitato per Private Service Connect.
Per ulteriori informazioni sulla creazione di altri tipi di istanze, vedi Creare un'istanza del pool di lettura e Creare un'istanza secondaria.
gcloud
Per utilizzare gcloud CLI, puoi installare e inizializzare Google Cloud CLI oppure utilizzare Cloud Shell.
Per creare l'istanza principale, utilizza il comando gcloud alloydb instances create
.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI
Sostituisci quanto segue:
INSTANCE_ID
: l'ID dell'istanza che stai creando. Deve iniziare con una lettera minuscola e può contenere lettere minuscole, numeri e trattini.CPU_COUNT
: il numero di vCPU che vuoi per l'istanza. I valori validi sono:2
: 2 vCPU, 16 GB di RAM4
: 4 vCPU, 32 GB di RAM8
: 8 vCPU, 64 GB di RAM16
: 16 vCPU, 128 GB di RAM32
: 32 vCPU, 256 GB di RAM64
: 64 vCPU, 512 GB di RAM96
: 96 vCPU, 768 GB di RAM128
: 128 vCPU, 864 GB di RAM
AVAILABILITY
: indica se questa istanza deve essere di alta disponibilità (HA) con nodi in più zone. I valori validi includono:REGIONAL
: crea un'istanza HA con nodi attivi e di standby separati e il failover automatico tra di essi. Questo è il valore predefinito, adatto per gli ambienti di produzione.ZONAL
: crea un'istanza di base contenente un solo nodo e senza failover automatico.
REGION_ID
: la regione in cui vuoi collocare l'istanza.CLUSTER_ID
: l'ID del cluster creato in precedenza.ALLOWED_PROJECT_LIST
: l'elenco separato da virgole di ID progetto o numero di progetto a cui vuoi consentire l'accesso all'istanza, ad esempiomy-project-1
,12345
,my-project-n
.NETWORK_ATTACHMENT_URI
: il nome completo della risorsa dell'URI allegato di rete che crei. Ad esempio:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
.
Terraform
Per creare un'istanza all'interno del cluster di database, utilizza una risorsa Terraform.
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
machine_config {
cpu_count = 2
}
psc_instance_config {
allowed_consumer_projects = ["123456789"]
psc_interface_configs {
network_attachment_resource = google_compute_network_attachment.default.id
}
}
}
resource "google_compute_network" "default" {
name = "alloydb-network"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "default" {
name = "alloydb-subnetwork"
region = "us-central1"
network = google_compute_network.default.id
ip_cidr_range = "10.0.0.0/16"
}
resource "google_compute_network_attachment" "default" {
name = "alloydb-network-attachment"
region = "us-central1"
connection_preference = "ACCEPT_AUTOMATIC"
subnetworks = [
google_compute_subnetwork.default.self_link
]
}
data "google_project" "project" {}
Prepara Cloud Shell
Per applicare la configurazione Terraform in un progetto Google Cloud, prepara Cloud Shell come segue:
- Avvia Cloud Shell.
Imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni di 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 all'interno di quella directory. Il nome del file deve essere un
file TF, ad esempio
main.tf
. In questo documento, il file è indicato comemain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
- Copia il codice di esempio nel
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.git clone https://github.com/terraform-google-modules/terraform-docs-samples
- Nella directory
terraform-docs-samples
, vai alla directoryalloydb
.cd terraform-docs-samples/alloydb
- Copia il codice di esempio nel
main.tf
appena creato. Sostituiscicp SAMPLE_FILE
<var>SAMPLE_FILE</var>
con il nome del file di esempio da copiare, ad esempiomain.tf
. - Rivedi 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.
Facoltativo: per utilizzare la versione più recente del provider Google, includi l'opzioneterraform init
-upgrade
:terraform init -upgrade
Applica le modifiche
- Rivedi la configurazione per verificare che gli aggiornamenti di Terraform corrispondano alle tue aspettative:
Apporta le correzioni necessarie alla configurazione.terraform plan
- Applica la configurazione di Terraform eseguendo il seguente comando e inserendo
yes
al prompt: Attendi finché Terraform non mostra il messaggioterraform apply
Apply complete!
.
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.
Configura la connettività in entrata
Dopo aver attivato il PSC per un'istanza AlloyDB, puoi ottenere l'URL del collegamento del servizio e configurare un endpoint nel VPC di consumo per connetterti in sicurezza all'istanza AlloyDB.
Recupera il collegamento al servizio
Dopo aver creato un'istanza AlloyDB con Private Service Connect abilitato, recupera l'URL del collegamento di servizio e utilizzalo per creare l'endpoint Private Service Connect.
Utilizza il comando gcloud alloydb instances describe
per visualizzare i dettagli di un'istanza.
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID --region=REGION_ID
Sostituisci quanto segue:
INSTANCE_ID
: l'ID dell'istanza.CLUSTER_ID
: l'ID del cluster.REGION_ID
: la regione in cui è dipiegato il cluster AlloyDB.
Un esempio di risposta al comando è il seguente:
"pscInstanceConfig": {
"serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
"allowedConsumerProjects": {
"45678",
"12345",
"67890",
},
"pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
}
Il parametro serviceAttachmentLink
contiene il valore dell'URL dell'allegato del servizio.
Creare un endpoint Private Service Connect
Per creare un endpoint Private Service Connect, passa l'URL dell'attacco del servizio insieme a un nome di endpoint univoco. Per ulteriori informazioni sulla creazione di un endpoint Private Service Connect, consulta Creare un endpoint.
Puoi anche prenotare un indirizzo IP interno per l'endpoint Private Service Connect utilizzando il comando gcloud compute addresses create
e poi utilizzare l'indirizzo IP prenotato durante la creazione dell'endpoint.
Configura la connettività in uscita
Per attivare la connettività in uscita, imposta l'URI di allegato di rete quando crei o aggiorni un'istanza AlloyDB. Questo URI consente la connettività sicura tra il tuo progetto e l'istanza AlloyDB durante le operazioni in uscita, come le migrazioni.
Crea il collegamento di rete
Puoi creare un collegamento di rete che può accettare connessioni automaticamente(ACCEPT_AUTOMATIC
) o manualmente (ACCEPT_MANUAL
). Per saperne di più sulla creazione di un collegamento di rete, consulta Creare e gestire i collegamenti di rete.
Se scegli di creare un collegamento alla rete che accetta automaticamente le connessioni, non devi impostare esplicitamente un elenco di progetti accettati. Per accettare le connessioni manualmente, devi aggiungere il numero di progetto di proprietà del servizio del progetto in cui si trova l'istanza AlloyDB all'elenco dei progetti accettati.
Per trovare il numero di progetto di proprietà del servizio, esegui il seguente comando:
gcloud alpha alloydb clusters describe CLUSTER_ID --region=REGION_ID
Di seguito è riportato un esempio di risposta:
pscConfig:
pscEnabled: true
serviceOwnedProjectNumber: 123456789012
Dopo aver identificato il numero del progetto di proprietà del servizio, aggiungi il progetto all'elenco dei progetti accettati e poi crea il collegamento di rete.
Assicurati che la regione del collegamento di rete corrisponda a quella dell'istanza AlloyDB. Inoltre, la subnet utilizzata per creare il collegamento di rete deve appartenere agli intervalli IP RFC 1918, ovvero 10.0.0.0/8
, 172.16.0.0/12
e 192.168.0.0/16
.
Aggiornare un'istanza per la connettività in uscita
Per attivare la connettività in uscita per un'istanza AlloyDB esistente con Private Service Connect abilitato, passa il parametro --psc-network-attachment-uri
al comando gcloud alloydb instances update
.
Le istanze AlloyDB create prima del 1° marzo 2025 non possono essere aggiornate per abilitare le connessioni in uscita. Come approccio alternativo, ti consigliamo di utilizzare una delle seguenti opzioni:
- Crea una replica tra regioni (CRR) della tua istanza principale con la connettività in uscita abilitata. Quindi, esegui uno switchover per designare l'istanza replica come nuova istanza principale.
- Esegui un backup del cluster AlloyDB e dell'istanza principale esistenti. Quindi, crea un nuovo cluster AlloyDB e un'istanza principale con la connettività in uscita abilitata. Infine, esegui un ripristino del backup creato in precedenza nel nuovo cluster.
Disattivare la connettività in uscita
Per disattivare la connettività in uscita per un'istanza AlloyDB esistente, passa il parametro --clear-psc-network-attachment-uri
al comando gcloud alloydb instances update
.
Connettiti a un'istanza AlloyDB
Puoi connetterti a un'istanza AlloyDB con Private Service Connect abilitato utilizzando una delle seguenti opzioni:
- un indirizzo IP interno.
- un record DNS
- Proxy di autenticazione AlloyDB
- Connettori dei linguaggi AlloyDB
La connessione tramite record DNS richiede la creazione di un record DNS in una zona DNS privata nella rete VPC corrispondente. Dopo aver creato un record DNS, puoi utilizzarlo per connetterti direttamente a un'istanza abilitata per Private Service Connect utilizzando un record DNS, il proxy di autenticazione AlloyDB o i connettori dei linguaggi AlloyDB.
Configura una zona gestita DNS e un record DNS
Per configurare una zona gestita e un record DNS nella tua rete:
Per visualizzare informazioni di riepilogo su un'istanza AlloyDB, incluso il nome DNS dell'istanza, utilizza il comando
gcloud alloydb instances describe
:gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID --region=REGION_ID
Sostituisci quanto segue:
INSTANCE_ID
: l'ID dell'istanza.CLUSTER_ID
: l'ID del cluster.
Nella risposta, verifica che venga visualizzato il nome DNS. Il nome DNS ha il pattern
INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.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 AlloyDB 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
Sostituisci quanto segue:
ZONE_NAME
: il nome della zona DNS.PROJECT_ID
: l'ID o il numero del progetto che contiene la zona. Google CloudDESCRIPTION
: una descrizione della zona (ad esempio una zona DNS per l'istanza AlloyDB).DNS_NAME
: il nome DNS della zona, ad esempioINSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.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_NAME \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Sostituisci quanto segue:
DNS_NAME
: il nome DNS recuperato in precedenza in questa procedura.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 esempio rrdata1 rrdata2 rrdata3 (ad esempio 10.1.2.3 10.2.3.4 10.3.4.5).
Eseguire la connessione direttamente utilizzando un record DNS
Dopo aver creato un endpoint Private Service Connect e un record DNS, puoi connetterti direttamente utilizzando il record DNS.
Per recuperare il record DNS dell'endpoint Private Service Connect, utilizza il comando
gcloud compute addresses describe
:gcloud compute addresses describe DNS_RECORD \ --project=PROJECT_ID \ --region=REGION_NAME
Sostituisci quanto segue:
DNS_RECORD
: il record DNS per l'endpoint.PROJECT_ID
: l'ID o il numero del progetto che contiene l'endpoint. Google CloudREGION_NAME
: il nome della regione per l'endpoint.
Per connetterti all'istanza AlloyDB, utilizza il record DNS.
psql -U USERNAME -h DNS_RECORD
Sostituisci quanto segue:
USERNAME
: il nome dell'utente che si connette all'istanza.DNS_RECORD
: il record DNS dell'endpoint.
Connettiti utilizzando il proxy di autenticazione AlloyDB
AlloyDB Auth Proxy è un connettore che ti consente di stabilire connessioni criptate e autorizzate ai database AlloyDB. Il proxy di autenticazione AlloyDB funziona con un client locale in esecuzione nell'ambiente locale. L'applicazione comunica con il proxy di autenticazione AlloyDB con il protocollo di database standard utilizzato dal database.
Quando imposti il flag --psc
durante l'avvio del client Auth Proxy, il proxy di autenticazione AlloyDB utilizza il record DNS che hai creato per connettersi all'istanza abilitata per Private Service Connect.
Assicurati di avviare il client Auth Proxy passando l'URI dell'istanza recuperato utilizzando il comando gcloud alloydb instances list
e imposta il flag --psc
.
Per ulteriori informazioni su come connetterti a un'istanza utilizzando il proxy di autenticazione, consulta Eseguire la connessione utilizzando il proxy di autenticazione.
Eseguire la connessione utilizzando i connettori dei linguaggi AlloyDB
I connettori dei linguaggi AlloyDB sono librerie che forniscono mTLS automatico con TLS 1.3 e autorizzazione Identity and Access Management (IAM) quando si connettono a un'istanza AlloyDB.
Dopo che Language Connector ha stabilito che l'istanza supporta Private Service Connect, utilizza il record DNS che hai creato per connettersi all'istanza.
Java
Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:
config.addDataSourceProperty("alloydbIpType", "PSC");
Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori di lingua Java, consulta il repository GitHub.
Python (pg8000)
Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
inst_uri,
"pg8000",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori di lingua Python, consulta il repository GitHub.
Python (asyncpg)
Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:
async def getconn() -> asyncpg.Connection:
conn: asyncpg.Connection = await connector.connect(
inst_uri,
"asyncpg",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori di lingua Python, consulta il repository GitHub.
Go (pgx)
Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori per il linguaggio Go, consulta il repository GitHub.
Go (database/SQL)
Se utilizzi Private Service Connect per connetterti all'istanza AlloyDB, includere quanto segue:
cleanup, err := pgxv5.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)
Per ulteriori informazioni sull'utilizzo dell'endpoint Private Service Connect nei connettori per il linguaggio Go, consulta il repository GitHub.
Connettiti direttamente tramite un indirizzo IP interno
Dopo aver creato un endpoint Private Service Connect, puoi connetterti direttamente a un'istanza AlloyDB utilizzando l'indirizzo IP configurato.
Per recuperare l'indirizzo IP dell'endpoint Private Service Connect, utilizza il comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Sostituisci quanto segue:
ADDRESS_NAME
: il nome dell'indirizzo IP dell'endpoint.PROJECT_ID
: l'ID o il numero del progetto Google Cloud che contiene l'endpoint.REGION_NAME
: il nome della regione per l'endpoint.
Per connetterti all'istanza AlloyDB, utilizza l'indirizzo IP interno.
psql -U USERNAME -h IP_ADDRESS"
Sostituisci quanto segue:
USERNAME
: il nome dell'utente che si connette all'istanza.IP_ADDRESS
: l'indirizzo IP dell'endpoint.
Limitazioni
- Puoi configurare fino a 20 endpoint Private Service Connect che si connettono al collegamento al servizio di un'istanza AlloyDB con Private Service Connect abilitato.
- Non puoi utilizzare il flag
--network
quando crei un cluster abilitato per Private Service Connect perché è associato all'accesso ai servizi privati. - Non puoi attivare o disattivare Private Service Connect in un'istanza esistente.
- Non puoi configurare un'istanza in cui è abilitato Private Service Connect per utilizzare l'accesso ai servizi privati.