En esta página, se describe cómo usar Private Service Connect para conectarte a una instancia de AlloyDB para PostgreSQL.
Puedes usar Private Service Connect para conectarte a una instancia principal de AlloyDB o a cualquiera de sus réplicas de lectura, o a una instancia secundaria de AlloyDB desde varias redes de nube privada virtual (VPC) que pertenezcan a organizaciones, grupos, equipos o proyectos diferentes.
Roles obligatorios
Debes otorgar todos los siguientes roles a un usuario en tu red de VPC para poder conectarte a una instancia de AlloyDB.
Rol | Descripción |
---|---|
compute.networkAdmin |
Otorga control total sobre la red de VPC que inicia una conexión a una instancia de AlloyDB. Si usas Private Service Connect para conectarte a una instancia de AlloyDB desde varias redes de VPC, cada red tiene su propio administrador. |
dns.admin |
Otorga control total sobre los recursos de Cloud DNS, lo que incluye zonas y registros DNS. |
alloydb.admin |
Proporciona control total de una instancia de AlloyDB y controla la instancia durante su ciclo de vida. |
alloydb.databaseUser (opcional) |
Proporciona acceso a la instancia de AlloyDB. Si te conectas a través del cliente del proxy de autenticación de AlloyDB, debes tener el rol de cliente de AlloyDB. Si te conectas directamente, no necesitas roles ni permisos de Identity and Access Management (IAM). |
Custom AlloyDB role (opcional) |
Si usas un rol personalizado, además de otorgar los roles compute.networkAdmin y dns.admin , otorga los siguientes permisos:
|
Habilita Private Service Connect
Para habilitar la conectividad entrante, crea un clúster de AlloyDB con Private Service Connect habilitado. Cuando crees una instancia principal, especifica los proyectos permitidos para la conectividad. Para la conectividad saliente, proporciona el URI del archivo adjunto de red.
Crea un clúster principal de AlloyDB
En el siguiente ejemplo, se usa el comando gcloud alloydb clusters create
con la marca --enable-private-service-connect
que crea un clúster de AlloyDB con Private Service Connect habilitado.
El proceso de creación de un clúster sigue siendo el mismo, excepto que se pasa la marca --enable-private-service-connect
. Para obtener información detallada sobre cómo crear un clúster, consulta Crea un clúster y su instancia principal.
Para crear el clúster, usa el comando gcloud alloydb clusters
create
.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
Reemplaza lo siguiente:
CLUSTER_ID
: Es el ID del clúster que creas. Debe comenzar con una letra minúscula y puede contener letras minúsculas, números y guiones.PASSWORD
: Es la contraseña que se usará para el usuariopostgres
predeterminado.REGION_ID
: Es la región en la que deseas que se ubique el clúster.PROJECT_ID
: Es el ID del proyecto en el que deseas que se coloque el clúster.
Este comando inicia una operación de larga duración y muestra un ID de operación.
Un clúster secundario creado para un clúster principal habilitado para Private Service Connect hereda automáticamente la configuración de Private Service Connect. Para obtener más información, consulta Cómo crear un clúster secundario.
Crea una instancia de AlloyDB
En el siguiente ejemplo, se muestra cómo crear una instancia principal con una lista de proyectos permitidos configurados. El proceso de creación de una instancia sigue siendo el mismo, con la excepción de pasar la lista de proyectos permitidos con la marca --allowed-psc-projects
para un clúster principal habilitado para Private Service Connect.
Para obtener más información sobre cómo crear otros tipos de instancias, consulta Crea una instancia de grupo de lectura y Crea una instancia secundaria.
gcloud
Para usar gcloud CLI, puedes instalar y, luego, inicializar Google Cloud CLI, o bien usar Cloud Shell.
Para crear la instancia principal, usa el 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
Reemplaza lo siguiente:
INSTANCE_ID
: Es el ID de la instancia que estás creando. Debe comenzar con una letra minúscula y puede contener letras minúsculas, números y guiones.CPU_COUNT
: Es la cantidad de CPU virtuales que deseas para la instancia. Los valores válidos incluyen lo siguiente:2
: 2 CPU virtuales, 16 GB de RAM4
: 4 vCPU, 32 GB de RAM8
: 8 CPU virtuales, 64 GB de RAM16
: 16 CPU virtuales, 128 GB de RAM32
: 32 CPU virtuales, 256 GB de RAM64
: 64 CPU virtuales, 512 GB de RAM96
: 96 CPU virtuales, 768 GB de RAM128
: 128 CPU virtuales, 864 GB de RAM
AVAILABILITY
: Indica si esta instancia debe tener alta disponibilidad (HA) con nodos en varias zonas. Estos son algunos de los valores válidos:REGIONAL
: Crea una instancia de HA con nodos activos y en espera separados, y conmutación por error automática entre ellos. Este es el valor predeterminado, adecuado para entornos de producción.ZONAL
: Crea una instancia básica que contiene solo un nodo y no tiene un resguardo automático.
REGION_ID
: Es la región en la que deseas que se ubique la instancia.CLUSTER_ID
: Es el ID del clúster que creaste antes.ALLOWED_PROJECT_LIST
: Es la lista separada por comas de los IDs de proyecto o el número de proyecto al que deseas permitir el acceso a la instancia, por ejemplo,my-project-1
,12345
,my-project-n
.NETWORK_ATTACHMENT_URI
: Es el nombre completo del recurso del URI de adjunto de red que creas. Por ejemplo:projects/PROJECT_ID/regions/REGION_ID/networkAttachments/NETWORK_ATTACHMENT_ID
.
Terraform
Para crear una instancia dentro de tu clúster de bases de datos, usa un recurso de 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
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, prepara Cloud Shell de la siguiente manera:
- Inicia Cloud Shell
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio, también llamado módulo raíz.
- En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe ser un archivo TF, por ejemplo,
main.tf
. En este documento, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
- Copia el código de muestra en el
main.tf
recién creado. De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.git clone https://github.com/terraform-google-modules/terraform-docs-samples
- En el directorio
terraform-docs-samples
, navega al directorioalloydb
.cd terraform-docs-samples/alloydb
- Copia el código de muestra en el
main.tf
recién creado. Reemplazacp SAMPLE_FILE
<var>SAMPLE_FILE</var>
por el nombre del archivo de muestra que deseas copiar, por ejemplo,main.tf
. - Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
- Inicializa Terraform. Solo debes hacerlo una vez por directorio.
Opcional: Para usar la versión más reciente del proveedor de Google, incluye la opciónterraform init
-upgrade
:terraform init -upgrade
Aplique los cambios
- Revisa la configuración para confirmar que las actualizaciones de Terraform coincidan con tus expectativas:
Corrige la configuración según sea necesario.terraform plan
- Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite: Espera hasta que Terraform muestre el mensajeterraform apply
Apply complete!
.
Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Configura la conectividad entrante
Después de habilitar el PSC para una instancia de AlloyDB, puedes obtener la URL del archivo adjunto del servicio y configurar un extremo en tu VPC de consumo para conectarte de forma segura a la instancia de AlloyDB.
Obtén el adjunto del servicio
Después de crear una instancia de AlloyDB con Private Service Connect habilitado, obtén la URL del adjunto de servicio y úsala para crear el extremo de Private Service Connect.
Usa el comando gcloud alloydb instances describe
para ver los detalles de una instancia.
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID --region=REGION_ID
Reemplaza lo siguiente:
INSTANCE_ID
: el ID de la instanciaCLUSTER_ID
: El ID del clúster.REGION_ID
: Es la región en la que se implementa el clúster de AlloyDB.
Una respuesta de muestra para el comando es la siguiente:
"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."
}
El parámetro serviceAttachmentLink
contiene el valor de la URL del archivo adjunto del servicio.
Crear un extremo de Private Service Connect
Para crear un extremo de Private Service Connect, pasa la URL del archivo adjunto del servicio junto con un nombre de extremo único. Para obtener más información sobre cómo crear un extremo de Private Service Connect, consulta Crea un extremo.
También puedes reservar una dirección IP interna para el extremo de Private Service Connect con el comando gcloud compute addresses create
y, luego, usar la dirección IP reservada cuando crees el extremo.
Configura la conectividad saliente
Para habilitar la conectividad saliente, establece el URI de conexión de red cuando crees o actualices una instancia de AlloyDB. Este URI permite una conectividad segura entre tu proyecto y la instancia de AlloyDB durante las operaciones salientes, como las migraciones.
Crea el adjunto de red
Puedes crear un adjunto de red que pueda aceptar conexiones automáticamente(ACCEPT_AUTOMATIC
) o de forma manual (ACCEPT_MANUAL
). Para obtener más información sobre cómo crear un adjunto de red, consulta Crea y administra adjuntos de red.
Si decides crear un adjunto de red que acepte conexiones automáticamente, no es necesario que establezcas una lista de proyectos aceptados de forma explícita. Para aceptar conexiones de forma manual, debes agregar el número de proyecto que pertenece al servicio del proyecto en el que se encuentra tu instancia de AlloyDB a la lista de proyectos aceptados.
Para encontrar el número de proyecto que pertenece al servicio, ejecuta el siguiente comando:
gcloud alpha alloydb clusters describe CLUSTER_ID --region=REGION_ID
A continuación, se muestra una respuesta de ejemplo:
pscConfig:
pscEnabled: true
serviceOwnedProjectNumber: 123456789012
Después de identificar el número de proyecto que pertenece al servicio, agrégalo a la lista de proyectos aceptados y, luego, crea el archivo adjunto de red.
Asegúrate de que la región del adjunto de red sea la misma que la región de la instancia de AlloyDB. Además, la subred que se usa para crear el archivo adjunto de red debe pertenecer a los rangos de IP de RFC 1918, que son 10.0.0.0/8
, 172.16.0.0/12
y 192.168.0.0/16
.
Actualiza una instancia para la conectividad de salida
Para habilitar la conectividad saliente de una instancia existente de AlloyDB con Private Service Connect habilitado, pasa el parámetro --psc-network-attachment-uri
al comando gcloud alloydb instances update
.
Las instancias de AlloyDB creadas antes del 1 de marzo de 2025 no se pueden actualizar para habilitar las conexiones salientes. Como enfoque alternativo, te recomendamos que uses cualquiera de las siguientes opciones:
- Crea una réplica regional de réplica entre regiones (CRR) de tu instancia principal con la conectividad saliente habilitada. Luego, realiza un cambio para designar la instancia de réplica como la nueva instancia principal.
- Crea una copia de seguridad de tu clúster y tu instancia principal de AlloyDB existentes. Luego, crea un clúster y una instancia principal de AlloyDB nuevos con la conectividad saliente habilitada. Por último, restablece la copia de seguridad creada anteriormente en el clúster nuevo.
Cómo desactivar la conectividad saliente
Para desactivar la conectividad saliente de una instancia existente de AlloyDB, pasa el parámetro --clear-psc-network-attachment-uri
al comando gcloud alloydb instances update
.
Conéctate a una instancia de AlloyDB
Puedes conectarte a una instancia de AlloyDB con Private Service Connect habilitado con una de las siguientes opciones:
- una dirección IP interna
- un registro DNS
- Proxy de autenticación de AlloyDB
- Conectores de lenguaje de AlloyDB
Para conectarse con registros DNS, es necesario crear un registro DNS en una zona de DNS privada en la red de VPC correspondiente. Después de crear un registro DNS, puedes usarlo para conectarte a una instancia habilitada para Private Service Connect directamente con un registro DNS, con el proxy de autenticación de AlloyDB o con los conectores de lenguaje de AlloyDB.
Configura una zona administrada de DNS y un registro DNS
Para configurar una zona administrada de DNS y un registro DNS en tu red, sigue estos pasos:
Para ver información resumida sobre una instancia de AlloyDB, incluido el nombre de DNS de la instancia, usa el comando
gcloud alloydb instances describe
:gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID --region=REGION_ID
Reemplaza lo siguiente:
INSTANCE_ID
: El ID de la instancia.CLUSTER_ID
: Es el ID del clúster.
En la respuesta, verifica que aparezca el nombre de DNS. El nombre de DNS tiene el patrón
INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.Para crear una zona del DNS privada, usa el comando
gcloud dns managed-zones create
. Esta zona está asociada con la red de VPC que se usa para conectarse a la instancia de AlloyDB a través del extremo de Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Reemplaza lo siguiente:
ZONE_NAME
: Es el nombre de la zona del DNS.PROJECT_ID
: El ID o número del Google Cloud proyecto que contiene la zona.DESCRIPTION
: Una descripción de la zona (por ejemplo, una zona del DNS para la instancia de AlloyDB).DNS_NAME
: Es el nombre de DNS para la zona, comoINSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.NETWORK_NAME
: Es el nombre de la red de VPC.
Después de crear el extremo de Private Service Connect, para crear un registro DNS en la zona, usa el 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
Reemplaza lo siguiente:
DNS_NAME
: el nombre de DNS que recuperaste antes en este procedimiento.RRSET_TYPE
: El tipo de registro de recursos del conjunto de registros DNS (por ejemplo, A).RR_DATA
: Es la dirección IP asignada para el extremo de Private Service Connect (por ejemplo, 198.51.100.5). También puedes ingresar varios valores, como rrdata1 rrdata2 rrdata3 (por ejemplo, 10.1.2.3 10.2.3.4 10.3.4.5).
Conéctate directamente con un registro DNS
Después de crear un extremo de Private Service Connect y un registro DNS, puedes conectarte directamente con el registro DNS.
Para recuperar el registro DNS del extremo de Private Service Connect, usa el comando
gcloud compute addresses describe
:gcloud compute addresses describe DNS_RECORD \ --project=PROJECT_ID \ --region=REGION_NAME
Reemplaza lo siguiente:
DNS_RECORD
: Es el registro DNS del extremo.PROJECT_ID
: El ID o número del Google Cloud proyecto que contiene el extremo.REGION_NAME
: es el nombre de la región para el extremo.
Para conectarte a la instancia de AlloyDB, usa el registro DNS.
psql -U USERNAME -h DNS_RECORD
Reemplaza lo siguiente:
USERNAME
: El nombre del usuario que se conecta a la instancia.DNS_RECORD
: Es el registro DNS del extremo.
Conéctate con el proxy de autenticación de AlloyDB
El proxy de autenticación de AlloyDB es un conector que te permite establecer conexiones autorizadas y encriptadas a las bases de datos de AlloyDB. El proxy de autenticación de AlloyDB funciona con un cliente local que se ejecuta en el entorno local. La aplicación se comunica con el proxy de autenticación de AlloyDB a través del protocolo de base de datos estándar que usa tu base de datos.
Cuando estableces la marca --psc
mientras inicias el cliente de proxy de autenticación, el proxy de autenticación de AlloyDB usa el registro DNS que creaste para conectarse a la instancia habilitada para Private Service Connect.
Asegúrate de iniciar el cliente de proxy de autenticación pasando el URI de la instancia que recuperas con el comando gcloud alloydb instances list
y establece la marca --psc
.
Para obtener más información sobre cómo conectarte a una instancia con el proxy de autenticación, consulta Conéctate con el proxy de autenticación.
Conéctate con conectores de lenguaje de AlloyDB
Los conectores de lenguaje de AlloyDB son bibliotecas que proporcionan mTLS automatizado con TLS 1.3 y autorización de Identity and Access Management (IAM) cuando se conectan a una instancia de AlloyDB.
Después de que el conector de lenguaje determina que la instancia admite Private Service Connect, usa el registro DNS que creaste para conectarse a ella.
Java
Si usas Private Service Connect para conectarte a tu instancia de AlloyDB, incluye lo siguiente:
config.addDataSourceProperty("alloydbIpType", "PSC");
Para obtener más información sobre el uso del extremo de Private Service Connect en los conectores de lenguaje Java, consulta el repositorio de GitHub.
Python (pg8000)
Si usas Private Service Connect para conectarte a tu instancia de AlloyDB, incluye lo siguiente:
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
Para obtener más información sobre el uso del extremo de Private Service Connect en los conectores de lenguaje Python, consulta el repositorio de GitHub.
Python (asyncpg)
Si usas Private Service Connect para conectarte a tu instancia de AlloyDB, incluye lo siguiente:
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
Para obtener más información sobre el uso del extremo de Private Service Connect en los conectores de lenguaje Python, consulta el repositorio de GitHub.
Go (pgx)
Si usas Private Service Connect para conectarte a tu instancia de AlloyDB, incluye lo siguiente:
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Para obtener más información sobre el uso del extremo de Private Service Connect en los conectores de lenguaje Go, consulta el repositorio de GitHub.
Go (database/sql)
Si usas Private Service Connect para conectarte a tu instancia de AlloyDB, incluye lo siguiente:
cleanup, err := pgxv5.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)
Para obtener más información sobre el uso del extremo de Private Service Connect en los conectores de lenguaje Go, consulta el repositorio de GitHub.
Conéctate directamente a través de una dirección IP interna
Después de crear un extremo de Private Service Connect, puedes conectarte directamente a una instancia de AlloyDB con la dirección IP que configuraste.
Para recuperar la dirección IP del extremo de Private Service Connect, usa el comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Reemplaza lo siguiente:
ADDRESS_NAME
: Es el nombre de la dirección IP del extremo.PROJECT_ID
: El ID o número del Google Cloud proyecto que contiene el extremo.REGION_NAME
: es el nombre de la región para el extremo.
Para conectarte a la instancia de AlloyDB, usa la dirección IP interna.
psql -U USERNAME -h IP_ADDRESS"
Reemplaza lo siguiente:
USERNAME
: El nombre del usuario que se conecta a la instancia.IP_ADDRESS
: Es la dirección IP del extremo.
Limitaciones
- Puedes configurar hasta 20 extremos de Private Service Connect que se conecten al adjunto de servicio de una instancia de AlloyDB con Private Service Connect habilitado.
- No puedes usar la marca
--network
cuando creas un clúster habilitado para Private Service Connect porque está asociada con el acceso a servicios privados. - No puedes activar ni desactivar Private Service Connect en una instancia existente.
- No puedes configurar una instancia que tenga Private Service Connect habilitado para usar el acceso a servicios privados.