Conectarse a una instancia mediante Conexión de servicio privado

Esta página describe cómo usar Private Service Connect para conectarse a una instancia de Cloud SQL.

Puede usar Private Service Connect para conectarse a una instancia principal de Cloud SQL o a cualquiera de sus réplicas de lectura desde múltiples redes de nube privada virtual (VPC) que pertenecen a diferentes grupos, equipos, proyectos u organizaciones.

Antes de empezar

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

Roles de usuario

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

Role Descripción
compute.networkAdmin

Otorga control total sobre la red de VPC que inicia una conexión a una instancia de Cloud SQL. Puede crear y administrar direcciones IP, reglas de firewall, políticas de conexión de servicio y puntos de conexión de servicio privado .

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

dns.admin Otorga control total sobre los recursos de Cloud DNS, incluidas las zonas y registros DNS.
cloudsql.admin Proporciona control total de una instancia de Cloud SQL y controla la instancia durante su ciclo de vida.
cloudsql.instanceUser Proporciona acceso a la instancia de Cloud SQL. Si se conecta a través del cliente proxy de autenticación de Cloud SQL, debe tener el rol de cliente de Cloud SQL . Si se conecta directamente, no necesita roles ni permisos de administración de identidades y accesos (IAM) .

Crear un punto final de conexión de servicio privado

Los puntos de conexión de servicio privado son direcciones IP internas en una red VPC de consumidor, a las que los clientes de esa red pueden acceder directamente. Los clientes pueden usar estos puntos de conexión para conectarse a instancias de Cloud SQL.

Puede hacer que Cloud SQL cree un punto final de conexión de servicio privado automáticamente en su VPC o puede crear el punto final manualmente.

Para que Cloud SQL cree automáticamente el punto final de conexión de servicio privado, haga lo siguiente:

  1. Cree una política de conexión de servicio en sus redes VPC. Con esta política, podrá aprovisionar automáticamente los endpoints de conexión de servicio privado.
  2. Cree una instancia de Cloud SQL con Private Service Connect habilitado para la instancia y configúrela para crear puntos finales de Private Service Connect automáticamente.
  3. Recuperar el punto final de la instancia . Esto permite usar el punto final para conectarse a la instancia.

Para crear manualmente el punto final de conexión de servicio privado, haga lo siguiente:

  1. Cree una instancia de Cloud SQL con Private Service Connect habilitado para la instancia.
  2. Obtenga la URI de conexión del servicio . Úsela para crear el punto de conexión de servicio privado.
  3. Reserve una dirección IP interna para el punto final de Private Service Connect y cree un punto final con esa dirección.

Crear el punto final automáticamente

Las siguientes secciones explican cómo configurar su instancia para permitir que Cloud SQL cree automáticamente el punto final de Private Service Connect.

Crear una política de conexión de servicio

Una política de conexión de servicio le permite autorizar a una clase de servicio específica a crear un punto de conexión de servicio privado en su red VPC de consumidor. Puede usar la política de conexión de servicio para que Cloud SQL cree puntos de conexión de servicio privado automáticamente.

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

Consola

  1. En el Google Cloud consola, vaya a la página Conectar servicio privado .

    Ir a Conexión de Servicio Privado

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

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

  4. Introduzca un nombre para la política de conexión.

  5. Especifique la clase de servicio haciendo lo siguiente:

    1. Para la clase de servicio de origen , seleccione Servicios de Google .
    2. En el menú de clase Servicio , seleccione google-cloud-sql porque Cloud SQL es el servicio administrado para la política de conexión.
  6. En la sección Alcance de los puntos finales de destino , seleccione una red y una región a las que se aplica esta política.

  7. En la sección Política , seleccione una o más subredes del menú Subredes . Las subredes se utilizan para asignar direcciones IP a los endpoints.

  8. Opcional: Especifique un límite de conexión para la política. Este límite determina cuántos puntos finales se pueden crear con esta política de conexión. Si no especifica un límite de conexión, no hay límite.

  9. Haga clic en Crear política .

nube g

Para crear una política de conexión de servicio, utilice 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

Reemplace lo siguiente:

  • POLICY_NAME : el nombre de su política de conexión de servicio.
  • NETWORK : la red a la que se aplica esta política.
  • PROJECT_ID : ID o número de proyecto de la red de VPC. Para redes de VPC compartidas, debe implementar políticas de conexión de servicio en el proyecto host, ya que estas políticas no son compatibles con los proyectos de servicio.
  • REGION : la región a la que se aplica esta política. La misma política debe existir para cada región donde se desee automatizar la conectividad del servicio.
  • SERVICE_CLASS : el identificador de recurso proporcionado por el productor para la clase de servicio. Para Cloud SQL, la clase de servicio es google-cloud-sql .
  • SUBNETS : una o más subredes de consumidor habituales que se utilizan para asignar direcciones IP a los endpoints de Conexión de Servicio Privado. Estas direcciones IP se asignan automáticamente y se devuelven al grupo de subredes a medida que se crean y eliminan instancias de servicio administradas. 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, puede reutilizar la misma subred en ellas. Puede introducir varias subredes en una lista separada por comas.
  • LIMIT : el número máximo de endpoints que se pueden crear con esta política. Si no se especifica un límite, no hay límite.
  • DESCRIPTION : una descripción opcional de la política de conexión del servicio.
  • PRODUCER_INSTANCE_LOCATION : Use este indicador opcional para especificar si se autoriza una jerarquía personalizada de ubicaciones para una instancia de Cloud SQL. Puede establecer el valor de PRODUCER_INSTANCE_LOCATION en solo uno de los siguientes:

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

Por ejemplo, el siguiente comando crea una política de conexión de servicio para el
Clase de servicio google-cloud-sql que asigna direcciones IP desde la subred managed-services . Se puede crear un máximo de 10 puntos de conexión de servicio privado con esta política. Los puntos de conexión deben crearse en proyectos que pertenezcan a la misma organización que la instancia de servicio administrado. 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

DESCANSAR

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID de su proyecto.
  • REGION : la región de su política de conexión de servicio.
  • POLICY_NAME : el nombre de su política de conexión de servicio.
  • DESCRIPTION : una descripción opcional de su política de conexión de servicio.
  • NETWORK : la red de su política de conexión de servicio.
  • LIMIT : el número máximo de endpoints que se pueden crear con esta política. Si no se especifica un límite, no hay límite.
  • SUBNETS : una o más subredes de consumidor habituales que se utilizan para asignar direcciones IP a los endpoints de Conexión de Servicio Privado. Estas direcciones IP se asignan automáticamente y se devuelven al grupo de subredes a medida que se crean y eliminan instancias de servicio administradas. 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, puede reutilizar la misma subred en ellas. Puede introducir varias subredes en una lista separada por comas.
  • SERVICE_CLASS : el identificador de recurso proporcionado por el productor de la clase de servicio.

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 su solicitud, expanda una de estas opciones:

Debería 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

Puede crear una instancia con Private Service Connect habilitado para la instancia y configurar la instancia para crear puntos finales automáticamente mediante gcloud CLI o la API.

nube g

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

Realice las siguientes sustituciones:

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

    Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.

  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no ofrece conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

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

    Los proyectos que especifique en los parámetros de conexión automática se añadirán automáticamente a sus proyectos permitidos. Opcionalmente, puede añadir los proyectos para los que desee crear puntos de conexión de servicio privado manualmente a su lista de proyectos permitidos.

DESCANSAR

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o 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 para la instancia.
  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no ofrece conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : una lista separada por comas de ID o números de proyectos permitidos desde donde los puntos finales de Private Service Connect pueden conectarse a instancias de Cloud SQL.

    Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.

  • MACHINE_TYPE : el tipo de máquina para la instancia.
  • CONSUMER_NETWORK : la red VPC donde desea permitir la creación automática de puntos finales de conexión de servicio privado.
  • PARENT_PROJECT : el proyecto que contiene la red CONSUMER_NETWORK . Si no se especifica otro proyecto en CONSUMER_PROJECT , los puntos finales se crean automáticamente en PARENT_PROJECT

    CONSUMER_PROJECT : Opcional. Especifique esto solo si CONSUMER_NETWORK es una red de VPC compartida y desea permitir la creación automática de puntos de conexión de servicio privado en un proyecto de servicio.

    Los proyectos que especifique en los parámetros de conexión automática se añadirán automáticamente a sus proyectos permitidos. Opcionalmente, puede añadir los proyectos para los que desee crear puntos de conexión de servicio privado manualmente a su 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 su solicitud, expanda una de estas opciones:

Debería 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 punto final

Al recuperar la dirección IP interna, que es el punto final de conexión de servicio privado para una instancia, puede usar este punto final para conectarse a la instancia .

nube g

Para ver información sobre una instancia, incluida la dirección IP que es el punto final de conexión de servicio privado para la instancia, use el comando gcloud sql instances describe :

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

Realice las siguientes sustituciones:

En la respuesta, observe el valor que aparece junto al campo pscConfig:pscAutoConnections:ipAddress . Este valor corresponde a la dirección IP interna que también es el punto final de Private Service Connect para la instancia.

DESCANSAR

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

Método HTTP y URL:

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

Para enviar su solicitud, expanda una de estas opciones:

Debería 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
    },
}

Los siguientes campos existen para las instancias que tienen habilitada la Conexión de servicio privado:

  • allowedConsumerProjects : lista de los proyectos permitidos para la instancia. Puede crear puntos de conexión de servicio privado desde cualquier red de VPC de estos proyectos hasta la conexión de servicio de la instancia.
  • pscAutoConnections : la red VPC permitida, el estado de la política de conexión del servicio y el estado de la dirección IP que es el punto final de la instancia.
  • pscEnabled : si una instancia tiene habilitada la Conexión de servicio privado.

Para ver cómo construir la solicitud de API REST subyacente para esta tarea, consulte la página instancias:get .

Crear el punto final manualmente

Las siguientes secciones explican cómo crear manualmente un punto final de conexión de servicio privado.

Crear una instancia de Cloud SQL

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

nube g

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

Realice las siguientes sustituciones:

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

    Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.

  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no ofrece conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

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

Terraformar

Para crear una instancia con Private Service Connect habilitado para la instancia, use 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 su configuración de Terraform en un Google Cloud proyecto, complete los pasos de las siguientes secciones.

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

DESCANSAR

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o 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 para la instancia.
  • AVAILABILITY_TYPE : habilita la alta disponibilidad para la instancia. Para este parámetro, especifique uno de los siguientes valores:
    • REGIONAL : Permite alta disponibilidad y se recomienda para instancias de producción. La instancia conmuta por error a otra zona dentro de la región seleccionada.
    • ZONAL : no ofrece conmutación por error. Este es el valor predeterminado.

    Para obtener más información sobre cómo configurar y eliminar la alta disponibilidad para instancias, consulte Configurar una instancia existente para alta disponibilidad y Desactivar la alta disponibilidad para una instancia .

  • ALLOWED_PROJECTS : una lista separada por comas de ID o números de proyectos permitidos desde donde los puntos finales de Private Service Connect pueden conectarse a instancias de Cloud SQL.

    Si un proyecto no está incluido en esta lista, no podrás crear puntos finales de conexión de servicio privado en el proyecto para conectarte a la instancia.

  • MACHINE_TYPE : el tipo de máquina para 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 su solicitud, expanda una de estas opciones:

Debería 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 archivo adjunto de servicio

Después de crear una instancia de Cloud SQL con Private Service Connect habilitado, obtenga el URI adjunto del servicio y úselo para crear el punto final de Private Service Connect.

nube g

Para ver información resumida sobre una instancia con Conexión de servicio privado habilitada, como el campo pscServiceAttachmentLink que muestra el URI que apunta a la conexión de servicio de la instancia, use el comando gcloud sql instances describe :

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

Realice las siguientes sustituciones:

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

El siguiente ejemplo muestra una muestra de salida para este comando:

gcloud sql instances describe myinstance \
--project=12345

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

Terraformar

Para obtener la URI de conexión del servicio, utilice el recurso Terraform google_compute_address .

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

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

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

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

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

DESCANSAR

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o 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 su solicitud, expanda una de estas opciones:

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

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

El campo pscServiceAttachmentLink muestra la URI que apunta al servicio adjunto de la instancia.

Crear un punto final de conexión de servicio privado

Puede reservar una dirección IP interna para el punto de conexión de Private Service Connect y crear un punto de conexión con esa dirección. Para crear el punto de conexión, necesita el URI de conexión del servicio y los proyectos permitidos para la instancia.

nube g

  1. Para reservar una dirección IP interna para el punto final de Private Service Connect, utilice el
    Comando gcloud compute addresses create :

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

    Realice las siguientes sustituciones:

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

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    En la respuesta, verifique que aparezca el estado RESERVED para la dirección IP.

  3. Para crear el punto final de conexión de servicio privado y apuntarlo al adjunto del servicio Cloud SQL, utilice el comando gcloud compute forwarding-rules create :

    gcloud compute forwarding-rules create ENDPOINT_NAME \
    --address=ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --network=NETWORK_NAME \
    --target-service-attachment=SERVICE_ATTACHMENT_URI \
    --allow-psc-global-access

    Realice las siguientes sustituciones:

    • ENDPOINT_NAME : el nombre del punto final
    • NETWORK_NAME : el nombre de la red VPC para el punto final
    • SERVICE_ATTACHMENT_URI : el URI del archivo adjunto de servicio
  4. Para verificar que el archivo adjunto del servicio acepta el punto final, utilice el
    gcloud compute forwarding-rules describe :

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

    En la respuesta, verifique que el campo pscConnectionStatus tenga el estado " ACCEPTED ". El punto final puede conectarse al servicio adjunto.

Terraformar

Para crear un punto final de conexión de servicio privado, utilice el recurso de Terraform google_sql_database_instance .

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

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

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

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

Preparar Cloud Shell

  1. Inicie Cloud Shell .
  2. Establecer el valor predeterminado Google Cloud Proyecto donde desea aplicar sus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si establece 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 , cree un directorio y un nuevo archivo dentro de él. El nombre del archivo debe tener la extensión .tf ; por ejemplo, main.tf En este tutorial, el archivo se denomina main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si está siguiendo un tutorial, puede copiar el código de muestra en cada sección o paso.

    Copie el código de muestra en el main.tf recién creado.

    Opcionalmente, copie el código de GitHub. Esto se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revise y modifique los parámetros de muestra para aplicarlos a su entorno.
  4. Guarde sus cambios.
  5. Inicialice Terraform. Solo necesita hacerlo una vez por directorio.
    terraform init

    Opcionalmente, para utilizar la última versión del proveedor de Google, incluya la opción -upgrade :

    terraform init -upgrade

Aplicar los cambios

  1. Revise la configuración y verifique que los recursos que Terraform va a crear o actualizar coincidan con sus expectativas:
    terraform plan

    Realice correcciones en la configuración según sea necesario.

  2. Aplique la configuración de Terraform ejecutando el siguiente comando e ingresando yes en el indicador:
    terraform apply

    Espere hasta que Terraform muestre el mensaje "¡Aplicación completada!"

  3. Abre tu Google Cloud proyecto para ver los resultados. En el Google Cloud consola, navegue a sus recursos en la interfaz de usuario para asegurarse de que Terraform los haya creado o actualizado.

DESCANSAR

  1. Reserve una dirección IP interna para el punto final de Private Service Connect.

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

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene el punto final de conexión de servicio privado
    • 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 su solicitud, expanda una de estas opciones:

    Debería 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, verifique que aparezca el estado RESERVED para la dirección IP.

  3. Cree el punto final de conexión de servicio privado y apúntelo al archivo adjunto del servicio Cloud SQL.

  4. Verifique que el archivo adjunto del servicio acepte el punto final.

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene el punto final de conexión de servicio privado
    • REGION_NAME : el nombre de la región
    • ENDPOINT_NAME : el nombre del punto final

    Método HTTP y URL:

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

    Para enviar su solicitud, expanda una de estas opciones:

    Debería 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, verifique que el campo pscConnectionStatus tenga el estado " ACCEPTED ". El punto final puede conectarse al servicio adjunto.

Conectarse a una instancia de Cloud SQL

Puede conectarse 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 idioma de Cloud SQL u otros Google Cloud aplicaciones.

Configurar una zona administrada por DNS y un registro 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 DNS sugerido. Recomendamos crear el registro DNS en una zona DNS privada de la red VPC correspondiente. Esto proporciona una forma consistente de usar el proxy de autenticación de Cloud SQL para conectarse desde diferentes redes.

nube g

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

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    Realice las siguientes sustituciones:

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

    En la respuesta, verifique 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 desea usar un nombre DNS personalizado para conectarse a una instancia de Cloud SQL en lugar del nombre DNS predefinido en esta sección, configure el nombre alternativo del sujeto (SAN) personalizado al crear la instancia. El nombre DNS personalizado que inserte en el SAN personalizado se añadirá al campo SAN del certificado de servidor de la instancia. Esto le permite usar el nombre DNS personalizado con la validación del nombre de host de forma segura.

    Para obtener más información sobre cómo configurar la configuración SAN personalizada, consulte Crear instancias .

  2. Para crear una zona DNS privada, use el comando gcloud dns managed-zones create . Esta zona está asociada a la red de VPC que se utiliza para conectarse a la instancia de Cloud SQL a través del punto de conexión de servicio privado.

    gcloud dns managed-zones create ZONE_NAME \
    --project=PROJECT_ID \
    --description="DESCRIPTION" \
    --dns-name=DNS_NAME \
    --networks=NETWORK_NAME \
    --visibility=private

    Realice las siguientes sustituciones:

    • ZONE_NAME : el nombre de la zona DNS
    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene la zona
    • DESCRIPTION : una descripción de la zona (por ejemplo, una zona DNS para la instancia de Cloud SQL)
    • DNS_NAME : el nombre del sufijo DNS para 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 VPC
  3. Después de crear el punto final de conexión de servicio privado , para crear un registro DNS en la zona, utilice el comando gcloud dns record-sets create :

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

    Realice las siguientes sustituciones:

    • DNS_RECORD : el nombre del registro DNS. Este registro se establece con el nombre DNS que obtuvo 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 recurso del conjunto de registros DNS (por ejemplo, A ).
    • RR_DATA : la dirección IP asignada al punto final de Conexión de Servicio Privado (por ejemplo, 198.51.100.5 ). También puede introducir varios valores, como rrdata1 rrdata2 rrdata3 (por ejemplo, 10.1.2.3 10.2.3.4 10.3.4.5 ).

DESCANSAR

  1. Obtenga el nombre DNS de una instancia de Cloud SQL.
  2. Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o 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 su solicitud, expanda una de estas opciones:

    Debería 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 DNS siempre terminan con un punto ( . ).

  3. Cree una zona DNS privada. Esta zona está asociada a la red de VPC que se utiliza para conectarse a la instancia de Cloud SQL a través del punto de conexión de servicio privado.
  4. Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de 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 para la instancia de Cloud SQL)
    • DNS_NAME : el nombre del sufijo DNS para 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 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 su solicitud, expanda una de estas opciones:

    Debería 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 punto final de Conexión de servicio privado , cree un registro DNS en la zona.
  6. Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de 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 establece con el nombre DNS que obtuvo de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo, 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog. ).
    • RRSET_TYPE : el tipo del conjunto de registros (por ejemplo, A ).
    • TTL : el tiempo de vida (TTL) para el conjunto de registros en número de segundos (por ejemplo, 300 ).
    • RR_DATA : la dirección IP asignada al punto final de Conexión de Servicio Privado (por ejemplo, 198.51.100.5 ). También puede 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 su solicitud, expanda una de estas opciones:

    Debería 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 conectarse a una instancia de Cloud SQL mediante un registro DNS, haga lo siguiente:

  1. Cree un punto final de conexión de servicio privado .
  2. Confirme que la conexión de servicio de la instancia acepta el punto final. Para verificar que el estado del punto final sea ACCEPTED , verifique el estado .
  3. Configurar una zona administrada DNS y un registro DNS .

Después de cumplir estas condiciones, use el registro DNS para conectarse a la instancia desde cualquier red VPC donde haya creado el punto final.

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

Realice las siguientes sustituciones:

  • DATABASE_NAME : el nombre de la base de datos de Cloud SQL para PostgreSQL que está contenida dentro de la instancia
  • USERNAME : el nombre del usuario que se conecta a la instancia
  • DNS_RECORD : el registro DNS del punto final

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

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

  1. Cree un punto final de conexión de servicio privado .
  2. Confirme que la conexión de servicio de la instancia acepta el punto final. Para verificar que el estado del punto final sea ACCEPTED , verifique el estado .

Después de cumplir estas condiciones, use la dirección IP del punto final para acceder a la instancia desde cualquier red VPC donde haya creado el punto final.

  1. Recupere la dirección IP interna del punto final de Private Service Connect utilizando el nombre de la dirección IP del punto final.

    nube g

    Para recuperar la dirección IP, utilice el comando gcloud compute addresses describe :

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

    Realice las siguientes sustituciones:

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

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

    DESCANSAR

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

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

    Método HTTP y URL:

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

    Para enviar su solicitud, expanda una de estas opciones:

    Debería 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 con el campo address .

  2. Como alternativa, recupere la dirección IP interna del punto final de Private Service Connect mediante el archivo adjunto de servicio de la instancia de Cloud SQL.

    nube g

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

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

    Realice las siguientes sustituciones:

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

    En la respuesta, verifique que aparezca 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

    DESCANSAR

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el punto final
    • REGION_NAME : el nombre de la región para el punto final
    • SERVICE_ATTACHMENT_PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el archivo adjunto de servicio
    • SERVICE_ATTACHMENT_NAME : el nombre del archivo adjunto de servicio para 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 su solicitud, expanda una de estas opciones:

    Debería 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 con el campo IPAddress .

  3. Para conectarse a la instancia de Cloud SQL, utilice la dirección IP interna.

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

    Realice las siguientes sustituciones:

    • DATABASE_NAME : el nombre de la base de datos de Cloud SQL para PostgreSQL que está contenida dentro de la instancia
    • USERNAME : el nombre del usuario que se conecta a la instancia
    • IP_ADDRESS : la dirección IP del punto final

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 conexiones de cliente de proxy de autenticación de Cloud SQL, configure un registro DNS que coincida con el nombre DNS recomendado proporcionado para la instancia. El registro DNS es una correspondencia entre un recurso DNS y un nombre de dominio.

Si se conecta a través de Private Service Connect, se requiere la versión v2.5.0 o posterior del proxy de autenticación de Cloud SQL.

Descargue e instale el proxy de autenticación de Cloud SQL

Para conectarse a instancias con la Conexión de Servicio Privado habilitada, debe descargar e instalar el archivo binario del proxy de autenticación de Cloud SQL . El archivo binario que descargue dependerá del sistema operativo y de si utiliza un kernel de 32 o 64 bits. La mayoría del hardware más reciente utiliza un kernel de 64 bits.

Si no está seguro de si su equipo ejecuta un kernel de 32 o 64 bits, utilice el comando uname -a para Linux o macOS. Para Windows, consulte 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 la Conexión a servicios privados habilitada. Para obtener más información, consulte Iniciar el proxy de autenticación de Cloud SQL .

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

    nube g

    Para ver información resumida sobre una instancia de Cloud SQL, utilice el
    Comando gcloud sql instances describe .

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

    Realice las siguientes sustituciones:

    • INSTANCE_NAME : el nombre de la instancia de Cloud SQL
    • PROJECT_ID : el ID o 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 .

    DESCANSAR

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o 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 su solicitud, expanda una de estas opciones:

    Debería 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. Copiar el nombre de la conexión de la instancia.
  3. Inicie el proxy de autenticación de Cloud SQL:

    ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    Reemplace INSTANCE_CONNECTION_NAME con el nombre de conexión de instancia que copió en el paso anterior.

Conectarse mediante los conectores de lenguaje de Cloud SQL

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

Para permitir conexiones con conectores de lenguaje de Cloud SQL, configure un registro DNS que coincida con el nombre DNS recomendado para la instancia. El registro DNS es una correspondencia entre un recurso DNS y un nombre de dominio.

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

Conectarse desde App Engine Standard, Cloud Run o funciones de Cloud Run

Para conectarse a instancias de Cloud SQL con Private Service Connect habilitado, puede usar App Engine Standard , Cloud Run o las funciones de Cloud Run .

En estos entornos sin servidor compatibles, se admiten tanto los conectores de lenguaje de Cloud SQL como las conexiones TCP directas mediante una dirección IP y un número de puerto. Para las conexiones TCP directas, esta es la dirección IP que se reserva al crear el punto de conexión de Private Service Connect . Puede especificar la dirección IP como la dirección del host de la base de datos.

Si crea un registro DNS para el punto final, puede especificar este registro para el host.

Conectarse desde BigQuery

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

  • Utilice el parámetro --no-assign-ip .
  • Utilice el parámetro --network para especificar el nombre de la red VPC que desea utilizar para crear una conexión interna.

Probar la conectividad

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

nube g

Para crear una prueba de conectividad para una instancia de Cloud SQL con Private Service Connect habilitado, use 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

Realice las siguientes sustituciones:

  • CONNECTIVITY_TEST_NAME : el nombre de la prueba de conectividad.
  • SOURCE_INSTANCE : la URI de la instancia de Compute Engine donde 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 : la URI de la red VPC donde se encuentra la dirección IP de destino (por ejemplo, projects/myproject/global/networks/mynetwork ).
  • DESTINATION_PORT : el número de puerto reservado para la instancia. Para la nube SQL para instancias PostgreSQL, el número de puerto es 5432 .

DESCANSAR

Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

  • PROJECT_ID : el ID o 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 motor de computa de origen.
  • SOURCE_INSTANCE : el URI para la instancia del motor de cómputo donde se encuentra la dirección IP de origen (por ejemplo, projects/myproject/zones/myzone/instances/myinstance ).
  • SOURCE_NETWORK : el URI para la red VPC donde 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 SQL de Destination Cloud.
  • DESTINATION_PORT : el número de puerto reservado para la instancia. Para la nube SQL para instancias PostgreSQL, el número de puerto es 5432 .
  • DESTINATION_NETWORK : el URI para la red VPC donde 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 su solicitud, expanda una de estas opciones:

Debería 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

  • Puede configurar hasta 20 puntos finales de Service Connect privados que se conectan al archivo adjunto de una instancia SQL en la nube con el servicio privado Connect habilitado.
  • No puede usar backends de servicio de servicio privado para instancias que tengan habilitado el servicio privado Connect.
  • Las siguientes banderas están invalidadas o afectadas:
    • --no-assign-ip: use este indicador porque las instancias con el servicio privado Connect habilitado no son compatibles para usar otros tipos de conectividad, como las conexiones de IP externas
    • --authorized-networks: no puede usar este indicador para agregar redes autorizadas
    • --network: no puede usar esta bandera porque está asociada con el acceso a los servicios privados
    • --allocated-ip-range-name: no puede usar esta bandera porque no se admiten los nombres de rango IP permitidos
  • No puede crear una réplica externa de una instancia con el servicio privado Connect habilitado.
  • No puede configurar una instancia que tenga un servicio privado Connect habilitado para utilizar el acceso a los servicios privados o las conexiones IP externas.
    • No puede habilitar conexiones IP externas en una instancia con el servicio privado Connect habilitado.
    • No puede habilitar el acceso a los servicios privados o agregar redes autorizadas a la instancia.
    • No puede cambiar el tipo de conectividad de la instancia.
  • No puede usar el comando gcloud sql connect , Cloud Shell, Cloud Build o DataStream para conectarse a las instancias de Cloud SQL con el servicio privado Connect habilitado.
  • Si realiza migraciones homogéneas a Cloud SQL , no puede usar el servicio de migración de bases de datos para conectarse a instancias de Cloud SQL con el servicio privado Connect habilitado.
  • Al probar la conectividad a una instancia de Cloud SQL con el servicio privado Connect habilitado , no puede establecer los siguientes elementos:
    • La dirección IP interna de la instancia o el nombre DNS como destino directamente
    • La instancia como fuente
    • La dirección IP del punto final de conexión de servicio privado como fuente
  • La lista de permitientes basada en IP mediante el uso de redes autorizadas no es compatible.
  • Las extensiones pglogical , pl/proxy , dblink y postgres_fdw no son compatibles.
  • El control, el registro y las métricas basadas en la IP del cliente no son compatibles con la consulta y las ideas del sistema. Sin embargo, se admiten VPN e interconexión.
  • Si su proyecto de red contiene instancias que usan la antigua arquitectura de red SQL Cloud, entonces no puede crear una instancia de Service Connect privado. Cloud SQL proporciona herramientas para ayudarlo a actualizar sus instancias desde la arquitectura de red anterior hasta la nueva arquitectura de red. Para obtener más información o verificar la arquitectura de red de las instancias de Cloud SQL en su proyecto y realizar las actualizaciones necesarias, consulte Actualizar una instancia a la nueva arquitectura de red .

Solucionar problemas

Esta sección contiene información sobre los problemas asociados con las instancias de Cloud SQL con el servicio privado Connect habilitado junto con los pasos para solucionar los problemas de los problemas.

Asunto Solución de problemas
El archivo adjunto del servicio de la instancia no acepta el punto final de servicio privado Connect.
  1. Verifique el estado del punto final.

    nube g

    Para verificar el estado, use el
    gcloud compute forwarding-rules describe el comando.

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

    Realice las siguientes sustituciones:

    • ENDPOINT_NAME : el nombre del punto final
    • PROJECT_ID : el ID o número de proyecto del Google Cloud proyecto que contiene el punto final
    • REGION_NAME : el nombre de la región para el punto final

    DESCANSAR

    Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:

    • PROJECT_ID : el ID o número de proyecto del Google Cloud Proyecto que contiene el Servicio Privado Connect Endpoint
    • REGION_NAME : el nombre de la región
    • ENDPOINT_NAME : el nombre del punto final

    Método HTTP y URL:

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

    Para enviar su solicitud, expanda una de estas opciones:

    Debería 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. Verifique que se ACCEPTED el estado del punto final. Si el estado está PENDING , entonces la instancia no permite el Google Cloud Proyecto que contiene el punto final. Asegúrese de que se permita el proyecto de red en el que se crea el punto final. Para obtener más información, consulte Editar una instancia con el servicio privado Connect habilitado .

¿Qué sigue?