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). |
Habilita Private Service Connect
Para habilitar Private Service Connect, debes crear un clúster de AlloyDB con Private Service Connect configurado y, luego, crear una instancia de AlloyDB con una lista de proyectos permitidos.
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.
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
Reemplaza lo siguiente:
INSTANCE_ID
: 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
.
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 pscServiceAttachmentLink
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.
Cómo conectarse 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 \ --project=CLUSTER_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 proyecto Google Cloud 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
: 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 user=USERNAME host=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 idioma 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 user=USERNAME hostaddr=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 privado a servicios.
- No se admiten las extensiones
pglogical
,dblink
ypostgres_fdw
que requieren conectividad saliente.