Conectarse a una instancia mediante Private Service Connect

En esta página se describe cómo usar Private Service Connect para conectarse 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 diferentes grupos, equipos, proyectos u organizaciones.

Antes de empezar

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

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 con una instancia de Cloud SQL. Puedes crear y gestionar direcciones IP, reglas de cortafuegos, políticas de conexión de servicios y puntos finales de Private Service Connect.

Si usas Private Service Connect para conectarte a una instancia de Cloud SQL desde varias redes VPC, cada red tendrá su propio administrador.

dns.admin Otorga control total sobre los recursos de Cloud DNS, incluidas las zonas y los registros DNS.
cloudsql.admin Proporciona un 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 Cliente de Cloud SQL. Si te conectas directamente, no necesitas ningún rol ni permiso de gestión de identidades y accesos (IAM).

Crear un endpoint de Private Service Connect

Los puntos finales de Private Service Connect son direcciones IP internas de una red de VPC de consumidor a las que pueden acceder directamente los clientes de esa red. Los clientes pueden usar estos endpoints para conectarse a instancias de Cloud SQL.

Puedes hacer que Cloud SQL cree un endpoint de Private Service Connect automáticamente en tu VPC o puedes crear el endpoint manualmente.

Crear el endpoint automáticamente

Para que Cloud SQL cree automáticamente el endpoint de Private Service Connect, haz lo siguiente:

  1. Crea una política de conexión de servicio en tu red de VPC. Con esta política, puedes aprovisionar endpoints de Private Service Connect automáticamente.

  2. Crea una instancia de Cloud SQL con Private Service Connect habilitado y configúrala para que cree endpoints de Private Service Connect automáticamente.

  3. Obtén el endpoint de la instancia. De esta forma, puedes usar el endpoint para conectarte a la instancia.

Crear una política de conexión de servicio

Una política de conexión de servicio te permite autorizar una clase de servicio específica para que cree un punto final de Private Service Connect en tu red de VPC de consumidor. Puedes usar la política de conexión de servicio para permitir que Cloud SQL cree automáticamente endpoints de Private Service Connect.

Puedes crear una política de conexión de servicio mediante la Google Cloud consola, la CLI de gcloud o la API.

Consola

  1. En la Google Cloud consola, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haga clic en la pestaña Políticas de conexión.

  3. Haz clic en Crear política de conexión.

  4. Introduce un Nombre para la política de conexión.

  5. Para especificar la clase de servicio, haz lo siguiente:

    1. En Clase de servicio de origen, selecciona Servicios de Google.
    2. En el menú Clase de servicio, selecciona google-cloud-sql, ya que Cloud SQL es el servicio gestionado de la política de conexión.
  6. En la sección Ámbito de los endpoints de destino, selecciona una red y una región a las que se aplique esta política.

  7. En la sección Política, seleccione una o varias subredes en el menú Subredes. Las subredes se usan para asignar direcciones IP a los endpoints.

  8. Opcional: Especifica un límite de conexión para la política. El límite determina cuántos endpoints se pueden crear mediante esta política de conexión. Si no especificas un límite de conexiones, no habrá ninguno.

  9. Haz clic en Crear política.

gcloud

Para crear una política de conexión de servicio, usa el comando service-connection-policies create.

gcloud network-connectivity service-connection-policies create POLICY_NAME \
    --network=NETWORK \
    --project=PROJECT_ID \
    --region=REGION \
    --service-class=SERVICE_CLASS \
    --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \
    --psc-connection-limit=LIMIT \
    --description="DESCRIPTION" \
    --producer-instance-location=PRODUCER_INSTANCE_LOCATION \
    --allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de tu política de conexión de servicio.
  • NETWORK: la red a la que se aplica esta política.
  • PROJECT_ID: el ID o el número del proyecto de la red VPC. En el caso de las redes de VPC compartida, debes implementar políticas de conexión de servicio en el proyecto host, ya que estas políticas no se admiten en los proyectos de servicio.
  • REGION: la región a la que se aplica esta política. Debe haber una política para cada región en la que quiera automatizar la conectividad de los servicios.
  • SERVICE_CLASS: identificador de recurso de la clase de servicio proporcionado por el productor. En Cloud SQL, la clase de servicio es google-cloud-sql.
  • SUBNETS: una o varias subredes de consumidor normales que se usan para asignar direcciones IP a los puntos finales de Private Service Connect. Estas direcciones IP se asignan automáticamente y se devuelven al grupo de la subred a medida que se crean y se eliminan instancias de servicio gestionado. Las subredes deben estar en la misma región que la política de conexión de servicio. Si varias políticas de conexión comparten la misma región, puedes reutilizar la misma subred en estas políticas. Puede introducir varias subredes en una lista separada por comas.
  • LIMIT: el número máximo de endpoints que puedes crear con esta política. Si no especificas ningún límite, no habrá ninguno.
  • DESCRIPTION: una descripción opcional de la política de conexión de servicios.
  • PRODUCER_INSTANCE_LOCATION: usa esta marca opcional para especificar si se debe autorizar una jerarquía personalizada de las ubicaciones de una instancia de Cloud SQL. Solo puedes asignar uno de los siguientes valores a PRODUCER_INSTANCE_LOCATION:

    • custom-resource-hierarchy-levels: la instancia debe estar ubicada en uno de los proyectos, carpetas u organizaciones que proporciones como valor del parámetro allowed-google-producers-resource-hierarchy-level.
    • none: la instancia está en el mismo proyecto que la política de conexión de servicio.
  • RESOURCE_HIERARCHY_LEVEL: una lista de proyectos, carpetas u organizaciones en las que se encuentra la instancia. Esta lista tiene el formato projects/PROJECT_ID, folders/FOLDER_ID o organizations/ORGANIZATION_ID.

Por ejemplo, el siguiente comando crea una política de conexión de servicio para la clase de servicio
google-cloud-sql que asigna direcciones IP de la subred managed-services. Se pueden crear un máximo de 10 endpoints de Private Service Connect con esta política. Los endpoints deben crearse en proyectos que estén en la misma organización que la instancia de servicio gestionado. La instancia de Cloud SQL se encuentra en el proyecto myproject.

gcloud network-connectivity service-connection-policies create cloud-sql-policy \
    --network=default \
    --project=my-project \
    --region=us-central1 \
    --service-class=google-cloud-sql \
    --subnets=managed-service-subnet \
    --psc-connection-limit=10 \
    --producer-instance-location=custom-resource-hierarchy-levels \
    --allowed-google-producers-resource-hierarchy-level=projects/myproject

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID de tu proyecto.
  • REGION: la región de tu política de conexión de servicio.
  • POLICY_NAME: el nombre de tu política de conexión de servicio.
  • DESCRIPTION: una descripción opcional de tu política de conexión de servicios.
  • NETWORK: la red de tu política de conexión de servicio.
  • LIMIT: el número máximo de endpoints que puedes crear con esta política. Si no especificas ningún límite, no habrá ninguno.
  • SUBNETS: una o varias subredes de consumidor normales que se usan para asignar direcciones IP a los puntos finales de Private Service Connect. Estas direcciones IP se asignan automáticamente y se devuelven al grupo de la subred a medida que se crean y se eliminan instancias de servicio gestionado. Las subredes deben estar en la misma región que la política de conexión de servicio. Si varias políticas de conexión comparten la misma región, puedes reutilizar la misma subred en estas políticas. Puedes introducir varias subredes en una lista separada por comas.
  • SERVICE_CLASS: identificador de recurso de la clase de servicio proporcionado por el productor.

Método HTTP y URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME

Cuerpo JSON de la solicitud:

{
  "description": "DESCRIPTION",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "serviceClass": "SERVICE_CLASS"
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Crear una instancia de Cloud SQL

Puedes crear una instancia con Private Service Connect habilitado para la instancia y configurar la instancia para que cree endpoints automáticamente mediante la CLI de gcloud o la API.

gcloud

Para crear una instancia con Private Service Connect habilitado, 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 \
--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT

Haz las siguientes sustituciones:

  • INSTANCE_NAME: el nombre de la instancia.
  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
  • REGION_NAME: el nombre de la región de la instancia.
  • ALLOWED_PROJECTS: lista separada por comas de los números o IDs de proyectos permitidos desde los que los endpoints de Private Service Connect pueden conectarse a instancias de Cloud SQL.

    Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.

  • AVAILABILITY_TYPE: habilita la alta disponibilidad de la instancia. En 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 de la región seleccionada.
    • ZONAL: no ofrece ninguna función 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 Configurar una instancia para que tenga alta disponibilidad y Desactivar la alta disponibilidad de una instancia.

  • MACHINE_TYPE: el tipo de máquina de la instancia.
  • DATABASE_VERSION: la versión de la base de datos de la instancia (por ejemplo, POSTGRES_13).
  • CONSUMER_NETWORK: la ruta a la red de VPC desde la que se deben crear los puntos finales de Private Service Connect. Por ejemplo:
    projects/my-host-project/global/networks/default.
  • CONSUMER_PROJECT: proyecto en el que se crea el endpoint de Private Service Connect. Si utilizas una red de VPC compartida, puede ser el proyecto del host o el proyecto de servicio.

    Los proyectos que especifiques en los parámetros de conexión automática se añadirán automáticamente a tus proyectos permitidos. Si quieres crear puntos finales de Private Service Connect manualmente en algún proyecto, puedes añadirlo a tu lista de proyectos permitidos.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
  • INSTANCE_NAME: el nombre de la instancia.
  • REGION_NAME: el nombre de la región de la instancia.
  • AVAILABILITY_TYPE: habilita la alta disponibilidad de la instancia. En 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 de la región seleccionada.
    • ZONAL: no ofrece ninguna función 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 Configurar una instancia para que tenga alta disponibilidad y Desactivar la alta disponibilidad de una instancia.

  • ALLOWED_PROJECTS: lista separada por comas de los números o IDs de proyectos permitidos desde los que los endpoints de Private Service Connect pueden conectarse a instancias de Cloud SQL.

    Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.

  • MACHINE_TYPE: el tipo de máquina de la instancia.
  • CONSUMER_NETWORK: la red de VPC en la que quieres permitir la creación automática de endpoints de Private Service Connect.
  • PARENT_PROJECT: el proyecto que contiene la red CONSUMER_NETWORK. Si no especificas otro proyecto en CONSUMER_PROJECT, los endpoints se crearán automáticamente en PARENT_PROJECT .
  • CONSUMER_PROJECT: opcional. Solo debes especificarlo si CONSUMER_NETWORK es una red de VPC compartida y quieres permitir la creación automática de puntos finales de Private Service Connect en un proyecto de servicio.

    Los proyectos que especifiques en los parámetros de conexión automática se añadirán automáticamente a tus proyectos permitidos. Si quieres crear puntos finales de Private Service Connect manualmente en algún proyecto, puedes añadirlo a tu lista de proyectos permitidos.

Método HTTP y 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"
        ],
        "pscAutoConnections": [
          {
            "consumerProject":"CONSUMER_PROJECT",
            "consumerNetwork":"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK"
          }
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "[email protected]",
  "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"
}

Recuperar el endpoint

Si obtienes la dirección IP interna, que es el endpoint de Private Service Connect de una instancia, puedes usar este endpoint para conectarte a la instancia.

gcloud

Para ver información sobre una instancia, incluida la dirección IP que es el punto final de Private Service Connect de la instancia, usa el comando gcloud sql instances describe:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID \
--format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'

Haz las siguientes sustituciones:

En la respuesta, anota el valor que aparece junto al campo pscConfig:pscAutoConnections:ipAddress. Este valor es la dirección IP interna, que también es el endpoint de Private Service Connect de la instancia.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

Método HTTP y URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-custom-2-7680",
    "kind": "sql#settings",
    "availabilityType": "REGIONAL",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
      "pscAutoConnections": {
        consumerNetwork:"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK",
        consumerNetworkStatus:"CONSUMER_NETWORK_STATUS",
        consumerProject:"CONSUMER_PROJECT",
        ipAddress:"IP_ADDRESS",
        status:"STATUS"
        },
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
}

En las instancias en las que Private Service Connect está habilitado, se incluyen los siguientes campos:

  • allowedConsumerProjects: lista de los proyectos permitidos de la instancia. Puedes crear endpoints de Private Service Connect desde cualquier red de VPC de estos proyectos hasta la vinculación de servicio de la instancia.
  • pscAutoConnections: la red de VPC permitida, el estado de la política de conexión de servicio y el estado de la dirección IP que es el endpoint de la instancia.
  • pscEnabled: indica si una instancia tiene habilitado Private Service Connect.

Para ver cómo crear la solicitud de API REST subyacente de esta tarea, consulta la página instances:get.

Crear el endpoint manualmente

Para crear el endpoint de Private Service Connect manualmente, haz lo siguiente:

  1. Crea una instancia de Cloud SQL con Private Service Connect habilitado para la instancia.

  2. Obtén el URI de la vinculación de servicio. Esta URI se usa para crear el endpoint de Private Service Connect.

  3. Reserva una dirección IP interna para el punto final de Private Service Connect y crea un punto final con esa dirección.

Crear una instancia de Cloud SQL

Puedes crear una instancia con Private Service Connect habilitado mediante la CLI de gcloud, Terraform o la API.

gcloud

Para crear una instancia con Private Service Connect habilitado, 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

Haz las siguientes sustituciones:

  • INSTANCE_NAME: el nombre de la instancia.
  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
  • REGION_NAME: el nombre de la región de la instancia.
  • ALLOWED_PROJECTS: lista separada por comas de los números o IDs de proyectos permitidos desde los que los endpoints de Private Service Connect pueden conectarse a instancias de Cloud SQL.

    Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.

  • AVAILABILITY_TYPE: habilita la alta disponibilidad en la instancia. En 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 de la región seleccionada.
    • ZONAL: no ofrece ninguna función 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 Configurar una instancia para que tenga alta disponibilidad y Desactivar la alta disponibilidad de una instancia.

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

Terraform

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

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

Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

Preparar 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 en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
  • INSTANCE_NAME: el nombre de la instancia.
  • REGION_NAME: el nombre de la región de la instancia.
  • AVAILABILITY_TYPE: habilita la alta disponibilidad de la instancia. En 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 de la región seleccionada.
    • ZONAL: no ofrece ninguna función 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 Configurar una instancia para que tenga alta disponibilidad y Desactivar la alta disponibilidad de una instancia.

  • ALLOWED_PROJECTS: lista separada por comas de los números o IDs de proyectos permitidos desde los que los endpoints de Private Service Connect pueden conectarse a instancias de Cloud SQL.

    Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.

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

Método HTTP y 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, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "[email protected]",
  "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"
}

Obtener el adjunto de servicio

Después de crear una instancia de Cloud SQL con Private Service Connect habilitado, obtén el URI de la vinculación de servicio y úsalo para crear el endpoint de Private Service Connect.

gcloud

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

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Haz las siguientes sustituciones:

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

En el siguiente ejemplo se muestra un resultado de muestra de este comando:

gcloud sql instances describe myinstance \
--project=12345

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

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

Método HTTP y URL:

GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  ...
  pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
}

El campo pscServiceAttachmentLink muestra el URI que apunta a la vinculación de servicio de la instancia.

Crear un endpoint de Private Service Connect

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

gcloud

  1. Para reservar una dirección IP interna para el punto final 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_URI \
    --addresses=INTERNAL_IP_ADDRESS

    Haz las siguientes sustituciones:

    • ADDRESS_NAME: el nombre de la dirección IP interna.
    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto del endpoint.
    • REGION_NAME: nombre de la región del endpoint.
    • SUBNET_URI: el nombre de la subred de la dirección IP. El formato es projects/SUBNET_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNET_NAME. Si la subred está en una red de VPC compartida, te recomendamos que SUBNET_PROJECT_ID sea el proyecto host.
    • INTERNAL_IP_ADDRESS: la dirección IP que quieres reservar. Esta dirección IP debe estar dentro del intervalo de IP principal de la subred. La dirección IP puede ser una dirección RFC 1918 o una subred con intervalos que no sean RFC. Si no quieres especificar la dirección IP porque quieres que Google Cloud reserve una dirección IP disponible en la subred, omite esta marca.
  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, comprueba que la dirección IP tenga el estado RESERVED.

  3. Para crear el endpoint de Private Service Connect y dirigirlo a la vinculación 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_URI \
    --target-service-attachment=SERVICE_ATTACHMENT_URI \
    --allow-psc-global-access

    Haz las siguientes sustituciones:

    • ENDPOINT_NAME: el nombre del endpoint
    • NETWORK_URI: el URI de la red de VPC del endpoint. El formato es el siguiente: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME. Si quieres usar una red de VPC compartida, especifica el proyecto host como NETWORK_PROJECT_ID.
    • SERVICE_ATTACHMENT_URI: el URI del archivo adjunto de servicio
  4. Para verificar que el adjunto de servicio acepta el endpoint, usa el comando
    gcloud compute forwarding-rules describe:

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

    En la respuesta, comprueba que el campo pscConnectionStatus tenga el estado ACCEPTED. El endpoint puede conectarse a la vinculación de servicio.

Terraform

Para crear un endpoint de Private Service Connect, usa el google_sql_database_instancerecurso de Terraform.

Usa el siguiente ejemplo para crear un endpoint de Private Service Connect IPv4.

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
  allow_psc_global_access = true
}

Usa el siguiente ejemplo para crear un endpoint de Private Service Connect IPv6.

resource "google_compute_network" "ipv6_default" {
  name                     = "net-ipv6"
  auto_create_subnetworks  = false
  enable_ula_internal_ipv6 = true
}

resource "google_compute_subnetwork" "ipv6_default" {
  name             = "subnet-internal-ipv6"
  ip_cidr_range    = "10.0.0.0/16"
  region           = "us-central1"
  stack_type       = "IPV4_IPV6"
  ipv6_access_type = "INTERNAL"
  network          = google_compute_network.ipv6_default.id
}

resource "google_compute_address" "ipv6_default" {
  name         = "psc-compute-ipv6-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = google_compute_subnetwork.ipv6_default.name
  ip_version   = "IPV6"
}

resource "google_compute_forwarding_rule" "ipv6_ilb_example" {
  name   = "ipv6-psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region = "us-central1"

  load_balancing_scheme   = ""
  target                  = data.google_sql_database_instance.default.psc_service_attachment_link
  network                 = google_compute_network.ipv6_default.name
  subnetwork              = google_compute_subnetwork.ipv6_default.name
  ip_address              = google_compute_address.ipv6_default.id
  allow_psc_global_access = true
}

Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

Preparar 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 en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

REST

  1. Reserva una dirección IP interna para el endpoint de Private Service Connect.

    .
  2. Verifica que la dirección IP esté reservada.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene el endpoint de Private Service Connect
    • REGION_NAME: el nombre de la región
    • ADDRESS_NAME: el nombre de la dirección IP

    Método HTTP y URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "compute#address",
      "id": "ADDRESS_ID",
      "creationTimestamp": "2024-05-09T11:20:50.114-07:00",
      "name": "ADDRESS_NAME",
      "description": "This is the name of the internal IP address.",
      "address": "IP_ADDRESS",
      "status": "RESERVED",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "addressType": "EXTERNAL"
    }
    

    En la respuesta, comprueba que la dirección IP tenga el estado RESERVED.

  3. Crea el endpoint de Private Service Connect y dirígelo a la vinculación de servicio de Cloud SQL.

  4. Verifica que el adjunto de servicio acepte el endpoint.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene el endpoint de Private Service Connect
    • REGION_NAME: el nombre de la región
    • ENDPOINT_NAME: el nombre del endpoint

    Método HTTP y URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "compute#forwardingRule",
      "id": "ENDPOINT_ID",
      "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
      "name": "ENDPOINT_NAME",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "IPAddress": "IP_ADDRESS",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
      "serviceDirectoryRegistrations": [
        {
          "namespace": "goog-psc-default"
        }
      ],
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "fingerprint": "FINGERPRINT_ID",
      "pscConnectionId": "CONNECTION_ID",
      "pscConnectionStatus": "ACCEPTED",
      "allowPscGlobalAccess": true
    }
    

    En la respuesta, comprueba que el campo pscConnectionStatus tenga el estado ACCEPTED. El endpoint puede conectarse a la vinculación 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 u otras Google Cloud aplicaciones.

Configurar una zona gestionada de DNS y un registro de DNS

Cloud SQL no crea registros DNS automáticamente. 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 DNS privada de la red de VPC correspondiente. De esta forma, se puede usar el proxy de autenticación de Cloud SQL de forma coherente para conectarse desde diferentes redes.

gcloud

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

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Haz las siguientes sustituciones:

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

    En la respuesta, comprueba que aparezca el nombre 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..

    Si quieres usar un nombre de DNS personalizado para conectarte a una instancia de Cloud SQL en lugar del nombre de DNS predefinido de esta sección, configura el nombre alternativo de asunto (SAN) personalizado al crear la instancia. El nombre de DNS personalizado que insertes en el ajuste SAN personalizado se añadirá al campo SAN del certificado de servidor de la instancia. De esta forma, puedes usar el nombre de DNS personalizado con la validación de nombre de host de forma segura.

    Para obtener más información sobre cómo configurar el ajuste SAN personalizado, consulta Crear instancias.

  2. Para crear una zona de DNS privada, usa el comando gcloud dns managed-zones create. Esta zona está asociada a la red de VPC que se usa para conectarse a la instancia de Cloud SQL a través del endpoint 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

    Haz las siguientes sustituciones:

    • ZONE_NAME: el nombre de la zona DNS
    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la zona
    • DESCRIPTION: una descripción de la zona (por ejemplo, una zona DNS de la instancia de Cloud SQL)
    • DNS_NAME: el nombre del sufijo DNS de la zona, como REGION_NAME.sql.goog. (donde REGION_NAME es el nombre de la región de la zona).
    • NETWORK_NAME: el nombre de la red de VPC
  3. Después de crear el endpoint de Private Service Connect, usa el comando gcloud dns record-sets create para crear un registro DNS en la zona:

    gcloud dns record-sets create DNS_RECORD \
    --project=PROJECT_ID \
    --type=RRSET_TYPE \
    --rrdatas=RR_DATA \
    --zone=ZONE_NAME

    Haz las siguientes sustituciones:

    • DNS_RECORD: el nombre del registro DNS. Este registro se asigna al nombre DNS que has obtenido de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo, 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.).
    • RRSET_TYPE: el tipo de registro de recursos del conjunto de registros DNS. Si la dirección IP interna que has reservado para el endpoint de Private Service Connect es IPv4, especifica A en este parámetro. De lo contrario, si la dirección IP del endpoint es IPv6, especifica AAAA.
    • RR_DATA: la dirección IP asignada al endpoint de Private Service Connect (por ejemplo, 198.51.100.5). También puedes introducir varios valores, como rrdata1 rrdata2 rrdata3 (por ejemplo, 10.1.2.3 10.2.3.4 10.3.4.5).

REST

  1. Obtener el nombre DNS de una instancia de Cloud SQL.
  2. Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      ...
      "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog."
    }
    

    El campo dnsName muestra el nombre DNS de la instancia de Cloud SQL. Los nombres de DNS siempre terminan con un punto (.).

  3. Crea una zona DNS privada. Esta zona está asociada a la red de VPC que se usa para conectarse a la instancia de Cloud SQL a través del endpoint de Private Service Connect.
  4. Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número del proyecto del Google Cloud proyecto que contiene la zona DNS
    • ZONE_NAME: el nombre de la zona
    • DESCRIPTION: una descripción de la zona (por ejemplo, una zona DNS de la instancia de Cloud SQL)
    • DNS_NAME: el nombre del sufijo DNS de la zona, como REGION_NAME.sql.goog. (donde REGION_NAME es el nombre de la región de la zona).
    • NETWORK_NAME: el nombre de la red de VPC

    Método HTTP y URL:

    POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones

    Cuerpo JSON de la solicitud:

    {
      "name": "ZONE_NAME",
      "description": "DESCRIPTION",
      "dnsName": "DNS_NAME",
      "visibility": "private",
      "privateVisibilityConfig": {
        "kind": "dns#managedZonePrivateVisibilityConfig",
        "networks": [
          {
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME"
          }
        ]
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "name": "ZONE_NAME",
      "dnsName": "DNS_NAME",
      "description": "DESCRIPTION",
      "id": "ID",
      "nameServers": [
        "ns-gcp-private.googledomains.com."
      ],
      "creationTime": "2024-05-10T17:05:34.607Z",
      "visibility": "private",
      "privateVisibilityConfig": {
        "networks": [
          {
            "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork"
          }
        ],
        "gkeClusters": [],
        "kind": "dns#managedZonePrivateVisibilityConfig"
      },
      "cloudLoggingConfig": {
        "kind": "dns#managedZoneCloudLoggingConfig"
      },
      "kind": "dns#managedZone"
    }
    
  5. Después de crear el endpoint de Private Service Connect, crea un registro DNS en la zona.
  6. Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número del proyecto del Google Cloud proyecto que contiene la zona DNS.
    • ZONE_NAME: el nombre de la zona.
    • DNS_RECORD: el nombre del registro DNS. Este registro se asigna al nombre DNS que has obtenido de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo, 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.).
    • RRSET_TYPE: el tipo de registro de recursos del conjunto de registros DNS. Si la dirección IP interna que has reservado para el endpoint de Private Service Connect es IPv4, especifica A en este parámetro. De lo contrario, si la dirección IP del endpoint es IPv6, especifica AAAA.
    • TTL: el tiempo de vida (TTL) del conjunto de registros en segundos (por ejemplo, 300).
    • RR_DATA: la dirección IP asignada al endpoint de Private Service Connect (por ejemplo, 198.51.100.5). También puedes introducir varios valores, como rrdata1 rrdata2 rrdata3 (por ejemplo, 10.1.2.3 10.2.3.4 10.3.4.5).

    Método HTTP y URL:

    POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID/managedZones/ZONE_NAME

    Cuerpo JSON de la solicitud:

    {
      "deletions": []
      "additions": [
        {
          "name": "DNS_RECORD",
          "type": "RRSET_TYPE",
          "ttl": TTL,
          "rrdatas": [
            "RR_DATA"
          ]
        }
      ]
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "additions": [
        {
          "name": "DNS_RECORD",
          "type": "RRSET_TYPE",
          "ttl": TTL,
          "rrdatas": [
            "RR_DATA"
          ],
          "signatureRrdatas": [],
          "kind": "dns#resourceRecordSet"
        }
      ],
      "deletions": [],
      "startTime": "2024-05-10T17:29:44.375Z",
      "id": "CHANGE_ID",
      "status": "pending",
      "kind": "dns#change"
    }
    

Conectarse directamente mediante un registro DNS

Antes de conectarte a una instancia de Cloud SQL mediante un registro DNS, haz lo siguiente:

  1. Crea un endpoint de Private Service Connect.
  2. Confirma que el servicio de la instancia acepta el endpoint. Para verificar que el estado del endpoint es ACCEPTED, comprueba el estado.
  3. Configura una zona gestionada de DNS y un registro DNS.

Una vez que cumplas estas condiciones, usa el registro DNS para conectarte a la instancia desde cualquier red de VPC en la que hayas creado el endpoint.

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

Haz las siguientes sustituciones:

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

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

Antes de conectarte a una instancia de Cloud SQL con Private Service Connect habilitado, haz lo siguiente:

  1. Crea un endpoint de Private Service Connect.
  2. Confirma que el servicio de la instancia acepta el endpoint. Para verificar que el estado del endpoint es ACCEPTED, comprueba el estado.

Una vez que cumplas estas condiciones, usa la dirección IP del endpoint para acceder a la instancia desde cualquier red de VPC en la que hayas creado el endpoint.

  1. Obtén la dirección IP interna del endpoint de Private Service Connect mediante el nombre de la dirección IP del endpoint.

    gcloud

    Para obtener la dirección IP, usa el comando gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    Haz las siguientes sustituciones:

    • ADDRESS_NAME: el nombre de la dirección IP del endpoint
    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene el endpoint.
    • REGION_NAME: nombre de la región del endpoint

    En la respuesta, comprueba que aparezca una dirección IP en el campo address. Esta es la dirección IP interna.

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene el endpoint.
    • REGION_NAME: nombre de la región del endpoint
    • ADDRESS_NAME: el nombre de la dirección IP del endpoint

    Método HTTP y URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "compute#address",
      "id": "ADDRESS_ID",
      "creationTimestamp": "2024-05-09T11:20:50.114-07:00",
      "name": "ADDRESS_NAME",
      "description": "This is the name of the internal IP address.",
      "address": "IP_ADDRESS",
      "status": "RESERVED",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "addressType": "EXTERNAL"
    }
    

    La dirección IP interna es el valor asociado al campo address.

  2. También puedes obtener la dirección IP interna del endpoint de Private Service Connect mediante el adjunto de servicio de la instancia de Cloud SQL.

    gcloud

    Para obtener la dirección IP, usa el comando gcloud compute forwarding-rules list:

    gcloud compute forwarding-rules list \
    --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \
    --project=PROJECT_ID

    Haz las siguientes sustituciones:

    • REGION_NAME: nombre de la región del endpoint
    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene el endpoint.
    • SERVICE_ATTACHMENT_NAME: el nombre del adjunto de servicio de la instancia de Cloud SQL

    En la respuesta, comprueba que aparece una dirección IP. Esta es la dirección IP interna.

    A continuación se muestra un ejemplo de respuesta:

    NAME REGION IP_ADDRESS TARGET
    myInstance us-central1 10.10.10.10 us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene el endpoint.
    • REGION_NAME: nombre de la región del endpoint
    • SERVICE_ATTACHMENT_PROJECT_ID: el ID o el número del proyecto Google Cloud que contiene el adjunto de servicio.
    • SERVICE_ATTACHMENT_NAME: el nombre del adjunto de servicio de la instancia de Cloud SQL

    Método HTTP y URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "compute#forwardingRuleList",
      "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules",
      "items": [
        {
          "kind": "compute#forwardingRule",
          "id": "FORWARDING_RULE_ID",
          "creationTimestamp": "2023-10-31T13:04:37.168-07:00",
          "name": "FORWARDING_RULE_NAME",
          "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
          "IPAddress": "IP_ADDRESS",
          "target": "https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
          "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME",
          "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
          "serviceDirectoryRegistrations": [
            {
              "namespace": "goog-psc-default"
            }
          ],
          "networkTier": "PREMIUM",
          "labelFingerprint": "LABEL_FINGERPRINT_ID",
          "fingerprint": "FINGERPRINT_ID",
          "pscConnectionId": "PSC_CONNECTION_ID",
          "pscConnectionStatus": "CLOSED",
          "allowPscGlobalAccess": true
        }
      ],
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules"
    }
    

    La dirección IP interna es el valor asociado al campo IPAddress.

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

    Haz las siguientes sustituciones:

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

Conectarse mediante 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 ni de configurar SSL.

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

Si te conectas a través de Private Service Connect, debes tener la versión v2.5.0 o una posterior del proxy de autenticación de Cloud SQL.

Descargar e instalar el proxy de autenticación de Cloud SQL

Para conectarte a instancias con Private Service Connect habilitado, debes descargar e instalar el archivo binario del proxy de autenticación de Cloud SQL. El archivo binario que descargues dependerá del sistema operativo y de si utiliza un kernel de 32 o 64 bits. El hardware más reciente suele usar un kernel de 64 bits.

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

Iniciar 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 Iniciar el proxy de autenticación de Cloud SQL.

  1. Consulta información de resumen sobre una instancia de Cloud SQL, incluido el nombre de conexión de la instancia.

    gcloud

    Para ver información de resumen sobre una instancia de Cloud SQL, usa el comando
    gcloud sql instances describe.

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

    Haz las siguientes sustituciones:

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

    El nombre de la conexión tiene el formato PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

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

    Método HTTP y URL:

    GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      ...
      "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME"
    }
    

    El nombre de la conexión tiene el formato PROJECT_ID:REGION_NAME:INSTANCE_NAME.

  2. Copia el nombre de conexión de la instancia.
  3. Inicia el proxy de autenticación de Cloud SQL:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Sustituye INSTANCE_CONNECTION_NAME por el nombre de conexión de la instancia que has copiado en el paso anterior.

Conectarse 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 redes autorizadas ni de configurar SSL.

Para permitir las conexiones con los conectores de idiomas de Cloud SQL, configura un registro DNS que coincida con el nombre 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 en sus respectivas bibliotecas.

Conectarse desde App Engine Standard, Cloud Run o Cloud Run functions

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

En estos entornos sin servidor admitidos, se pueden usar tanto los conectores de lenguaje de Cloud SQL como las conexiones TCP directas mediante una dirección IP y un número de puerto. En el caso de las conexiones TCP directas, se trata de la dirección IP que reservas al crear el punto final de Private Service Connect. Puedes especificar la dirección IP como dirección del host de la base de datos.

Si crea un registro DNS para el endpoint, puede especificarlo para el host.

Conectarse desde BigQuery

Para acceder a los datos de Cloud SQL y hacer consultas sobre ellos 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:

  • Usa el parámetro --no-assign-ip.
  • El parámetro --network se usa para especificar el nombre de la red VPC que quieres usar para crear una conexión interna.

Configurar la conectividad saliente de una instancia de Cloud SQL

Puedes configurar tu instancia de Cloud SQL con Private Service Connect para que tenga conectividad saliente con tu red mediante una interfaz de Private Service Connect y una vinculación de red. Para obtener más información sobre cómo funciona la conectividad saliente de Private Service Connect y sus limitaciones, consulta el artículo Información general sobre la conectividad saliente de Private Service Connect.

Para usar la conectividad saliente con tu instancia de Cloud SQL, debes hacer lo siguiente:

  1. Crea o actualiza un archivo adjunto de red. La instancia de Cloud SQL usa este adjunto de red para conectarse a la interfaz Private Service Connect de tu red.

    El adjunto de red debe estar en la misma región que tu instancia de Cloud SQL y