En esta página, se describe cómo usar Private Service Connect para conectarte a una instancia de Cloud SQL.
Puedes usar Private Service Connect para conectarte a una instancia principal de Cloud SQL o a cualquiera de sus réplicas de lectura desde varias redes de nube privada virtual (VPC) que pertenezcan a organizaciones, grupos, equipos o proyectos diferentes.
Antes de comenzar
La compatibilidad con Private Service Connect con una instancia de Cloud SQL está disponible para gcloud CLI
versiones 416.0.0 y posteriores.
Funciones de usuario
En la siguiente tabla, se proporciona información sobre los roles necesarios para usar Private Service Connect con una instancia de Cloud SQL:
Rol | Descripción |
---|---|
compute.networkAdmin |
Otorga control total sobre la red de VPC que inicia una conexión a una instancia de Cloud SQL. Puedes crear y administrar direcciones IP, reglas de firewall, políticas de conexión de servicios y extremos de Private Service Connect. Si usas Private Service Connect para conectarte a una instancia de Cloud SQL desde varias redes de VPC, cada red tiene su propio administrador. |
dns.admin |
Otorga control total sobre los recursos de Cloud DNS, lo que incluye Zonas y registros DNS. |
cloudsql.admin |
Proporciona control total de una instancia de Cloud SQL y controla la instancia durante su ciclo de vida. |
cloudsql.instanceUser |
Proporciona acceso a la instancia de Cloud SQL. Si te conectas a través del cliente del proxy de autenticación de Cloud SQL, debes tener el rol de Cliente de Cloud SQL. Si te conectas directamente, no necesitas roles ni permisos de Identity and Access Management (IAM). |
Crear un extremo de Private Service Connect
Los extremos de Private Service Connect son direcciones IP internas en una red de VPC de consumidor a las que pueden acceder directamente los clientes de esa red. Los clientes pueden usar estos extremos para conectarse a instancias de Cloud SQL.
Puedes hacer que Cloud SQL cree un extremo de Private Service Connect automáticamente en tu VPC o crearlo de forma manual.
Para que Cloud SQL cree el extremo de Private Service Connect automáticamente, haz lo siguiente:
- Crea una política de conexión de servicio en tus redes de VPC. Con esta política, puedes aprovisionar extremos de Private Service Connect automáticamente.
- Crea una instancia de Cloud SQL con Private Service Connect habilitado para la instancia y configúrala para que cree extremos de Private Service Connect automáticamente.
- Recupera el extremo de la instancia. Esto te permite usar el extremo para conectarte a la instancia.
Para crear el extremo de Private Service Connect de forma manual, haz lo siguiente:
- Crea una instancia de Cloud SQL con Private Service Connect habilitado para la instancia.
- Obtén el URI del adjunto de servicio. Usa este URI para crear el extremo de Private Service Connect.
- Reserva una dirección IP interna para el extremo de Private Service Connect y crea un extremo con esa dirección.
Crea el extremo automáticamente
En las siguientes secciones, se explica cómo configurar tu instancia para permitir que Cloud SQL cree el extremo de Private Service Connect automáticamente.
Crea una política de conexión de servicio
Una política de conexión de servicio te permite autorizar una clase de servicio especificada para crear un extremo 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 extremos de Private Service Connect automáticamente.
Puedes crear una política de conexión de servicio con la consola de Google Cloud, gcloud CLI o la API.
Console
En la consola de Google Cloud, ve a la página Private Service Connect.
Haz clic en la pestaña Políticas de conexión.
Haz clic en Crear política de conexión.
Ingresa un Nombre para la política de conexión.
Para especificar la clase de servicio, haz lo siguiente:
- En Clase de servicio de origen, selecciona Servicios de Google.
- En el menú Clase de servicio, selecciona
google-cloud-sql
porque Cloud SQL es el servicio administrado para la política de conexión.
En la sección Alcance de los extremos de destino, selecciona una Red y una Región a las que se aplicará esta política.
En la sección Política, selecciona una o más subredes en el menú Subredes. Las subredes se usan para asignar direcciones IP a los extremos.
Especifica un Límite de conexión para la política (opcional). El límite determina cuántos extremos se pueden crear con esta política de conexión. Si no especificas un límite de conexiones, no hay límite.
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
Reemplaza lo siguiente:
POLICY_NAME
: el nombre de la política de conexión del servicio.NETWORK
: Es la red a la que se aplica esta política.PROJECT_ID
: el ID del proyecto o el número del proyecto de la red de VPC. En el caso de las redes de VPC compartida, debes implementar las 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
: Es la región a la que se aplica esta política. Debe existir la misma política para cada región en la que desees automatizar la conectividad del servicio.SERVICE_CLASS
: el identificador de recursos proporcionado por el productor de la clase de servicio. En Cloud SQL, la clase de servicio esgoogle-cloud-sql
.SUBNETS
: una o más subredes de consumidor regulares que se usan para asignar direcciones IP a los extremos 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 borran las instancias de servicio administrado. 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 volver a usar la misma subred en estas políticas. Puedes ingresar varias subredes en una lista separada por comas.LIMIT
: La cantidad máxima de extremos que puedes crear con esta política. Si no especificas un límite, no hay límite.DESCRIPTION
: Es una descripción opcional de la política de conexión de servicio.PRODUCER_INSTANCE_LOCATION
: Usa esta marca opcional para especificar si deseas autorizar una jerarquía personalizada de las ubicaciones de una instancia de Cloud SQL. Puedes establecer el valor dePRODUCER_INSTANCE_LOCATION
en solo uno de los siguientes:custom-resource-hierarchy-levels
: La instancia debe estar ubicada en uno de los proyectos, carpetas o organizaciones que proporciones como valor para el parámetroallowed-google-producers-resource-hierarchy-level
.none
: La instancia se encuentra en el mismo proyecto que la política de conexión del servicio.
RESOURCE_HIERARCHY_LEVEL
: Es una lista de proyectos, carpetas o organizaciones en las que se encuentra la instancia. Esta lista tiene el formatoprojects/PROJECT_ID
,folders/FOLDER_ID
oorganizations/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 desde la subred managed-services
. Se puede crear un máximo de 10 extremos de Private Service Connect con esta política. Los extremos deben crearse en proyectos que se encuentren en 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
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: el ID de tu proyecto.REGION
: La región de la política de conexión del servicio.POLICY_NAME
: el nombre de la política de conexión del servicio.DESCRIPTION
: Es una descripción opcional de la política de conexión de servicio.NETWORK
: La red de la política de conexión del servicio.LIMIT
: La cantidad máxima de extremos que puedes crear con esta política. Si no especificas un límite, no hay límite.SUBNETS
: una o más subredes de consumidor regulares que se usan para asignar direcciones IP a los extremos de Private Service Connect. Estas direcciones IP se asignan automáticamente y se muestran al grupo de la subred a medida que se crean y borran las instancias de servicio administrado. 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 volver a usar la misma subred en estas políticas. Puedes ingresar varias subredes en una lista separada por comas.SERVICE_CLASS
: el identificador de recursos 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 tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 }
Cree una instancia de Cloud SQL
Puedes crear una instancia con Private Service Connect habilitado para ella y configurarla para que cree extremos automáticamente con gcloud CLI 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=VPC_NETWORK,project=SERVICE_PROJECT
Realiza los siguientes reemplazos:
- INSTANCE_NAME: El nombre de la instancia.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
- REGION_NAME: el nombre de la región para la instancia.
ALLOWED_PROJECTS: Es una lista separada por comas de los IDs o números de proyectos permitidos desde los que los extremos de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no aparece en esta lista, no puedes crear extremos de Private Service Connect en el proyecto para conectarte a la instancia.
- AVAILABILITY_TYPE: Habilita la alta disponibilidad para la instancia. Para este parámetro, especifica uno de los siguientes valores:
REGIONAL
: Habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.ZONAL
: No proporciona capacidad de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.
- DATABASE_VERSION: la versión de la base de datos para la instancia (por ejemplo,
SQLSERVER_2019_STANDARD
). - NUMBER_OF_vCPUs: la cantidad de núcleos para la instancia.
- MEMORY_SIZE: la cantidad de memoria para la instancia.
- ROOT_PASSWORD: la contraseña del usuario
root
de Cloud SQL. - VPC_NETWORK: Es la ruta de acceso a la red de VPC desde la que se deben crear los extremos de Private Service Connect. Por ejemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: El proyecto en el que se crea el extremo de Private Service Connect. Si la red de VPC no es una VPC compartida, este solo puede ser el proyecto host de la red. Si se trata de una VPC compartida, puede ser el proyecto host o el proyecto de servicio.
Los proyectos que especifiques en los parámetros de conexión automática se agregarán a los proyectos permitidos automáticamente. De manera opcional, para los proyectos en los que deseas crear extremos de Private Service Connect de forma manual, puedes agregarlos a tu lista de proyectos permitidos.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
- INSTANCE_NAME: El nombre de la instancia.
- REGION_NAME: el nombre de la región para la instancia.
- ROOT_PASSWORD: la contraseña del usuario
root
de Cloud SQL. - AVAILABILITY_TYPE: Habilita la alta disponibilidad para la instancia. Para este parámetro, especifica uno de los siguientes valores:
REGIONAL
: Habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.ZONAL
: No proporciona capacidad de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.
ALLOWED_PROJECTS: Es una lista separada por comas de los IDs o números de proyectos permitidos desde los que los extremos de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no aparece en esta lista, no puedes crear extremos de Private Service Connect en el proyecto para conectarte a la instancia.
- MACHINE_TYPE: un valor de string enumerado que representa el tipo de máquina para la instancia. Por ejemplo:
db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE
, en el que NUMBER_OF_vCPUs y MEMORY_SIZE son la cantidad de núcleos y de memoria que deseas para la instancia. - VPC_NETWORK: Es la ruta de acceso a la red de VPC desde la que se deben crear los extremos de Private Service Connect.
SERVICE_PROJECT: El proyecto en el que se crea el extremo de Private Service Connect. Si la red de VPC no es una VPC compartida, este solo puede ser el proyecto host de la red. Si se trata de una VPC compartida, puede ser el proyecto host o el proyecto de servicio.
Los proyectos que especifiques en los parámetros de conexión automática se agregarán a los proyectos permitidos automáticamente. De manera opcional, para los proyectos en los que deseas crear extremos de Private Service Connect de forma manual, puedes agregarlos 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":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_NETWORK" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Recupera el extremo
Cuando recuperas la dirección IP interna, que es el extremo de Private Service Connect de una instancia, puedes usar este extremo para conectarte a la instancia.
gcloud
Para ver información sobre una instancia, incluida la dirección IP que es el extremo 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)'
Realiza los siguientes reemplazos:
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL. Si esta instancia tiene Private Service Connect habilitado para ella, los extremos de Private Service Connect en las redes de VPC pueden conectarse a ella.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
En la respuesta, toma nota del valor que aparece junto al campo pscConfig:pscAutoConnections:ipAddress
. Este valor es la dirección IP interna que también es el extremo de Private Service Connect de la instancia.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL. Si esta instancia tiene Private Service Connect habilitado para ella, los extremos de Private Service Connect en las redes de VPC pueden conectarse a ella.
HTTP method and URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "kind": "sql#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/SERVICE_PROJECT/global/networks/VPC_NETWORK", consumerNetworkStatus:"CONSUMER_NETWORK_STATUS", consumerProject:"SERVICE_PROJECT", ipAddress:"IP_ADDRESS", status:"STATUS" }, "pscEnabled": true }, "ipv4Enabled": false }, }
Existen los siguientes campos para las instancias que tienen Private Service Connect habilitado:
allowedConsumerProjects
: Una lista de los proyectos permitidos para la instancia. Puedes crear extremos de Private Service Connect desde cualquier red de VPC en estos proyectos al adjunto de servicio de la instancia.pscAutoConnections
: La red de VPC permitida, el estado de la política de conexión de servicios y el estado de la dirección IP que es el extremo de la instancia.pscEnabled
: indica si una instancia tiene Private Service Connect habilitado.
Si quieres ver cómo crear la solicitud subyacente a la API de REST para esta tarea, consulta la página instances:get.
Crea el extremo de forma manual
En las siguientes secciones, se explica cómo crear un extremo de Private Service Connect de forma manual.
Cree una instancia de Cloud SQL
Puedes crear una instancia con Private Service Connect habilitado para ella con gcloud CLI, 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
Realiza los siguientes reemplazos:
- INSTANCE_NAME: El nombre de la instancia.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
- REGION_NAME: el nombre de la región para la instancia.
ALLOWED_PROJECTS: Es una lista separada por comas de los IDs o números de proyectos permitidos desde los que los extremos de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no aparece en esta lista, no puedes crear extremos de Private Service Connect en el proyecto para conectarte a la instancia.
- AVAILABILITY_TYPE: Habilita la alta disponibilidad en la instancia. Para este parámetro, especifica uno de los siguientes valores:
REGIONAL
: Habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.ZONAL
: No proporciona capacidad de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.
- DATABASE_VERSION: la versión de la base de datos para la instancia (por ejemplo,
SQLSERVER_2019_STANDARD
). - NUMBER_OF_vCPUs: la cantidad de núcleos para la instancia.
- MEMORY_SIZE: la cantidad de memoria para la instancia.
- ROOT_PASSWORD: la contraseña del usuario
root
de Cloud SQL.
Terraform
Para crear una instancia con Private Service Connect habilitado, usa el recurso google_sql_database_instance
de Terraform.
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
- INSTANCE_NAME: El nombre de la instancia.
- REGION_NAME: el nombre de la región para la instancia.
- ROOT_PASSWORD: la contraseña del usuario
root
de Cloud SQL. - AVAILABILITY_TYPE: Habilita la alta disponibilidad para la instancia. Para este parámetro, especifica uno de los siguientes valores:
REGIONAL
: Habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona dentro de la región que seleccionaste.ZONAL
: No proporciona capacidad de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta las secciones Configura una instancia existente para alta disponibilidad y Desactiva la alta disponibilidad para una instancia.
ALLOWED_PROJECTS: Es una lista separada por comas de los IDs o números de proyectos permitidos desde los que los extremos de Private Service Connect pueden conectarse a instancias de Cloud SQL.
Si un proyecto no aparece en esta lista, no puedes crear extremos de Private Service Connect en el proyecto para conectarte a la instancia.
- MACHINE_TYPE: un valor de string enumerado que representa el tipo de máquina para la instancia. Por ejemplo:
db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE
, en el que NUMBER_OF_vCPUs y MEMORY_SIZE son la cantidad de núcleos y de memoria que deseas 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": "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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Obtén el adjunto del servicio
Después de crear una instancia de Cloud SQL con Private Service Connect habilitado, obtén el URI del adjunto de servicio y úsalo para crear el extremo de Private Service Connect.
gcloud
Para ver la información resumida de una instancia con Private Service Connect habilitado, como el campo pscServiceAttachmentLink
que muestra el URI que apunta al adjunto de servicio de la instancia, usa el comando gcloud sql instances describe
:
gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Realiza los siguientes reemplazos:
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que se pueden conectar los extremos de Private Service Connect en las redes de VPC
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
En el siguiente ejemplo, se muestra una respuesta de ejemplo para este comando:
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
Terraform
Para obtener el URI del adjunto de servicio, usa el recurso google_compute_address
de Terraform
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
- INSTANCE_NAME: Es el nombre de la instancia.
HTTP method and URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" }
El campo pscServiceAttachmentLink
muestra el URI que apunta al adjunto de servicio de la instancia.
Crear un extremo de Private Service Connect
Puedes reservar una dirección IP interna para el extremo de Private Service Connect y crear un extremo con esa dirección. Para crear el extremo, necesitas el URI del adjunto de servicio y los proyectos permitidos para la instancia.
gcloud
Si deseas reservar una dirección IP interna para el extremo de Private Service Connect, usa el comando
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_NAME \ --addresses=INTERNAL_IP_ADDRESS
Realiza los siguientes reemplazos:
- ADDRESS_NAME: el nombre de la dirección IP interna.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud para el extremo.
- REGION_NAME: es el nombre de la región para el extremo.
- SUBNET_NAME: el nombre de la subred de la dirección IP.
- INTERNAL_IP_ADDRESS: la dirección IP que se reservará. Esta dirección IP debe estar dentro del rango de IP principal de la subred. La dirección IP puede ser una dirección RFC 1918 o una subred con rangos que no sean RFC.
Para verificar que la dirección IP esté reservada, usa el comando
gcloud compute addresses list
:gcloud compute addresses list ADDRESS_NAME \ --project=PROJECT_ID
En la respuesta, verifica que aparezca un estado
RESERVED
para la dirección IP.Para crear el extremo de Private Service Connect y apuntarlo al adjunto de servicio de Cloud SQL, usa el comando
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access
Realiza los siguientes reemplazos:
- ENDPOINT_NAME: el nombre del extremo
- NETWORK_NAME: el nombre de la red de VPC para el extremo
- SERVICE_ATTACHMENT_URI: el URI del adjunto del servicio
Para verificar que el adjunto de servicio acepte el extremo, usa el comando
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
En la respuesta, verifica que aparezca un estado
ACCEPTED
para el campopscConnectionStatus
. El extremo puede conectarse al adjunto de servicio.
Terraform
Para crear un extremo de Private Service Connect, usa el recurso google_sql_database_instance
de Terraform.
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
REST
Reserva una dirección IP interna para el extremo de Private Service Connect.
Verifica que la dirección IP esté reservada.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo de Private Service Connect
- REGION_NAME: es 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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, verifica que aparezca un estado
RESERVED
para la dirección IP.Crea el extremo de Private Service Connect y apúntalo al adjunto de servicio de Cloud SQL.
Verifica que el adjunto de servicio acepte el extremo.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo de Private Service Connect
- REGION_NAME: es el nombre de la región.
- ENDPOINT_NAME: el nombre del extremo
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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, verifica que aparezca un estado
ACCEPTED
para el campopscConnectionStatus
. El extremo puede conectarse al adjunto de servicio.
Conectarse a una instancia de Cloud SQL
Puedes conectarte a una instancia de Cloud SQL con Private Service Connect habilitado mediante una dirección IP interna, un registro DNS, el proxy de autenticación de Cloud SQL, los conectores de lenguaje de Cloud SQL o cualquier otra aplicación de Google Cloud.
Configura una zona administrada de DNS y un registro DNS
Cloud SQL no crea registros DNS de forma automática. En su lugar, la respuesta de la API de búsqueda de instancias proporciona un nombre de DNS sugerido. Te recomendamos que crees el registro DNS en una zona del DNS privado en la red de VPC correspondiente. Esto proporciona una forma coherente de usar el proxy de autenticación de Cloud SQL para conectarte desde diferentes redes.
gcloud
Para ver información resumida sobre una instancia de Cloud SQL, incluido el nombre de DNS de la instancia, usa el comando
gcloud sql instances describe
:gcloud sql instances describe INSTANCE_NAME \ --project=PROJECT_ID
Realiza los siguientes reemplazos:
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
En la respuesta, verifica que aparezca el nombre de DNS. Este nombre tiene el siguiente patrón:
INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
. Por ejemplo:1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
.Para crear una zona del DNS privada, usa el comando
gcloud dns managed-zones create
. Esta zona está asociada con la red de VPC que se usa para conectarse a la instancia de Cloud SQL a través del extremo de Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Realiza los siguientes reemplazos:
- ZONE_NAME: el nombre de la zona del DNS
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la zona
- DESCRIPTION: una descripción de la zona (por ejemplo, una zona del DNS para la instancia de Cloud SQL)
- DNS_NAME: el nombre del sufijo DNS para la zona, como
REGION_NAME.sql.goog.
(en el que REGION_NAME es el nombre de la región de la zona) - NETWORK_NAME es el nombre de la red de VPC.
Después de crear el extremo de Private Service Connect, para crear un registro DNS en la zona, usa el comando
gcloud dns record-sets create
:gcloud dns record-sets create DNS_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Realiza los siguientes reemplazos:
- DNS_RECORD: el nombre del registro DNS. Este registro se establece en el nombre de DNS que recuperaste 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 (por ejemplo,
A
). - RR_DATA: la dirección IP asignada para el extremo de Private Service Connect (por ejemplo,
198.51.100.5
). También puedes ingresar varios valores, comorrdata1 rrdata2 rrdata3
(por ejemplo,10.1.2.3 10.2.3.4 10.3.4.5
).
- DNS_RECORD: el nombre del registro DNS. Este registro se establece en el nombre de DNS que recuperaste de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo,
REST
- Obtén el nombre de DNS de una instancia de Cloud SQL.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
- INSTANCE_NAME: Es el nombre de la instancia.
- Crea una zona del DNS privado. Esta zona está asociada con la red de VPC que se usa para conectarse a la instancia de Cloud SQL a través del extremo de Private Service Connect.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la zona del DNS
- ZONE_NAME: el nombre de la zona
- DESCRIPTION: una descripción de la zona (por ejemplo, una zona del DNS para la instancia de Cloud SQL)
- DNS_NAME: el nombre del sufijo DNS para la zona, como
REGION_NAME.sql.goog.
(en el que REGION_NAME es el nombre de la región de la zona) - NETWORK_NAME es el nombre de la red de VPC.
- Después de crear el extremo de Private Service Connect, crea un registro DNS en la zona.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la zona del DNS.
- ZONE_NAME: el nombre de la zona
- DNS_RECORD: el nombre del registro DNS. Este registro se establece en el nombre de DNS que recuperaste de la instancia de Cloud SQL anteriormente en este procedimiento (por ejemplo,
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
). - RRSET_TYPE: el tipo de conjunto de registros (por ejemplo,
A
). - TTL: el tiempo de actividad (TTL) para el conjunto de registros en cantidad de segundos (por ejemplo,
300
). - RR_DATA: la dirección IP asignada para el extremo de Private Service Connect (por ejemplo,
198.51.100.5
). También puedes ingresar varios valores, comorrdata1 rrdata2 rrdata3
(por ejemplo,10.1.2.3 10.2.3.4 10.3.4.5
).
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
HTTP method and URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ ... "dnsName": "INSTANCE_ID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog." }
El campo dnsName
muestra el nombre de DNS de la instancia de Cloud SQL. Los nombres de DNS siempre terminan con un punto (.
).
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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" }
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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" }
Conéctate directamente con un registro DNS
Antes de conectarte a una instancia de Cloud SQL mediante un registro DNS, haz lo siguiente:
- Crea un extremo de Private Service Connect.
- Confirma que el adjunto de servicio de la instancia acepte el extremo. Para verificar que el estado del extremo sea
ACCEPTED
, verifica el estado. - Configura una zona administrada de DNS y un registro DNS.
Una vez que cumplas con estas condiciones, usa el registro DNS para conectarte a la instancia desde cualquier red de VPC en la que creaste el extremo.
sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME
Realiza los siguientes reemplazos:
- DNS_RECORD: el registro DNS del extremo
- DATABASE_NAME: el nombre de la base de datos de Cloud SQL para SQL Server que se encuentra dentro de la instancia
- USERNAME: el nombre del usuario que se conecta a la instancia
Conéctate directamente a través de una dirección IP interna
Antes de conectarte a una instancia de Cloud SQL con Private Service Connect habilitado, haz lo siguiente:
- Crea un extremo de Private Service Connect.
- Confirma que el adjunto de servicio de la instancia acepte el extremo. Para verificar que el estado del extremo sea
ACCEPTED
, verifica el estado.
Una vez que cumplas con estas condiciones, usa la dirección IP del extremo para acceder a la instancia desde cualquier red de VPC donde creaste el extremo.
Recupera la dirección IP interna del extremo de Private Service Connect con el nombre de la dirección IP del extremo.
gcloud
Para recuperar la dirección IP, usa el comando
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Realiza los siguientes reemplazos:
- ADDRESS_NAME: es el nombre de la dirección IP del extremo.
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
- REGION_NAME: el nombre de la región para el extremo
En la respuesta, verifica que aparezca una dirección IP para el campo
address
. Esta es la dirección IP interna.REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
- REGION_NAME: el nombre de la región para el extremo
- ADDRESS_NAME: es el nombre de la dirección IP del extremo.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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
.Como alternativa, recupera la dirección IP interna del extremo de Private Service Connect con el adjunto de servicio de la instancia de Cloud SQL.
gcloud
Para recuperar 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
Realiza los siguientes reemplazos:
- REGION_NAME: el nombre de la región para el extremo
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
- SERVICE_ATTACHMENT_NAME: El nombre del archivo adjunto de servicio para la instancia de Cloud SQL
En la respuesta, verifica que aparezca una dirección IP. Esta es la dirección IP interna.
A continuación, se muestra una respuesta de ejemplo:
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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
- REGION_NAME: el nombre de la región para el extremo
- SERVICE_ATTACHMENT_PROJECT_ID: Es el ID o el número del proyecto de Google Cloud que contiene el archivo adjunto del 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 tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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
.-
Para conectarte a la instancia de Cloud SQL, usa la dirección IP interna.
sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME
Realiza los siguientes reemplazos:
- IP_ADDRESS: la dirección IP del extremo
- DATABASE_NAME: el nombre de la base de datos de Cloud SQL para SQL Server que se encuentra dentro de la instancia
- USERNAME: el nombre del usuario que se conecta a la instancia
Conectarse con el proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL es un conector que proporciona acceso seguro a una instancia con Private Service Connect habilitado sin necesidad de redes autorizadas o de configurar SSL.
Para permitir conexiones cliente de proxy de autenticación de Cloud SQL, configura un registro DNS que coincida con el nombre de DNS recomendado que se proporciona para la instancia. El registro DNS es una asignación entre un recurso DNS y un nombre de dominio.
Si te conectas a través de Private Service Connect, se requiere la versión v2.5.0 o una posterior del proxy de autenticación de Cloud SQL.
Descarga y, luego, instala el proxy de Cloud SQL Auth
Para conectarte a instancias con Private Service Connect habilitado, debes descargar e instalar el objeto binario para el proxy de autenticación de Cloud SQL. El objeto binario que descargues depende del sistema operativo y de si este usa un kernel de 32 bits o de 64 bits. La mayoría del hardware más nuevo usa un kernel de 64 bits.
Si no estás seguro de si tu máquina ejecuta un kernel de 32 bits o de 64 bits, usa el comando uname -a
para Linux o macOS. Para Windows, consulta la documentación de Windows.
Inicia el proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL admite conexiones a instancias con Private Service Connect habilitado. Para obtener más información, consulta Inicia el proxy de autenticación de Cloud SQL.
- Consulta la información resumida sobre una instancia de Cloud SQL, incluido el nombre de la conexión de la instancia.
gcloud
Para ver la información resumida 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)'
Realiza los siguientes reemplazos:
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
El nombre de conexión tiene el formato
PROJECT_ID:REGION_NAME:INSTANCE_NAME
.REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia
- INSTANCE_NAME: Es el nombre de la instancia.
HTTP method and URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ ... "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME" }
El nombre de conexión tiene el formato
PROJECT_ID:REGION_NAME:INSTANCE_NAME
. - Copia el nombre de la conexión de la instancia.
Inicia el proxy de autenticación de Cloud SQL:
./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc
Reemplaza INSTANCE_CONNECTION_NAME por el nombre de la conexión de instancia que copiaste en el paso anterior.
Conéctate mediante los conectores de lenguaje de Cloud SQL
Los conectores de lenguaje de Cloud SQL son bibliotecas que proporcionan acceso seguro a una instancia de Cloud SQL con Private Service Connect habilitado sin necesidad de tener redes autorizadas ni de configurar SSL.
Para permitir conexiones con conectores de lenguaje de Cloud SQL, configura un registro DNS que coincida con el nombre de DNS recomendado que se proporciona para la instancia. El registro DNS es una asignación entre un recurso DNS y un nombre de dominio.
Los conectores de lenguaje de Cloud SQL admiten conexiones de Private Service Connect a través del tipo de IP PSC
dentro de sus respectivas bibliotecas.
- Conector de Python de Cloud SQL (v1.3.0 o versiones posteriores)
- Conector de Go de Cloud SQL (v1.4.0 o versiones posteriores)
- Conector de Java de Cloud SQL (v1.13.0 o versiones posteriores)
- Conector de Node.js de Cloud SQL (v0.5.0 o una versión posterior)
Conéctate 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, Cloud Run o Cloud Run Functions.
En estos entornos sin servidores compatibles, se admiten los conectores de lenguaje de Cloud SQL y las conexiones TCP directas mediante una dirección IP y un número de puerto. Para las conexiones TCP directas, esta es la dirección IP que reservas cuando creas el extremo de Private Service Connect. Puedes especificar la dirección IP como la dirección para el host de la base de datos.
Si creas un registro DNS para el extremo, puedes especificar este registro para el host.
Conectarse desde BigQuery
Para acceder a los datos en Cloud SQL y realizar consultas en estos datos a través de una conexión IP interna, usa el parámetro --enable-google-private-path
. Este parámetro solo es válido si se cumplen estas condiciones:
- Usa el parámetro
--no-assign-ip
. - Usa el parámetro
--network
para especificar el nombre de la red de VPC que deseas usar a fin de crear una conexión interna.
Prueba la conectividad
Para probar la conectividad entrante a una instancia de Cloud SQL con Private Service Connect habilitado, configura la dirección IP del extremo de Private Service Connect como la dirección IP de destino.
gcloud
A fin de crear una prueba de conectividad para una instancia de Cloud SQL con Private Service Connect habilitado, usa el comando gcloud network-management connectivity-tests create
:
gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
Realiza los siguientes reemplazos:
- CONNECTIVITY_TEST_NAME: el nombre de la prueba de conectividad.
- SOURCE_INSTANCE: el URI de la instancia de Compute Engine en la que se encuentra la dirección IP de origen (por ejemplo,
projects/myproject/zones/myzone/instances/myinstance
). - DESTINATION_CLOUD_SQL_INSTANCE: la URL de la instancia de Cloud SQL (por ejemplo,
projects/myproject/instances/myinstance
). - DESTINATION_NETWORK: el URI de la red de VPC en la que se encuentra la dirección IP de destino (por ejemplo,
projects/myproject/global/networks/mynetwork
). - DESTINATION_PORT: Es el número de puerto reservado para la instancia. En las instancias de Cloud SQL para SQL Server, el número de puerto es
1433
.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene la instancia.
- 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: Es el número de puerto reservado para la instancia. En 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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 extremos de Private Service Connect que se conecten al adjunto de servicio de una instancia de Cloud SQL con Private Service Connect habilitado.
- No puedes usar los backends de Private Service Connect para las instancias que tienen Private Service Connect habilitado.
- Las siguientes marcas se invalidan o se ven afectadas:
--no-assign-ip:
usa esta marca porque las instancias con Private Service Connect habilitado no son compatibles con otros tipos de conectividad, como conexiones IP externas--authorized-networks:
no puedes usar esta marca para agregar redes autorizadas--network:
no puedes usar esta marca porque está asociada con el acceso privado a servicios--allocated-ip-range-name:
no puedes usar esta marca porque no se admiten los nombres de rango de IP permitidos
- No puedes crear una réplica externa de una instancia con Private Service Connect habilitado.
- No puedes configurar una instancia que tenga Private Service Connect habilitado para usar el acceso privado a servicios o conexiones IP externas.
- No puedes habilitar conexiones IP externas en una instancia con Private Service Connect habilitado.
- No puedes habilitar el acceso privado a servicios ni agregar redes autorizadas a la instancia.
- No puedes cambiar el tipo de conectividad de la instancia.
- No puedes usar el comando
gcloud sql connect
, Cloud Shell, 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 configurar los siguientes elementos:
- La dirección IP interna de la instancia o el nombre de DNS como el destino directamente
- La instancia como origen
- La dirección IP del extremo de Private Service Connect como el origen
- No se admite la lista de entidades permitidas basadas en IP mediante redes autorizadas.
- En las instancias de Cloud SQL con Private Service Connect habilitado, no se admiten el servicio administrado para Microsoft Active Directory (también llamado Managed Microsoft AD) ni los servidores vinculados.
Solución de problemas
Esta sección contiene información sobre los problemas asociados con las instancias de Cloud SQL con Private Service Connect habilitado, junto con los pasos para solucionar los problemas.
Problema Soluciona problemas El adjunto de servicio de la instancia no acepta el extremo de Private Service Connect. - Verifica el estado del extremo.
gcloud
Para verificar 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
Realiza los siguientes reemplazos:
- ENDPOINT_NAME: el nombre del extremo
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo
- REGION_NAME: el nombre de la región para el extremo
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: el ID o el número del proyecto de Google Cloud que contiene el extremo de Private Service Connect
- REGION_NAME: es el nombre de la región.
- ENDPOINT_NAME: el nombre del extremo
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 }
- Verifica que el estado del extremo sea
ACCEPTED
. Si el estado esPENDING
, la instancia no permite el proyecto de Google Cloud que contiene el extremo. Asegúrate de que el proyecto de red en el que se crea el extremo esté permitido. Para obtener más información, consulta Edita una instancia con Private Service Connect habilitado.
¿Qué sigue?
- Obtén más información sobre IP privada.
- Más información sobre Private Service Connect
- Obtén más información sobre cómo crear una réplica de lectura de una instancia con Private Service Connect habilitado.
- Obtén más información sobre cómo clonar una instancia con Private Service Connect habilitado.
- Obtén más información para ver información de resumen sobre las instancias con Private Service Connect habilitado.
- Obtén más información para configurar y quitar la alta disponibilidad de una instancia con Private Service Connect habilitado.
- Obtén más información sobre cómo editar y borrar una instancia con Private Service Connect habilitado.