Conéctate a una instancia mediante Private Service Connect

En esta página, se describe cómo usar Private Service Connect para conectarte a una instancia de Cloud SQL.

Puedes usar Private Service Connect para conectarte a una instancia principal de Cloud SQL o a cualquiera de sus réplicas de lectura desde varias redes de nube privada virtual (VPC) que pertenezcan a organizaciones, grupos, equipos o proyectos diferentes.

Antes de comenzar

La compatibilidad con Private Service Connect con una instancia de Cloud SQL está disponible para gcloud CLI versiones 416.0.0 y posteriores.

Funciones de usuario

En la siguiente tabla, se proporciona información sobre los roles necesarios para usar Private Service Connect con una instancia de Cloud SQL:

Rol Descripción
compute.networkAdmin

Otorga control total sobre la red de VPC que inicia una conexión a una instancia de Cloud SQL. Puedes crear y administrar direcciones IP, reglas de firewall y extremos de Private Service Connect.

Si usas Private Service Connect para conectarte a una instancia de Cloud SQL 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.
cloudsql.admin Proporciona control total de una instancia de Cloud SQL y controla la instancia durante su ciclo de vida.
cloudsql.instanceUser Proporciona acceso a la instancia de Cloud SQL. Si te conectas a través del cliente del proxy de autenticación de Cloud SQL, debes tener el rol de Cliente de Cloud SQL. Si te conectas directamente, no necesitas roles ni permisos de Identity and Access Management (IAM).

Crea una instancia de Cloud SQL

Puedes crear una instancia y habilitar Private Service Connect para ella con gcloud CLI, Terraform o la API.

gcloud

A fin de crear una instancia y habilitar Private Service Connect para ella, usa el 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

Realiza los siguientes reemplazos:

  • INSTANCE_NAME: El nombre de la instancia.
  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
  • REGION_NAME: el nombre de la región para la instancia.
  • ALLOWED_PROJECTS: Una lista de IDs o números de proyectos permitidos, separados por comas. Si un proyecto no aparece en esta lista, no puedes usarlo para crear una instancia y habilitar Private Service Connect para dicho proyecto.

  • AVAILABILITY_TYPE: Habilita la alta disponibilidad en la instancia. Para este parámetro, especifica uno de los siguientes valores:
    • REGIONAL: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.
    • ZONAL: no proporciona capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.

  • MACHINE_TYPE: el tipo de máquina para la instancia.
  • DATABASE_VERSION: la versión de la base de datos para la instancia (por ejemplo, POSTGRES_13).

Terraform

Para crear una instancia con Private Service Connect habilitado, usa el recurso google_sql_database_instance de Terraform.

resource "google_sql_database_instance" "default" {
  name             = "postgres-instance"
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled = true
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = []
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. 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).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    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.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicialice Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. 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.

REST v1

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
  • INSTANCE_NAME: El nombre de la instancia.
  • REGION_NAME: el nombre de la región para la instancia.
  • AVAILABILITY_TYPE: Habilita la alta disponibilidad en la instancia. Para este parámetro, especifica uno de los siguientes valores:
    • REGIONAL: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.
    • ZONAL: no proporciona capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.

  • ALLOWED_PROJECTS: una lista de IDs o números de proyectos permitidos, separados por comas. Si un proyecto no aparece en esta lista, no puedes usarlo para crear una instancia y habilitar Private Service Connect para dicho proyecto.

  • MACHINE_TYPE: el tipo de máquina para la instancia.

HTTP method and URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Cuerpo JSON de la solicitud:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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"
}

REST v1beta4

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
  • INSTANCE_NAME: El nombre de la instancia.
  • REGION_NAME: el nombre de la región para la instancia.
  • AVAILABILITY_TYPE: Habilita la alta disponibilidad en la instancia. Para este parámetro, especifica uno de los siguientes valores:
    • REGIONAL: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.
    • ZONAL: no proporciona capacidad de conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.

  • ALLOWED_PROJECTS: una lista de IDs o números de proyectos permitidos, separados por comas. Si un proyecto no aparece en esta lista, no puedes usarlo para crear una instancia y habilitar Private Service Connect para dicho proyecto.

  • MACHINE_TYPE: el tipo de máquina para la instancia.

HTTP method and URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

Cuerpo JSON de la solicitud:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "POSTGRES_13",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/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/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Obtén el adjunto del servicio

Después de crear una instancia de Cloud SQL con Private Service Connect habilitado, obtén el URI del adjunto de servicio y úsalo para crear el extremo de Private Service Connect.

gcloud

Para ver la información resumida de una instancia con Private Service Connect habilitado, como el campo pscServiceAttachmentLink que muestra el URI que apunta al adjunto de servicio de la instancia, usa el comando gcloud sql instances describe:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Realiza los siguientes reemplazos:

  • INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que se pueden conectar los extremos de Private Service Connect en las redes de VPC
  • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia

En el siguiente ejemplo, se muestra una respuesta de ejemplo para este comando:

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

Terraform

Para obtener el URI del adjunto de servicio, usa el recurso google_compute_address de Terraform

resource "google_compute_address" "default" {
  name         = "psc-compute-address"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.42" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. 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).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    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.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicialice Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. 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.

Crear un extremo de Private Service Connect

Puedes reservar una dirección IP interna para el extremo de Private Service Connect y crear un extremo con esa dirección. Para crear el extremo, necesitas el URI del adjunto de servicio y los proyectos permitidos para la instancia.

gcloud

  1. Si deseas reservar una dirección IP interna para el extremo de Private Service Connect, usa el comando gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_NAME \
    --addresses=INTERNAL_IP_ADDRESS

    Realiza los siguientes reemplazos:

    • ADDRESS_NAME: el nombre de la dirección IP interna.
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud para el extremo.
    • REGION_NAME: es el nombre de la región para el extremo.
    • SUBNET_NAME: el nombre de la subred de la dirección IP.
    • INTERNAL_IP_ADDRESS: la dirección IP que se reservará. Esta dirección IP debe estar dentro del rango de IP principal de la subred. La dirección IP puede ser una dirección RFC 1918 o una subred con rangos que no sean RFC.
  2. Para verificar que la dirección IP esté reservada, usa el comando gcloud compute addresses list:

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    En la respuesta, verifica que aparezca un estado RESERVED para la dirección IP.

  3. Para crear el extremo de Private Service Connect y apuntarlo al adjunto de servicio de Cloud SQL, usa el 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

    Realiza los siguientes reemplazos:

    • ENDPOINT_NAME: el nombre del extremo
    • NETWORK_NAME: el nombre de la red de VPC para el extremo
    • SERVICE_ATTACHMENT_URI: el URI del adjunto del servicio
  4. Para verificar que el adjunto de servicio acepte el extremo, usa el comando gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    En la respuesta, verifica que aparezca un estado ACCEPTED para el campo pscConnectionStatus. El extremo puede conectarse al adjunto de servicio.

Conectarse a una instancia de Cloud SQL

Puedes conectarte a una instancia de Cloud SQL con Private Service Connect habilitado mediante una dirección IP interna, un registro DNS, el proxy de autenticación de Cloud SQL, los conectores de lenguaje de Cloud SQL o cualquier otra aplicación de Google Cloud.

Configura una zona administrada de DNS y un registro DNS

Cloud SQL no crea registros DNS de forma automática. En su lugar, la respuesta de la API de búsqueda de instancias proporciona un nombre de DNS sugerido. Te recomendamos que crees el registro DNS en una zona del DNS privado en la red de VPC correspondiente. Esto proporciona una forma coherente de usar el proxy de autenticación de Cloud SQL para conectarte desde diferentes redes.

gcloud

  1. Para ver información resumida sobre una instancia de Cloud SQL, incluido el nombre de DNS de la instancia, usa el comando gcloud sql instances describe:

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia

    En la respuesta, verifica que aparezca el nombre de DNS. Este nombre tiene el siguiente patrón: INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.. Por ejemplo: 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog..

  2. 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 Cloud SQL 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

    Realiza los siguientes reemplazos:

    • ZONE_NAME: el nombre de la zona del DNS
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la zona
    • DESCRIPTION: una descripción de la zona (por ejemplo, una zona del DNS para la instancia de Cloud SQL)
    • DNS_NAME: el nombre de DNS para la zona, como REGION_NAME.sql.goog. (en el que REGION_NAME es el nombre de la región de la zona)
    • NETWORK_NAME es el nombre de la red de VPC.
  3. 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

    Realiza los siguientes reemplazos:

    • 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

Antes de conectarte a una instancia de Cloud SQL mediante un registro DNS, realiza las siguientes acciones:

  1. Crea un extremo de Private Service Connect.
  2. Confirma que el adjunto de servicio de la instancia acepte el extremo. Para verificar que el estado del extremo sea ACCEPTED, verifica el estado.
  3. Configura una zona administrada de DNS y un registro DNS.

Una vez que cumplas con estas condiciones, usa el nombre de DNS para acceder a la instancia desde cualquier red de VPC donde creaste el extremo.

gcloud

  1. 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

    Realiza los siguientes reemplazos:

    • DNS_RECORD: es el registro DNS del extremo.
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
    • REGION_NAME: el nombre de la región para el extremo
  2. Para conectarte a la instancia de Cloud SQL, usa el registro DNS.

    psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME host=DNS_RECORD"

    Realiza los siguientes reemplazos:

    • DATABASE_NAME: El nombre de la base de datos de Cloud SQL para PostgreSQL que se encuentra dentro de la instancia
    • USERNAME: el nombre del usuario que se conecta a la instancia
    • DNS_RECORD: el registro DNS del extremo

Conéctate directamente a través de una dirección IP interna

Antes de conectarte a una instancia de Cloud SQL con Private Service Connect habilitado, completa las siguientes acciones:

  1. Crea un extremo de Private Service Connect.
  2. Confirma que el adjunto de servicio de la instancia acepte el extremo. Para verificar que el estado del extremo sea ACCEPTED, verifica el estado.

Una vez que cumplas con estas condiciones, usa la dirección IP del extremo para acceder a la instancia desde cualquier red de VPC donde creaste el extremo.

gcloud

  1. 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

    Realiza los siguientes reemplazos:

    • ADDRESS_NAME: es el nombre de la dirección IP del extremo.
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
    • REGION_NAME: el nombre de la región para el extremo
  2. Para conectarte a la instancia de Cloud SQL, usa la dirección IP interna.

    psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME hostaddr=IP_ADDRESS"

    Realiza los siguientes reemplazos:

    • DATABASE_NAME: El nombre de la base de datos de Cloud SQL para PostgreSQL que se encuentra dentro de la instancia
    • USERNAME: el nombre del usuario que se conecta a la instancia
    • IP_ADDRESS: la dirección IP del extremo

Conectarse con el proxy de autenticación de Cloud SQL

El proxy de autenticación de Cloud SQL es un conector que proporciona acceso seguro a una instancia con Private Service Connect habilitado sin necesidad de redes autorizadas o de configurar SSL.

Para permitir conexiones cliente de proxy de autenticación de Cloud SQL, configura un registro DNS que coincida con el nombre de DNS recomendado que se proporciona para la instancia. El registro DNS es una asignación entre un recurso DNS y un nombre de dominio.

Descarga y, luego, instala el proxy de Cloud SQL Auth

Para conectarte a instancias con Private Service Connect habilitado, debes descargar e instalar el objeto binario para el proxy de autenticación de Cloud SQL. El objeto binario que descargues depende del sistema operativo y de si este usa un kernel de 32 bits o de 64 bits. La mayoría del hardware más nuevo usa un kernel de 64 bits.

Si no estás seguro de si tu máquina ejecuta un kernel de 32 bits o de 64 bits, usa el comando uname -a para Linux o macOS. Para Windows, consulta la documentación de Windows.

Inicia el proxy de autenticación de Cloud SQL

El proxy de autenticación de Cloud SQL admite conexiones a instancias con Private Service Connect habilitado. Para obtener más información, consulta Inicia el proxy de autenticación de Cloud SQL.

gcloud

  1. Para ver información resumida sobre una instancia de Cloud SQL, incluido el nombre de la conexión de la instancia, usa el comando gcloud sql instances describe. Este nombre de conexión tiene el formato PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID \
    --format='value(connectionName)'

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
  2. Copia el nombre de la conexión de la instancia.
  3. Inicia el proxy de autenticación de Cloud SQL:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Reemplaza INSTANCE_CONNECTION_NAME por el nombre de la conexión de instancia que copiaste en el paso anterior.

Conéctate mediante los conectores de lenguaje de Cloud SQL

Los conectores de lenguaje de Cloud SQL son bibliotecas que proporcionan acceso seguro a una instancia de Cloud SQL con Private Service Connect habilitado sin necesidad de tener redes autorizadas o de configurar SSL.

Para permitir conexiones con conectores de lenguaje de Cloud SQL, configura un registro DNS que coincida con el nombre de DNS recomendado que se proporciona para la instancia. El registro DNS es una asignación entre un recurso DNS y un nombre de dominio.

Los conectores de lenguaje de Cloud SQL admiten conexiones de Private Service Connect a través del tipo de IP PSC dentro de sus respectivas bibliotecas.

Conéctate desde App Engine Standard, Cloud Run o Cloud Functions

Para conectarte a instancias de Cloud SQL con Private Service Connect habilitado, puedes usar App Engine Standard, Cloud Run o Cloud Functions.

En estos entornos sin servidores compatibles, se admiten los conectores de lenguaje de Cloud SQL y las conexiones TCP directas mediante una dirección IP y un número de puerto. Para las conexiones TCP directas, esta es la dirección IP que reservas cuando creas el extremo de Private Service Connect. Puedes especificar la dirección IP como la dirección para el host de la base de datos.

Si creas un registro DNS para el extremo, puedes especificar este registro para el host.

Conectarse desde BigQuery

Para acceder a los datos en Cloud SQL y realizar consultas en estos datos a través de una conexión IP interna, usa el parámetro
--enable-google-private-path. Este parámetro solo es válido si se cumplen estas condiciones:

  • Usa el parámetro --no-assign-ip.
  • Usa el parámetro --network para especificar el nombre de la red de VPC que deseas usar a fin de crear una conexión interna.

Probar conectividad

Para probar la conectividad entrante a una instancia de Cloud SQL con Private Service Connect habilitado, configura la dirección IP del extremo de Private Service Connect como la dirección IP de destino.

gcloud

A fin de crear una prueba de conectividad para una instancia de Cloud SQL con Private Service Connect habilitado, usa el 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

Realiza los siguientes reemplazos:

  • CONNECTIVITY_TEST_NAME: el nombre de la prueba de conectividad.
  • SOURCE_INSTANCE: el URI de la instancia de Compute Engine en la que se encuentra la dirección IP de origen (por ejemplo, projects/myproject/zones/myzone/instances/myinstance).
  • DESTINATION_CLOUD_SQL_INSTANCE: la URL de la instancia de Cloud SQL (por ejemplo, projects/myproject/instances/myinstance).
  • DESTINATION_NETWORK: el URI de la red de VPC en la que se encuentra la dirección IP de destino (por ejemplo, projects/myproject/global/networks/mynetwork).
  • DESTINATION_PORT: Es el número de puerto reservado para la instancia. En las instancias de Cloud SQL para PostgreSQL, el número de puerto es 5432.

Limitaciones

  • Puedes configurar hasta 20 extremos de Private Service Connect que se conecten al adjunto de servicio de una instancia de Cloud SQL con Private Service Connect habilitado.
  • Las siguientes marcas se invalidan o se ven afectadas:
    • --no-assign-ip: usa esta marca porque las instancias de Cloud SQL con Private Service Connect habilitado no son compatibles con otros tipos de conectividad, como conexiones IP externas
    • --authorized-networks: no puedes usar esta marca para agregar redes autorizadas
    • --network: no puedes usar esta marca porque está asociada con el acceso privado a servicios
    • --allocated-ip-range-name: no puedes usar esta marca porque no se admiten los nombres de rango de IP permitidos
  • No puedes crear una réplica externa de una instancia con Private Service Connect habilitado.
  • 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 o conexiones IP externas.
    • No puedes habilitar conexiones IP externas en una instancia con Private Service Connect habilitado.
    • No puedes habilitar el acceso privado a servicios ni agregar redes autorizadas a la instancia.
    • No puedes cambiar el tipo de conectividad de la instancia.
  • No puedes usar el comando gcloud sql connect, Cloud Shell ni Cloud Build para conectarte a instancias de Cloud SQL con Private Service Connect habilitado.
  • Si realizas migraciones homogéneas a Cloud SQL, no puedes usar Database Migration Service para conectarte a instancias de Cloud SQL con Private Service Connect habilitado.
  • Cuando pruebas la conectividad a una instancia de Cloud SQL con Private Service Connect habilitado, no puedes configurar los siguientes elementos:
    • La dirección IP interna de la instancia o el nombre de DNS como el destino directamente
    • La instancia como origen
    • La dirección IP del extremo de Private Service Connect como el origen
  • No se admite la lista de entidades permitidas basadas en IP mediante redes autorizadas.
  • Las extensiones pglogical, pl/proxy, dblink y postgres_fdw no son compatibles.
  • El control, el registro y las métricas basados en IP de cliente no son compatibles con las estadísticas de consultas y sistemas. Sin embargo, se admiten VPN e Interconnect.
  • Si tu proyecto de red contiene instancias que usan la arquitectura de red de Cloud SQL anterior, no puedes crear una instancia de Private Service Connect. Cloud SQL proporciona herramientas para ayudarte a actualizar las instancias de la arquitectura de red anterior a la arquitectura de red nueva. Para obtener más información o verificar la arquitectura de red de las instancias de Cloud SQL en tu proyecto y realizar las actualizaciones necesarias, consulta Actualiza una instancia a la arquitectura de red nueva.

Solución de problemas

Esta sección contiene información sobre los problemas asociados con las instancias de Cloud SQL con Private Service Connect habilitado, junto con los pasos para solucionar los problemas.

Problema Soluciona problemas
El adjunto de servicio de la instancia no acepta el extremo de Private Service Connect.
  1. Para verificar el estado del extremo, usa el comando gcloud compute forwarding-rules describe.

    
    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    | grep pscConnectionStatus

    Realiza los siguientes reemplazos:

    • ENDPOINT_NAME: el nombre del extremo
    • PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
    • REGION_NAME: el nombre de la región para el extremo
  2. Verifica que el estado del extremo sea ACCEPTED. Si el estado es PENDING, la instancia no permite el proyecto de Google Cloud que contiene el extremo. Asegúrate de que el proyecto de red en el que se crea el extremo esté permitido. Para obtener más información, consulta Edita una instancia con Private Service Connect habilitado.

¿Qué sigue?

  • Obtén más información sobre IP privada.
  • Más información sobre Private Service Connect
  • Obtén más información sobre cómo crear una réplica de lectura de una instancia con Private Service Connect habilitado.
  • Obtén más información sobre cómo clonar una instancia con Private Service Connect habilitado.
  • Obtén más información para ver información de resumen sobre las instancias con Private Service Connect habilitado.
  • Obtén más información para configurar y quitar la alta disponibilidad de una instancia con Private Service Connect habilitado.
  • Obtén más información sobre cómo editar y borrar una instancia con Private Service Connect habilitado.