En este documento, se describe cómo configurar conexiones IP privadas a tu instancia de Cloud SQL con el acceso privado a servicios.
Antes de comenzar
Cloud SQL requiere acceso privado a servicios para cada red de VPC que se usa en conexiones IP privadas.
Habilita las APIs obligatorias
Habilita la API de Service Networking (servicenetworking.googleapis.com)
y la API de Compute Engine (compute.googleapis.com) en el proyecto
que aloja tu instancia de Cloud SQL.
Si usas una red de VPC compartida, también debes habilitar estas APIs en el proyecto host de VPC compartida.
Puedes habilitar las APIs con el siguiente comando:
gcloud services enable servicenetworking.googleapis.com compute.googleapis.com --project=PROJECT_ID
Reemplaza PROJECT_ID por el ID de tu proyecto (o el ID del proyecto host de VPC compartida).
Si la API de Service Networking no está habilitada, cuando crees la instancia de Cloud SQL
con una dirección IP privada, la operación fallará con un error SERVICE_NETWORKING_NOT_ENABLED.
Roles y permisos requeridos
Para obtener los permisos que
necesitas para crear y administrar una conexión de acceso privado a servicios,
pídele a tu administrador que te otorgue el
rol de IAM de administrador de red de Compute (roles/compute.networkAdmin) en el proyecto que aloja tu instancia de Cloud SQL.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear y administrar una conexión de acceso a servicios privados. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear y administrar una conexión de acceso a servicios privados:
-
compute.addresses.create -
compute.addresses.list -
compute.globalAddresses.create -
compute.globalAddresses.createInternal -
compute.globalAddresses.list -
compute.networks.list -
compute.networks.use -
servicenetworking.services.addPeering -
serviceusage.services.list
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Si usas una red de VPC compartida, también debes otorgar el rol de administrador de redes de Compute (roles/compute.networkAdmin) al usuario en el proyecto host de la VPC compartida.
Configura el acceso privado a servicios para Cloud SQL
El proceso de configuración del acceso privado a servicios se conforma por las siguientes partes:
Selecciona un rango de direcciones IP existente o asigna uno nuevo.
Si creas tu instancia de Cloud SQL en la consola de Google Cloud , también tienes la opción de permitir que Google asigne un rango de direcciones IP por ti. En este caso, Google asignará un rango de IP con una longitud de prefijo
/24automáticamente y usará el nombre default-ip-range.Si planeas crear instancias de Cloud SQL en varias regiones o para diferentes tipos de bases de datos, debes tener un rango mínimo de
/24de direcciones IP disponibles para cada región o tipo de base de datos. Esto incluye otras aplicaciones, como Filestore o Memorystore. Para una región o un tipo de base de datos nuevo, Cloud SQL debe tener un rango de/24gratuito.- Crea la conexión de Private Service Connect desde tu red de VPC hasta la red del productor de servicios subyacente.
Para obtener información sobre los requisitos del entorno de red y de la aplicación, y los permisos de IAM necesarios para el acceso privado a los servicios, consulta Requisitos para las conexiones IP privadas.
Asigna un rango de direcciones IP
Console
-
En la consola de Google Cloud , ve a la página Redes de VPC.
- Selecciona la red de VPC que deseas usar.
- Selecciona la pestaña Acceso privado a servicios.
- Selecciona la pestaña Rangos de IP asignados a servicios.
- Haz clic en Asigna rangos de IP.
- Para el Nombre del rango asignado, especifica
google-managed-services-VPC_NETWORK_NAME, en el queVPC_NETWORK_NAMEes el nombre de la red de VPC que conectas (por ejemplo,google-managed-services-default). La Descripción es opcional. - Selecciona la opción Personalizado y, luego, ingresa el rango de direcciones IP que se asignará, en notación CIDR.
- Haz clic en Asignar para crear un rango asignado.
gcloud
Realice una de las acciones siguientes:
- Para especificar un rango de dirección y una longitud de prefijo (máscara de subred), usa las marcas
addressesyprefix-length. Por ejemplo, a fin de asignar el bloque CIDR192.168.0.0/16, especifica192.168.0.0para la dirección y16como la longitud de prefijo. - Para especificar solo una longitud de prefijo (máscara de subred), usa la marca
prefix-length. Cuando omites el rango de direcciones, Google Cloud selecciona automáticamente un rango de direcciones sin usar en tu red de VPC. En el siguiente ejemplo, se selecciona un rango de direcciones IP sin usar con una longitud de prefijo de16bits.
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME
Reemplaza VPC_NETWORK_NAME por el nombre de tu red de VPC, como my-vpc-network.
En el siguiente ejemplo, se asigna un rango de IP que permite que los recursos en la red de VPC my-vpc-network se conecten a instancias de Cloud SQL mediante una IP privada.
gcloud compute addresses create google-managed-services-my-vpc-network \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/myprojectid/global/networks/myvpcnetwork \ --project=my-project
Terraform
Para asignar un rango de direcciones IP, usa un recurso de Terraform.
Aplique los cambios
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.tfrecié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
-upgradepara 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
yescuando 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.
Borra los cambios
Quita los recursos que se aplicaron antes con tu configuración de Terraform mediante la ejecución del siguiente comando y, luego, ingresa yes cuando se te solicite:
terraform destroy
Crea una conexión privada
Console
-
En la consola de Google Cloud , ve a la página Redes de VPC.
- Selecciona la red de VPC que deseas usar.
- Selecciona la pestaña Conexión privada a servicios.
- Selecciona la pestaña Conexiones privadas a servicios.
- Haz clic en Crear una conexión para crear una conexión privada entre tu red y un productor de servicios.
- Para la Asignación designada, selecciona uno o más rangos asignados existentes que no estén siendo usados por otros productores de servicios.
- Haz clic en Conectar para crear la conexión.
gcloud
Crea una conexión de acceso privado a servicios para la red de VPC en tu proyecto.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
El comando inicia una operación de instancia de Cloud SQL de larga duración y muestra un ID de operación.
Verifica si la operación se realizó correctamente.
gcloud services vpc-peerings operations describe \ --name=OPERATION_ID
Puedes especificar más de un rango asignado cuando creas una conexión privada. Por ejemplo, si se agotó un rango, puedes asignar rangos adicionales. El servicio usa direcciones IP de todos los rangos proporcionados, en el orden que especificaste.
Terraform
Para crear una conexión privada, usa un recurso de Terraform.
A una cuenta de servicio con el formato service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com se le otorga la función servicenetworking.serviceAgent, mientras se crea la conexión privada, ya que la cuenta se aprovisiona justo a tiempo.
Si ves un error sobre el permiso compute.globalAddresses.list o el permiso compute.projects.get para el proyecto, ejecuta este comando gcloud:
gcloud projects add-iam-policy-binding HOST_PROJECT_NAME \ --member=serviceAccount:service-HOST_PROJECT_NUMBER@service-networking.iam.gserviceaccount.com \ --role=roles/servicenetworking.serviceAgent
Configura una instancia para que use una IP privada con acceso privado a los servicios
Puedes configurar el acceso privado a servicios para instancias nuevas y existentes.
Configura una IP privada en una instancia nueva
Console
-
En la consola de Google Cloud , ve a la página Instancias de Cloud SQL.
- Haz clic en Crear instancia.
- En la sección Personaliza tu instancia, expande Mostrar opciones de configuración.
- Expande Conexiones.
- Seleccione IP privada.
- Selecciona Acceso privado a servicios (PSA).
En una lista desplegable, se muestran las redes de VPC disponibles en tu proyecto. Si tu proyecto es el proyecto de servicio de una VPC compartida, también se muestran las redes de VPC del proyecto host.
- Selecciona la red de VPC que deseas usar.
- Haz clic en Configurar conexión.
- En la sección Asignar un rango de IP, selecciona una de las siguientes opciones:
- Selecciona uno o más rangos de IP existentes o crea uno nuevo desde el menú desplegable. El menú desplegable incluye los rangos asignados previamente, si hay alguno, o puedes seleccionar Asignar un rango de IP nuevo e ingresar un rango y un nombre nuevos.
- Usa un rango de IP asignado automáticamente en tu red.
- Haz clic en Continuar.
- Haz clic en Crear conexión (Create connection).
- Verifica que ves el mensaje:
Private service connection for network VPC_NETWORK_NAME has been successfully created. - De manera opcional, puedes especificar un rango de IP asignado para que tus instancias
las usen en las conexiones.
- Expande la opción Mostrar la opción de rango de IP asignado.
- Selecciona un rango de IP en el menú desplegable.
- Es opcional. Si quieres permitir que otros servicios de Google Cloud , como BigQuery, accedan a los datos en Cloud SQL y realicen consultas en estos datos a través de una conexión IP privada, selecciona Habilitar ruta privada.
- Termina de configurar tu instancia.
- Haga clic en Crear instancia.
Si ves un mensaje que indica que necesitas configurar una conexión privada a servicios, haz lo siguiente:
gcloud
Antes de crear una instancia con una dirección IP privada, asegúrate de que tu proyecto esté configurado para el acceso privado a servicios.
Ejecuta los siguientes comandos de la CLI de gcloud para configurar la red de acceso a servicios privados para Cloud SQL:
- Habilita las APIs necesarias:
gcloud services enable \ sqladmin.googleapis.com \ compute.googleapis.com \ servicenetworking.googleapis.com \ --project=PROJECT_ID
- Asigna un rango de direcciones IP para el intercambio de tráfico entre redes de VPC:
gcloud compute addresses create google-managed-services-VPC_NETWORK_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --project=PROJECT_ID
- Establece la conexión de intercambio de tráfico entre redes de VPC:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-VPC_NETWORK_NAME \ --network=VPC_NETWORK_NAME \ --project=PROJECT_ID
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
INSTANCE_ID: El ID de la instanciaPROJECT_ID: El ID del proyectoNETWORK_PROJECT_ID: Es el ID del proyecto de la red de VPC.VPC_NETWORK_NAME: Es el nombre de la red de VPC.RANGE_NAME: opcional. Si se especifica, establece un nombre de rango para el que se asigna un rango de IP. El nombre del rango debe cumplir conRFC-1035y contener de 1 a 63 caracteres.REGION_NAME: Es el nombre de la región.
--network. Para inhabilitar la IP pública, usa la marca --no-assign-ip.
Además, de manera opcional, usa el parámetro --enable-google-private-path
para permitir que otros servicios de Google Cloud , como BigQuery,
accedan a los datos en Cloud SQL y realicen consultas en ellos a través de una
conexión IP privada. Este parámetro solo es válido si se cumplen estas condiciones:
- Usa el parámetro
--no-assign-ip. - Usa el parámetro
--networkpara especificar el nombre de la red de VPC que deseas usar para crear una conexión privada.
--enforce-new-sql-network-architecture. Asegúrate de haber asignado suficientes direcciones IP. Cuando usas la aplicación de la nueva
arquitectura de red antes de que se actualice por completo un proyecto, es posible que
se produzca un error en la creación de la instancia si no hay suficiente espacio de direcciones IP disponible.
Para obtener más información, consulta
Actualiza
una instancia a la nueva arquitectura de red y
Asigna un rango de direcciones IP.
gcloud beta sql instances create INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --enforce-new-sql-network-architecture
Terraform
A fin de configurar la IP privada para una instancia nueva, usa los siguientes recursos de Terraform:
google_compute_networkgoogle_compute_global_addressgoogle_service_networking_connectiongoogle_sql_database_instance
Aplique los cambios
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 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.tfrecié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
-upgradepara 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
yescuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto 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.
Borra los cambios
Para borrar tus cambios, haz lo siguiente:
- Para inhabilitar la protección contra eliminaciones, en tu archivo de configuración de Terraform, establece el argumento
deletion_protectionenfalse.deletion_protection = "false"
- Para aplicar la configuración actualizada de Terraform, ejecuta el siguiente comando y, luego, ingresa
yescuando se te solicite:terraform apply
-
Quita los recursos que se aplicaron antes con tu configuración de Terraform a través de la ejecución del siguiente comando y, luego, ingresa
yescuando se te solicite:terraform destroy
REST v1
Crea una instancia nueva con una dirección IP privada:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: ID del proyecto
- INSTANCE_ID: El ID de la instancia
- VPC_NETWORK_NAME: especifica el nombre de la red de nube privada virtual (VPC) que deseas usar para esta instancia. El acceso privado a servicios ya debe estar configurado para la red.
- RANGE_NAME: Opcional. Si se especifica, establece un nombre de rango para el que se asigna un rango de IP. El nombre del rango debe cumplir con
RFC-1035y contener de 1 a 63 caracteres. - AUTHORIZED_NETWORKS: Para las conexiones IP públicas, especifica las conexiones de redes autorizadas que pueden conectarse a la instancia.
En el parámetro ipv4Enabled, establece el valor en true si usas una dirección IP pública para tu instancia o false si tu instancia tiene una dirección IP privada.
Si configuras el parámetro enablePrivatePathForGoogleCloudServices como true,
permites que otros servicios de Google Cloud , como BigQuery, accedan a los datos en
Cloud SQL y realicen consultas en ellos a través de una conexión IP privada. Si configuras este parámetro en
false, otros servicios de Google Cloud no pueden acceder a los datos de Cloud SQL a través de una conexión IP privada.
Puedes usar el campo sqlNetworkArchitecture para aplicar el uso de la nueva arquitectura de red
en la instancia cuando se cree, incluso si el proyecto no se actualizó por completo.
Para obtener más detalles sobre la nueva arquitectura de red y sus implicaciones, consulta
Actualiza una instancia a la nueva arquitectura de red y Asigna un rango de direcciones IP.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{
"name": "INSTANCE_ID",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Crea una instancia nueva con una dirección IP privada:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: ID del proyecto
- INSTANCE_ID: El ID de la instancia
- VPC_NETWORK_NAME: especifica el nombre de la red de nube privada virtual (VPC) que deseas usar para esta instancia. El acceso privado a servicios ya debe estar configurado para la red.
- RANGE_NAME: Opcional. Si se especifica, establece un nombre de rango para el que se asigna un rango de IP. El nombre del rango debe cumplir con
RFC-1035y contener de 1 a 63 caracteres. - AUTHORIZED_NETWORKS: Para las conexiones IP públicas, especifica las conexiones de redes autorizadas que pueden conectarse a la instancia.
En el parámetro ipv4Enabled, establece el valor en true si usas una dirección IP pública para tu instancia o false si tu instancia tiene una dirección IP privada.
Si configuras el parámetro enablePrivatePathForGoogleCloudServices como true,
permites que otros servicios de Google Cloud , como BigQuery, accedan a los datos en
Cloud SQL y realicen consultas en ellos a través de una conexión IP privada. Si configuras este parámetro en
false, otros servicios de Google Cloud no pueden acceder a los datos de Cloud SQL a través de una conexión IP privada.
Puedes usar el campo sqlNetworkArchitecture para aplicar el uso de la nueva arquitectura de red para la instancia en el momento de la creación, incluso si el proyecto no se actualizó por completo.
Para obtener más detalles sobre la nueva arquitectura de red y sus implicaciones, consulta
Actualiza una instancia a la nueva arquitectura de red y Asigna un rango de direcciones IP.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{
"name": "INSTANCE_ID",
"region": "region",
"databaseVersion": "database-version",
"settings": {
"tier": "machine-type",
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Configura una IP privada en una instancia existente
Configurar una instancia de Cloud SQL existente para que use una IP privada hace que la instancia se reinicie, lo que causa un tiempo de inactividad.
A fin de configurar una instancia existente para que use una IP privada, sigue estos pasos:
Console
-
En la consola de Google Cloud , ve a la página Instancias de Cloud SQL.
- Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
- Selecciona Conexiones en el menú de navegación de Cloud SQL.
- En la pestaña Redes, selecciona la casilla de verificación IP privada.
En una lista desplegable, se muestran las redes disponibles en tu proyecto.
- Selecciona la red de VPC que deseas usar:
- Haz clic en Configurar conexión.
- En la sección Asignar un rango de IP, elige una de las siguientes opciones:
- Selecciona uno o más rangos de IP existentes o crea uno nuevo desde el menú desplegable. El menú desplegable incluye los rangos asignados previamente, si hay alguno, o puedes seleccionar Asignar un rango de IP nuevo e ingresar un rango y un nombre nuevos.
- Usa un rango de IP asignado automáticamente en tu red.
- Haz clic en Continuar.
- Haz clic en Crear conexión (Create connection).
- Verifica que veas el estado Se creó correctamente la conexión privada a servicio para la red
VPC_NETWORK_NAME. - Es opcional. Si quieres permitir que otros Google Cloud servicios, como BigQuery, accedan a los datos en Cloud SQL y realicen consultas en estos datos a través de una conexión IP privada, selecciona la casilla de verificación Habilitar ruta privada.
- Haz clic en Guardar.
Si ves Se requiere conexión privada a servicio:
gcloud
Asegúrate de que tu proyecto esté configurado para el acceso privado a servicios.
Actualiza tu instancia de Cloud SQL con el parámetro --network para especificar el nombre de la red de VPC seleccionada.
Para aplicar el uso de la nueva arquitectura de red
en la instancia cuando agregues una configuración de red de IP privada, usa la marca --enforce-new-sql-network-architecture.
Asegúrate de haber asignado suficiente
espacio de direcciones IP en tu rango de IP.
Cuando usas la aplicación de la nueva arquitectura de red antes de que un proyecto se actualice por completo, es posible que se produzca un error en la creación de instancias si no hay suficiente espacio de direcciones IP disponible.
Para obtener más información, consulta Actualiza una instancia a la nueva arquitectura de red y Asigna un rango de direcciones IP.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --enable-google-private-path \ --enforce-new-sql-network-architecture
REST v1
Crea una instancia nueva con una dirección IP privada:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: ID del proyecto
- INSTANCE_ID: El ID de la instancia
- VPC_NETWORK_NAME: especifica el nombre de la red de nube privada virtual (VPC) que deseas usar para esta instancia. El acceso privado a servicios ya debe estar configurado para la red.
- RANGE_NAME: Opcional. Si se especifica, establece un nombre de rango para el que se asigna un rango de IP. El nombre del rango debe cumplir con
RFC-1035y contener de 1 a 63 caracteres. - AUTHORIZED_NETWORKS: Para las conexiones IP públicas, especifica las conexiones de redes autorizadas que pueden conectarse a tu instancia.
En el parámetro ipv4Enabled, establece el valor en true si usas una dirección IP pública para tu instancia o false si tu instancia tiene una dirección IP privada.
Si configuras el parámetro enablePrivatePathForGoogleCloudServices como true,
permites que otros servicios de Google Cloud , como BigQuery, accedan a los datos en
Cloud SQL y realicen consultas en ellos a través de una conexión IP privada. Si configuras este parámetro en false, otros servicios de Google Cloud no pueden acceder a los datos de Cloud SQL a través de una conexión IP privada.
Puedes usar el campo sqlNetworkArchitecture para aplicar el uso de la nueva arquitectura de red
en la instancia cuando se cree, incluso si el proyecto no se actualizó por completo.
Para obtener más detalles sobre la nueva arquitectura de red y sus implicaciones, consulta
Actualiza una instancia a la nueva arquitectura de red y Asigna un rango de direcciones IP.
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
Cuerpo JSON de la solicitud:
{
"settings":
{
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
REST v1beta4
Crea una instancia nueva con una dirección IP privada:
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: ID del proyecto
- INSTANCE_ID: El ID de la instancia
- VPC_NETWORK_NAME: especifica el nombre de la red de nube privada virtual (VPC) que deseas usar para esta instancia. El acceso privado a servicios ya debe estar configurado para la red.
- RANGE_NAME: Opcional. Si se especifica, establece un nombre de rango para el que se asigna un rango de IP. El nombre del rango debe cumplir con
RFC-1035y contener de 1 a 63 caracteres. - AUTHORIZED_NETWORKS: Para las conexiones IP públicas, especifica las conexiones de redes autorizadas que pueden conectarse a la instancia.
En el parámetro ipv4Enabled, establece el valor en true si usas una dirección IP pública para tu instancia o false si tu instancia tiene una dirección IP privada.
Si configuras el parámetro enablePrivatePathForGoogleCloudServices como true,
permites que otros servicios de Google Cloud , como BigQuery, accedan a los datos en
Cloud SQL y realicen consultas en ellos a través de una conexión IP privada. Si configuras este parámetro en
false, otros servicios de Google Cloud no pueden acceder a los datos de Cloud SQL a través de una conexión IP privada.
Puedes usar el campo sqlNetworkArchitecture para aplicar el uso de la nueva arquitectura de red
en la instancia cuando se cree, incluso si el proyecto no se actualizó por completo.
Para obtener más detalles sobre la nueva arquitectura de red y sus implicaciones, consulta
Actualiza una instancia a la nueva arquitectura de red y Asigna un rango de direcciones IP.
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
Cuerpo JSON de la solicitud:
{
"settings":
{
"ipConfiguration": {
"ipv4Enabled": false,
"privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
"allocatedIpRange": "RANGE_NAME"
"authorizedNetworks": [AUTHORIZED_NETWORKS],
"enablePrivatePathForGoogleCloudServices": true
}
},
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE"
}
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Cambia la configuración del acceso privado a servicios
Puedes cambiar el rango de direcciones asignado de una conexión privada de servicios sin modificar ninguna instancia de Cloud SQL existente. Para cambiar la dirección IP privada de una instancia de Cloud SQL existente, sigue estos pasos.
Para cambiar el rango de direcciones asignado, realiza las siguientes acciones:
Console
-
En la consola de Google Cloud , ve a la página Redes de VPC.
- Selecciona la red de VPC que deseas usar.
- Selecciona la pestaña Conexión privada a servicios.
- Selecciona la pestaña Rangos de IP asignados a servicios.
Selecciona el nombre del rango que deseas borrar.
Haz clic en Liberar.
Haz clic en Asigna rangos de IP.
Crea un rango nuevo con el mismo nombre y rango nuevo.
El nombre es importante porque la conexión privada ya se estableció con ese nombre de dirección.
gcloud services vpc-peerings update \ --network=VPC_NETWORK_NAME \ --ranges=ALLOCATED_RANGES \ --service=servicenetworking.googleapis.com \ --force
Cambia la dirección IP privada de una instancia de Cloud SQL existente
Para cambiar la dirección IP privada de una instancia de Cloud SQL existente, mueve la instancia de su red original a una temporal. Luego, cambia la configuración de acceso privado a los servicios de la red original de la instancia y mueve la instancia de Cloud SQL a su red original.
Para pasar a una red de VPC diferente, sigue todos los pasos, excepto el último (traslada la instancia) en el siguiente procedimiento. En este caso, TEMPORARY_VPC_NETWORK_NAME es la nueva red de VPC. Además, borra la conexión privada anterior.
La conexión privada borrada puede tardar unos días en desaparecer de laGoogle Cloud consola.
Si la instancia de Cloud SQL se aloja en una red de VPC compartida, las variables VPC_NETWORK_NAME que se usan en las siguientes instrucciones deben ser los nombres de las redes de VPC del proyecto host. Para especificar una red con una red de VPC compartida, usa la URL completa de la red, por ejemplo, projects/HOST_PROJECT/global/networks/NETWORK_NAME.
Console
-
En la consola de Google Cloud , ve a la página Redes de VPC.
- Crea una red de VPC temporal.
- Crea una asignación de IP en la red de VPC temporal.
- Crea una conexión privada en la red de VPC temporal.
Mueve la instancia de Cloud SQL a la red de VPC temporal.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/TEMPORARY_VPC_NETWORK_NAME \ --no-assign-ip
Cambia la configuración del acceso privado a servicios en la red original para agregar un rango asignado nuevo o borrar los existentes.
Mueve la instancia de Cloud SQL a la red de VPC original.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/PROJECT_ID/global/networks/ORIGINAL_VPC_NETWORK_NAME \ --no-assign-ip
Conéctate a una instancia con su dirección IP privada
Debes usar el acceso privado a servicios para conectarte a instancias de Cloud SQL desde instancias de Compute Engine o Google Kubernetes Engine en la misma red de VPC (definidas aquí como fuentes internas) o fuera de esa red (con una fuente externa).
Conéctate desde una fuente interna
Si deseas conectarte desde una fuente en el mismo Google Cloud proyecto que tu instancia de Cloud SQL, como el proxy de autenticación de Cloud SQL que se ejecuta en un recurso de Compute Engine, ese recurso debe estar en la misma red de VPC en la que se estableció el acceso privado a servicios para la instancia de Cloud SQL.
Para conectarse desde una fuente sin servidores, como el entorno estándar de App Engine, Cloud Run o las funciones de Cloud Run, la aplicación o función se conecta directamente a la instancia a través del Acceso a VPC sin servidores sin el proxy de autenticación de Cloud SQL.
Conéctate desde una fuente externa
Si una red externa (por ejemplo, una red local o una red de VPC) está conectada a la red de VPC a la que está conectada tu instancia de Cloud SQL, puedes usar Cloud VPN o Cloud Interconnect para conectarte a la instancia desde un cliente en la red externa.
Para permitir conexiones desde una red externa, haz lo siguiente:
- Asegúrate de que tu red de VPC esté conectada a la red externa con un túnel de Cloud VPN o un adjunto de VLAN para Interconexión dedicada o Interconexión de socio.
-
Asegúrate de que las sesiones de protocolo de puerta de enlace de frontera (BGP) en los Cloud Routers que administran los túneles de Cloud VPN y los adjuntos de Cloud Interconnect (VLAN) hayan recibido prefijos específicos (destinos) de tu red local.
Las rutas predeterminadas (destino 0.0.0.0/0) no se pueden importar a la red de VPC de Cloud SQL porque esa red tiene su propia ruta predeterminada local. Se usan las rutas locales para un destino, aunque el intercambio de tráfico de Cloud SQL esté configurado para importar rutas personalizadas desde tu red de VPC.
-
Identifica las conexiones de intercambio de tráfico que produce la conexión privada a los servicios. Según el servicio, la conexión de Private Service Connect puede
crear una o más de las siguientes conexiones de intercambio de tráfico, pero no necesariamente todas:
cloudsql-mysql-googleapis-comcloudsql-postgres-googleapis-comservicenetworking-googleapis-com
- Actualiza todas las conexiones de intercambio de tráfico para habilitar la exportación de rutas personalizadas.
- Identifica el rango asignado que usa la conexión de Private Service Connect.
- Configura el modo de anuncio personalizado de Cloud Router para el rango asignado en los Cloud Routers que administran sesiones de BGP para tus túneles de Cloud VPN o adjuntos de Cloud Interconnect (VLAN).
Conectarse desde Cloud Shell
Cloud Shell usa una máquina virtual de Compute Engine que administra Google Cloud y está fuera de tu red de VPC. Por lo tanto, no existe una ruta de conectividad entre Cloud Shell y el espacio de direcciones IP privadas de tu red de VPC.
Como resultado, Cloud Shell no es compatible con la conexión a una instancia de Cloud SQL que solo tiene una dirección IP privada.
Para conectarte a instancias de Cloud SQL desde una red externa con conectividad IP privada, consulta Conéctate a una instancia de Cloud SQL desde fuera de su VPC.
Conéctate desde direcciones IP que no sean RFC 1918
RFC 1918 especifica las direcciones IP que se asignan para usar de manera interna (es decir, dentro de una organización) y que no se enrutarán en Internet. En concreto, las siguientes:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
Las conexiones a una instancia de Cloud SQL mediante una dirección IP privada se autorizan de forma automática para los rangos de direcciones RFC 1918. De esta manera, todos los clientes privados pueden acceder a la base de datos sin pasar por el proxy.
Para conectarte desde una dirección IP que no sea RFC 1918, debes configurar la autorización de IP por instancia a fin de permitir el tráfico de rangos de direcciones IP que no sean RFC 1918.
Por ejemplo, usa un comando de gcloud como el siguiente:
gcloud sql instances patch INSTANCE_NAME \ --authorized-networks=192.88.99.0/24,11.0.0.0/24
De forma predeterminada, Cloud SQL no procesa rutas de subred de tu red de VPC que no son RFC 1918. Debes actualizar el intercambio de tráfico entre redes a Cloud SQL para exportar cualquier ruta que no sea RFC 1918.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTIONes el nombre de la conexión de intercambio de tráfico que produce la conexión de Private Service Connect entre tu red de VPC y la red del productor de servicios.VPC_NETWORK_NAMEes el nombre de tu red de VPC.PROJECT_IDes el ID del proyecto de la red de VPC. Si usas una VPC compartida, usa el ID del proyecto host.
Reemplaza lo siguiente:
Para mitigar el agotamiento de direcciones IP, puedes usar direcciones IP públicas que se usan de forma privada.
Conéctate desde direcciones IP públicas usadas de forma privada
Si deseas configurar tu instancia en un rango de direcciones IP públicas de uso privado, habilita export-subnet-routes-with-public-ip en el intercambio de tráfico entre redes entre tu red y la red de Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --export-subnet-routes-with-public-ip \ --project=PROJECT_ID
PEERING_CONNECTIONes el nombre de la conexión de intercambio de tráfico que produce la conexión de servicios privados entre tu red de VPC y la red del productor de servicios. Para conocer el nombre de la conexión de intercambio de tráfico, ve a la página Intercambio de tráfico entre redes de VPC.VPC_NETWORK_NAMEes el nombre de tu red de VPC.PROJECT_IDes el ID del proyecto de la red de VPC. Si usas una VPC compartida, usa el ID del proyecto host.
Reemplaza lo siguiente:
Conéctate a una instancia configurada con direcciones IP públicas usadas de forma privada
Si la instancia está configurada en un rango de direcciones IP públicas de uso privado y deseas conectarte a ella, habilita import-subnet-routes-with-public-ip en el intercambio de tráfico entre redes entre tu red y la red de Cloud SQL.
gcloud compute networks peerings update PEERING_CONNECTION \ --network=VPC_NETWORK_NAME \ --import-subnet-routes-with-public-ip \ --project=PROJECT_ID
Reemplaza lo siguiente:
PEERING_CONNECTIONes el nombre de la conexión de intercambio de tráfico que produce la conexión de servicios privados entre tu red de VPC y la red del productor de servicios. Para encontrar el nombre de la conexión de intercambio de tráfico, ve a la página Intercambio de tráfico entre redes de VPC.VPC_NETWORK_NAMEes el nombre de tu red de VPC.PROJECT_IDes el ID del proyecto de la red de VPC. Usa el ID del proyecto host si usas una VPC compartida.
Conéctate con un extremo de escritura
Además de una dirección IP privada, puedes usar un extremo de escritura en una cadena de conexión de SQL. Un extremo de escritura es un nombre de servicio de nombre de dominio (DNS) global que se resuelve automáticamente en la dirección IP de la instancia principal actual. Cuando usas un extremo de escritura, puedes evitar tener que realizar cambios en la conexión de la aplicación cuando se produce una falla regional.
Si se produce una conmutación por error o una conmutación de una réplica, el extremo de escritura puede ayudar a administrar las direcciones IP privadas de las instancias. Cuando esto sucede, usa el extremo de escritura para conectarte a la instancia que actúa como instancia principal.
Cómo Cloud SQL crea un extremo de escritura
Si habilitas la API de Cloud DNS para tu proyecto de Google Cloud y, luego, creas una instancia principal de la edición Cloud SQL Enterprise Plus, asciendes la réplica de la instancia o actualizas la instancia desde la edición Cloud SQL Enterprise, Cloud SQL genera un extremo de escritura automáticamente y lo asigna a la instancia.
Si la instancia principal cambia durante los procesos de conmutación por error o cambio, Cloud SQL asigna el extremo de escritura a la réplica de conmutación por error, ya que esta réplica es la nueva instancia principal.Para obtener más información, consulta Visualiza el extremo de escritura.
Asigna un extremo de escritura a una instancia
Si no habilitas la API de Cloud DNS para tu proyecto Google Cloud y, luego, creas, promueves o actualizas tu instancia, Cloud SQL no le asignará el extremo de escritura automáticamente.
Para que Cloud SQL genere un extremo de escritura y lo asigne a la instancia, consulta Genera el extremo de escritura.
Solucionar problemas
Consulta la solución de problemas a fin de obtener más información sobre problemas conocidos de conectividad y la depuración de problemas de conexión para obtener ayuda con los diagnósticos automáticos.