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 \
--database-version=DATABASE_VERSION
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD \
--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 los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.

  • DATABASE_VERSION: la versión de la base de datos de la instancia (por ejemplo, SQLSERVER_2019_STANDARD).
  • NUMBER_OF_vCPUs: el número de núcleos de la instancia.
  • MEMORY_SIZE: la cantidad de memoria de la instancia.
  • ROOT_PASSWORD: la contraseña del usuario de root Cloud SQL.
  • 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.
  • ROOT_PASSWORD: la contraseña del usuario de root Cloud SQL.
  • 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 los artículos Configurar una instancia para 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: valor de cadena enumerado que representa el tipo de máquina de la instancia. Por ejemplo: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, donde NUMBER_OF_vCPUs y MEMORY_SIZE son el número de núcleos y la cantidad de memoria que quieres que tenga 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": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "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": "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"
}

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": "SQLSERVER_2019_STANDARD",
  "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 \
--database-version=DATABASE_VERSION
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD

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 los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.

  • DATABASE_VERSION: la versión de la base de datos de la instancia (por ejemplo, SQLSERVER_2019_STANDARD).
  • NUMBER_OF_vCPUs: el número de núcleos de la instancia.
  • MEMORY_SIZE: la cantidad de memoria de la instancia.
  • ROOT_PASSWORD: la contraseña del usuario de root Cloud SQL.

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             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = [] # Add consumer project IDs here.
      }
      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 Google Cloud 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.
  • ROOT_PASSWORD: la contraseña del usuario de root Cloud SQL.
  • 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 los artículos Configurar una instancia para 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: valor de cadena enumerado que representa el tipo de máquina de la instancia. Por ejemplo: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, donde NUMBER_OF_vCPUs y MEMORY_SIZE son el número de núcleos y la cantidad de memoria que quieres que tenga 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": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "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": "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"
}

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-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.44" # 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 Google Cloud 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 punto final 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 punto final 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.

sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME

Haz las siguientes sustituciones:

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

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.

    sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME

    Haz las siguientes sustituciones:

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

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 configurarse para aceptar conexiones de forma automática o manual mediante una lista de interfaces de Private Service Connect.

  2. Identifica la red desde la que quieres recibir conexiones salientes de Cloud SQL y asegúrate de que tenga una interfaz de Private Service Connect.

  3. Habilita las conexiones salientes a tu instancia de Cloud SQL mediante la conexión de red.

También puedes inhabilitar la conectividad saliente en cualquier momento si ya no necesitas conexiones salientes a tu instancia.

Para obtener más información sobre la conectividad saliente de Private Service Connect, consulta Conexiones salientes de Private Service Connect.

Habilitar las conexiones salientes en una instancia de Cloud SQL

Para habilitar la conectividad saliente de tu instancia de Cloud SQL, primero debes crear o actualizar un adjunto de red en tu proyecto de Google Cloud .

gcloud

Para habilitar la conectividad saliente, ejecuta el siguiente comando:

gcloud beta sql instances patch INSTANCE_NAME
--psc-network-attachment-uri=NETWORK_ATTACHMENT_URI
--project=PROJECT_ID

Haz los cambios siguientes:

  • INSTANCE_NAME: nombre de la instancia de Cloud SQL con Private Service Connect que quieras configurar para la conectividad saliente.
  • NETWORK_ATTACHMENT_URI: el URI del archivo adjunto de red de tu Google Cloud proyecto que quieras usar para conectarte a la interfaz Private Service Connect de tu red.
  • PROJECT_ID: el ID del proyecto que estás usando. Google Cloud

Para confirmar que la conectividad saliente de Private Service Connect se ha habilitado correctamente, ejecuta gcloud sql instances describe. Si ves psc-network-attachment-uri en el resultado, significa que la conectividad saliente de Private Service Connect se ha habilitado correctamente.

REST v1

Para habilitar la conectividad saliente, ejecuta el siguiente comando:

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

  • PROJECT_ID: el ID de tu proyecto.
  • NETWORK_ATTACHMENT_URI: el URI del archivo adjunto de red de tu proyecto.
  • INSTANCE_ID: el nombre de tu instancia de Cloud SQL.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": "NETWORK_ATTACHMENT_URI"
        "kind": "sql#settings"
      }
    },
  }
}

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/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

REST v1beta4

Para habilitar la conectividad saliente, ejecuta el siguiente comando:

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

  • PROJECT_ID: el ID de tu proyecto.
  • NETWORK_ATTACHMENT_URI: el URI del archivo adjunto de red de tu proyecto.
  • INSTANCE_ID: el nombre de tu instancia de Cloud SQL.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": "NETWORK_ATTACHMENT_URI"
      }
    },
  }
}

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/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

Para obtener información sobre cómo solucionar problemas relacionados con la conectividad saliente de Private Service Connect, consulta el artículo Solucionar problemas de Private Service Connect.

Inhabilitar las conexiones salientes de una instancia de Cloud SQL

gcloud

Para inhabilitar la conectividad saliente, ejecuta el siguiente comando:

gcloud beta sql instances patch INSTANCE_NAME
--clear-psc-network-attachment-uri
--project=PROJECT_ID

Haz los cambios siguientes:

  • INSTANCE_NAME: nombre de la instancia de Cloud SQL con Private Service Connect que quieras configurar para la conectividad saliente.
  • PROJECT_ID: el ID del proyecto que estás usando. Google Cloud

REST v1

Para inhabilitar la conectividad saliente, ejecuta el siguiente comando:

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

  • PROJECT_ID: el ID de tu proyecto.
  • NETWORK_ATTACHMENT_URI: el URI del archivo adjunto de red de tu proyecto. Para inhabilitar esta opción, asigna el valor null.
  • INSTANCE_ID: el nombre de tu instancia de Cloud SQL.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": null,
        "kind": "sql#settings"
      }
    },
  }
}

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/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

REST v1beta4

Para inhabilitar la conectividad saliente, ejecuta el siguiente comando:

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

  • PROJECT_ID: el ID de tu proyecto.
  • NETWORK_ATTACHMENT_URI: el URI del archivo adjunto de red de tu proyecto. Para inhabilitar esta opción, asigna el valor null.
  • INSTANCE_ID: el nombre de tu instancia de Cloud SQL.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": null,
        "kind": "sql#settings"
      }
    },
  }
}

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/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

Probar la conectividad

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

gcloud

Para 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

Haz las siguientes sustituciones:

  • 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: número de puerto reservado para la instancia. En el caso de las instancias de Cloud SQL para SQL Server, el número de puerto es 1433.

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.
  • CONNECTIVITY_TEST_NAME: el nombre de la prueba de conectividad.
  • SOURCE_IP_ADDRESS: la dirección IP de la instancia de Compute Engine de origen.
  • 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).
  • SOURCE_NETWORK: el URI de la red de VPC en la que se encuentra la dirección IP de origen (por ejemplo, projects/myproject/global/networks/mynetwork).
  • DESTINATION_IP_ADDRESS: la dirección IP de la instancia de Cloud SQL de destino.
  • DESTINATION_PORT: número de puerto reservado para la instancia. En el caso de las instancias de Cloud SQL para SQL Server, el número de puerto es 1433.
  • 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).

Método HTTP y URL:

POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME

Cuerpo JSON de la solicitud:

{
  "source": {
    "ipAddress": "SOURCE_IP_ADDRESS",
    "instance": "SOURCE_INSTANCE",
    "network": "SOURCE_NETWORK"
  },
  "destination": {
    "ipAddress": "DESTINATION_IP_ADDRESS",
    "port": DESTINATION_PORT,
    "network": "DESTINATION_NETWORK",
    "projectId": "PROJECT_ID"
  },
  "protocol": "TCP"
}

Para enviar tu solicitud, despliega una de estas opciones:

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

{
  "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata",
    "createTime": "2024-05-23T16:43:49.313981473Z",
    "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME",
    "verb": "create",
    "cancelRequested": false,
    "apiVersion": "v1"
  },
  "done": false
}

Limitaciones

  • Puedes configurar hasta 20 endpoints de Private Service Connect que se conecten a la vinculación de servicio de una instancia de Cloud SQL con Private Service Connect habilitado.
  • Puedes tener hasta 64.512 conexiones simultáneas con Private Service Connect a una instancia de Cloud SQL.
  • Las siguientes marcas no son válidas o se ven afectadas:
    • --no-assign-ip: usa esta marca porque las instancias con Private Service Connect habilitado no admiten otros tipos de conectividad, como las conexiones de IP externas.
    • --authorized-networks: No puedes usar esta marca para añadir redes autorizadas.
    • --network: no puedes usar esta marca porque está asociada al acceso a servicios privados
    • --allocated-ip-range-name: no puedes usar esta marca porque no se admiten nombres de intervalos de IP permitidos
  • No puedes configurar una instancia que tenga habilitado Private Service Connect para que use el acceso a servicios privados o conexiones IP externas.
    • No puedes habilitar las conexiones de IP externa en una instancia en la que Private Service Connect esté habilitado.
    • No puedes habilitar el acceso a servicios privados ni añadir 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, Cloud Build, Database Migration Service ni Datastream 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 definir los siguientes elementos:
      • La dirección IP interna o el nombre de DNS de la instancia como destino directamente
      • La instancia como origen
      • La dirección IP del endpoint de Private Service Connect como origen
    • No se admite la inclusión en listas de permitidas basada en IP mediante redes autorizadas.
    • El servicio gestionado de Microsoft Active Directory (también llamado Managed Microsoft AD) no es compatible con las instancias de Cloud SQL que tienen habilitado Private Service Connect.

    Solucionar problemas

    En esta sección se incluye información sobre los problemas asociados a las instancias de Cloud SQL con Private Service Connect habilitado, así como los pasos para solucionarlos.

    Problema Solución de problemas
    La vinculación de servicio de la instancia no acepta el endpoint de Private Service Connect.
    1. Comprueba el estado del endpoint.

      gcloud

      Para comprobar el estado, usa el comando
      gcloud compute forwarding-rules describe.

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

      Haz las siguientes sustituciones:

      • ENDPOINT_NAME: el nombre 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

      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 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
      }
      
    2. Verifica que el estado del endpoint sea ACCEPTED. Si el estado es PENDING, significa que la instancia no permite el proyecto Google Cloud que contiene el endpoint. Asegúrate de que el proyecto de red en el que se crea el endpoint esté permitido. Para obtener más información, consulta Editar una instancia con Private Service Connect habilitado.
    ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: The resource 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME' was not found Este mensaje de error puede producirse al reservar una dirección IP interna estática para el punto final de Private Service Connect. Asegúrate de que la subred especificada exista en el proyecto indicado en el URI. Si quieres crear un endpoint en un proyecto de servicio, pero usar una subred de una red de VPC compartida, debes especificar la subred por su URI y usar el ID del proyecto host en el URI. Para obtener más información, consulta Crear el endpoint manualmente.
    ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: - The resource 'projects/PROJECT_ID/global/networks/NETWORK_NAME' was not found Este mensaje de error puede producirse cuando creas un punto final de Private Service Connect manualmente. Asegúrate de que la red especificada exista en el proyecto indicado en el URI. Si quieres crear un endpoint en un proyecto de servicio, pero usar una red de VPC compartida, debes especificar la red por su URI y usar el ID del proyecto del host en el URI. Para obtener más información, consulta Crear el endpoint manualmente.
    Invalid consumer network status for PSC auto connection.

    La red de consumo no está configurada correctamente o no está configurada en absoluto y, por lo tanto, no hay ningún endpoint disponible al que conectarse. Para conectarte al endpoint, tendrás que comprobar su estado y corregir el error antes de volver a intentarlo.
    Para comprobar el estado de un endpoint, consulta Recuperar el endpoint. El estado del endpoint puede ser uno de los siguientes:

    • CONNECTION_POLICY_MISSING: no hay ninguna política de conexión de servicio coincidente en la red del consumidor. Las políticas de conexión de servicio se configuran por red y por región. Para volver a configurar la red, consulta Actualizar una política de conexión de servicio.
    • CONSUMER_INSTANCE_PROJECT_NOT_ALLOWLISTED: hay una política de conexión de servicio coincidente, pero la instancia de servicio no está configurada para permitir la conexión a esta instancia. Para volver a configurar la política de conexión de servicio, consulta Actualizar una política de conexión de servicio.
    • POLICY_LIMIT_REACHED: la política de conexión de servicio ha alcanzado su límite de endpoints. Para solucionar este problema, debes aumentar el límite de endpoints actualizando la política de conexión de servicio.

    No permission to create a service connection policy.

    No tienes los permisos necesarios para crear una política de conexión de servicio. Para crear una política de conexión de servicio, necesitas el rol Compute Network Admin IAM. Para obtener más información, consulta Roles y permisos.

    La vinculación de red no puede aceptar conexiones desde la interfaz de Private Service Connect cuando se usa la conectividad saliente de Private Service Connect.

    Si tu red externa no puede aceptar conexiones desde la interfaz de Private Service Connect, es posible que las políticas de conexión de tu vinculación de red no estén configuradas correctamente.

    Las vinculaciones de red deben configurarse para aceptar todas las conexiones automáticamente o configurarse manualmente con una lista de conexiones aceptadas. Para obtener más información, consulta las políticas de conexión.

    Usa el siguiente comando para verificar las conexiones aceptadas en tu adjunto de red:

          gcloud compute network-attachments describe default
          --region=REGION_ID
    Si la interfaz de Private Service Connect no está en la lista de interfaces aceptadas, actualiza tu vinculación de red. Para obtener más información, consulta Gestionar archivos adjuntos de red.

    Siguientes pasos