Conéctate a Cloud SQL para SQL Server desde Cloud Run
Obtén información para implementar una app de muestra en Cloud Run que esté conectada a una instancia de SQL Server mediante la consola de Google Cloud y una aplicación cliente.
Si suponemos que completas todos los pasos de manera oportuna, los recursos creados en esta guía de inicio rápido suelen costar menos de un dólar (USD).
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Habilita las API de Cloud necesarias para ejecutar una app de muestra de Cloud SQL en Cloud Run.
Haz clic en Habilitar las API para habilitar las API necesarias en esta guía de inicio rápido.
Esto habilita las siguientes API:
- API de Compute Engine
- API de Cloud SQL Admin
- API de Cloud Run
- API de Container Registry
- API de Cloud Build
- API de Service Networking
Haz clic en el siguiente botón para abrir Cloud Shell, que proporciona acceso de línea de comandos a tus recursos de Google Cloud directamente desde el navegador. Cloud Shell se puede usar para ejecutar los comandos de
gcloud
que se presentan en esta guía de inicio rápido.Ejecuta el siguiente comando de
gcloud
con Cloud Shell:gcloud services enable compute.googleapis.com sqladmin.googleapis.com run.googleapis.com \ containerregistry.googleapis.com cloudbuild.googleapis.com servicenetworking.googleapis.com
Este comando habilita las siguientes API:
- API de Compute Engine
- API de Cloud SQL Admin
- API de Cloud Run
- API de Container Registry
- API de Cloud Build
- API de Service Networking
Configura Cloud SQL
Crea una instancia de Cloud SQL
IP pública
Cloud Run no admite la conexión a Cloud SQL para SQL Server a través de una IP pública. En su lugar, usa una IP privada.
IP privada
Asigna un rango de direcciones IP y crea una conexión privada a fin de configurar el acceso privado a servicios para Cloud SQL.
-
En la consola de Google Cloud, ve a la página Redes de VPC.
- Selecciona la red de VPC
default
. - Selecciona la pestaña Conexión privada a servicios.
- Selecciona la pestaña Rangos de IP asignados para los servicios.
- Haz clic en Asigna rangos de IP.
- Para el Nombre del rango asignado, especifica
google-managed-services-default
. - Selecciona la opción Automático para el rango de IP y especifica la longitud del prefijo como
16
. - Haz clic en Asignar para crear un rango asignado.
- Selecciona la pestaña Conexiones privadas a servicios para la red de VPC
default
. - Haz clic en Crear una conexión para crear una conexión privada entre tu red y un productor de servicios.
- En Asignación designada, selecciona
google-managed-services-default
. - Haz clic en Conectar para crear la conexión.
Crea una instancia con una dirección IP privada y SSL habilitado
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haga clic en Crear instancia.
- Haz clic en Elegir SQL Server.
- Asegúrate de que Enterprise Plus esté seleccionada como la edición de Cloud SQL de tu instancia.
- En el campo ID de instancia, ingresa
quickstart-instance
. - En el campo Contraseña, ingresa una contraseña para el usuario de sqlserver. Guarda esta contraseña para usarla más adelante.
- En la sección Elige una región y una disponibilidad zonal, selecciona Zona única.
- Haz clic en el menú Mostrar opciones de configuración.
- Expande el nodo Configuración de la máquina.
- En la región Formas de máquinas, selecciona la forma 4 vCPU, 32 GB.
- Expande el nodo Conexiones.
- Desmarca la casilla de verificación IP pública para crear una instancia solo con una dirección IP privada.
- Selecciona la casilla de verificación IP privada.
- En el menú Red, selecciona configuración predeterminada.
- Haz clic en Crear instancia y espera a que la instancia se inicialice y se inicie.
- Haz clic en Conexiones.
- En la sección Seguridad, selecciona Solo permitir conexiones SSL para habilitar las conexiones SSL.
- En el cuadro de diálogo Solo permitir conexiones SSL, haz clic en Guardar y reiniciar y, luego, espera a que la instancia se reinicie.
Asigna un rango de direcciones IP y crea una conexión privada a fin de configurar el acceso privado a servicios para Cloud SQL.
-
Ejecuta el comando
gcloud compute addresses create
para asignar un rango de direcciones IP.gcloud compute addresses create
google-managed-services-default \ --global --purpose=VPC_PEERING --prefix-length=16 \ --description="peering range for Google" --network=default -
Ejecuta el comando
gcloud services vpc-peerings connect
para crear una conexión privada al rango de direcciones IP asignado. Reemplaza YOUR_PROJECT_ID por el ID de tu proyecto.gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \ --ranges=
google-managed-services-default --network=default \ --project=YOUR_PROJECT_ID
Crea una instancia con una dirección IP privada y SSL habilitado
-
Antes de ejecutar el comando de la siguiente manera, reemplaza DB_ROOT_PASSWORD por la contraseña del usuario de la base de datos.
- --database-version: El tipo de motor de la base de datos y la versión. Si no se especifica, se usa la configuración predeterminada de API. Consulta la documentación de las versiones de la base de datos de gcloud para ver las versiones disponibles actuales.
- --cpu: Es la cantidad de núcleos en la máquina.
- --memory: Es un número de número entero que indica cuánta memoria se debe incluir en la máquina. Se puede proporcionar una unidad de tamaño (por ejemplo, 3,072 MB o 9 GB). Si no se especifican unidades, se supone que es GB.
- --region: Es la ubicación regional de la instancia (por ejemplo, asia-east1, us-east1). Si no se especifica, el valor predeterminado es
us-central1
. Consulta la lista completa de regiones. Ejecuta el comando
gcloud sql instances patch
a fin de habilitar solo permitir conexiones SSL para la instancia.
De manera opcional, modifica los valores para los siguientes parámetros:
Ejecuta el comando gcloud
sql instances create
para crear una instancia de Cloud SQL con una dirección IP privada.
gcloud sql instances createquickstart-instance \ --database-version=SQLSERVER_2017_STANDARD \ --cpu=1 \ --memory=4GB \ --region=us-central \ --root-password=DB_ROOT_PASSWORD \ --no-assign-ip \ --network=default
gcloud sql instances patchquickstart-instance --require-ssl
Crea una base de datos
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Selecciona
quickstart-instance
. - En el menú de navegación de SQL, selecciona Bases de datos.
- Haga clic en Crear base de datos.
- En el campo Nombre de la base de datos del cuadro de diálogo Base de datos nueva, ingresa
quickstart-db
. - Haz clic en Crear.
Ejecuta el comando gcloud
sql databases create
para crear una base de datos.
gcloud sql databases createquickstart-db --instance=quickstart-instance
Implementa una app de muestra en Cloud Run
Configura una cuenta de servicio de Cloud Run
-
En la consola de Google Cloud, ve a la página IAM.
- En la cuenta de servicio llamada Cuenta de servicio predeterminada de Compute Engine, haz clic en el ícono de lápiz.
- Haz clic en AGREGAR OTRA FUNCIÓN.
- Agrega la Función llamada Cliente de Cloud SQL.
- Haz clic en Guardar.
-
Ejecuta el siguiente comando de
gcloud
para obtener una lista de las cuentas de servicio del proyecto:gcloud iam service-accounts list
- Copia el CORREO ELECTRÓNICO de la cuenta de servicio de Compute Engine.
- Ejecuta el siguiente comando para agregar la función de cliente de Cloud SQL a la cuenta de servicio de Compute Engine:
gcloud projects add-iam-policy-binding
YOUR_PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL " \ --role="roles/cloudsql.client"
Configura una app de muestra de Cloud SQL
Con una instancia de Cloud SQL, una base de datos y una cuenta de servicio con permisos de cliente, ahora puedes configurar una aplicación de muestra para conectarte a tu instancia de Cloud SQL.
IP pública
Cloud Run no admite la conexión a Cloud SQL para SQL Server a través de una IP pública. En su lugar, usa una IP privada.IP privada
En el caso de las rutas de IP privadas, tu aplicación se conecta directamente a tu instancia a través del Acceso a VPC sin servidores. Este método usa un socket TCP para conectarse directamente a la instancia de Cloud SQL sin usar el proxy de Cloud SQL Auth.Crea y descarga certificados del servidor SSL
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haz clic en
quickstart-instance
para ver la página Descripción general. - Haz clic en la pestaña Conexiones.
- En la sección Seguridad, haz clic en Descargar certificados para descargar el certificado del servidor SSL.
Crea una conexión de VPC sin servidores para conexiones a la instancia a través de IP privada
-
En la consola de Google Cloud, ve a la página Acceso a VPC sin servidores - Crear conector.
- Ingresa
quickstart-connector
en el campo Nombre. - Selecciona configuración predeterminada en el menú desplegable Red.
- Selecciona Rango de IP personalizado en el menú desplegable Subred.
- Ingresa
10.8.0.0
en la casilla de entrada Rango de IP. - Haz clic en Crear.
Compila una app de muestra con un certificado de servidor SSL
-
En el editor de Cloud Shell, abre el código fuente de la app de muestra.
Abrir Cloud Shell Editor - En el cuadro de diálogo Abrir en Cloud Shell, haz clic en Confirmar para descargar el código de la aplicación de muestra y abrir el directorio de la aplicación de muestra en el editor de Cloud Shell.
-
Sube el archivo del certificado de servidor SSL a la carpeta certs.
- Haz clic con el botón derecho en la carpeta certs en el editor de Cloud Shell y selecciona Subir archivos.
- Selecciona el siguiente archivo en tu máquina local:
server-ca.pem
. - Con el archivo del certificado del servidor SSL seleccionado, haz clic en Abrir para completar el proceso de carga del archivo al editor de Cloud Shell.
-
Ejecuta el siguiente comando en Cloud Shell para compilar un contenedor de Docker y publicarlo en Container Registry.
Reemplaza YOUR_PROJECT_ID por el ID del proyecto.
gcloud builds submit --tag gcr.io/
YOUR_PROJECT_ID /run-sql
Crea y descarga certificados del servidor SSL
Para los usuarios de Java, el conector ya proporciona una conexión segura, por lo que no es necesario crear y descargar el certificado del servidor SSL.
Crea una conexión de VPC sin servidores para conexiones a la instancia a través de IP privada
-
En la consola de Google Cloud, ve a la página Acceso a VPC sin servidores - Crear conector.
- Ingresa
quickstart-connector
en el campo Nombre. - Selecciona configuración predeterminada en el menú desplegable Red.
- Selecciona Rango de IP personalizado en el menú desplegable Subred.
- Ingresa
10.8.0.0
en la casilla de entrada Rango de IP. - Haz clic en Crear.
App de ejemplo de compilación
-
En el editor de Cloud Shell, abre el código fuente de la app de muestra.
Abrir Cloud Shell Editor - En el cuadro de diálogo Abrir en Cloud Shell, haz clic en Confirmar para descargar el código de la aplicación de muestra y abrir el directorio de la aplicación de muestra en el editor de Cloud Shell.
-
Ejecuta el siguiente comando en Cloud Shell para compilar un contenedor de Docker y publicarlo en Container Registry.
Reemplaza YOUR_PROJECT_ID por el ID del proyecto.
mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=gcr.io/
YOUR_PROJECT_ID /run-sql -DskipTests
Crea y descarga certificados del servidor SSL
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Haz clic en
quickstart-instance
para ver la página Descripción general. - Haz clic en la pestaña Conexiones.
- En la sección Seguridad, haz clic en Descargar certificados para descargar el certificado del servidor SSL.
Crea una conexión de VPC sin servidores para conexiones a la instancia a través de IP privada
-
En la consola de Google Cloud, ve a la página Acceso a VPC sin servidores - Crear conector.
- Ingresa
quickstart-connector
en el campo Nombre. - Selecciona configuración predeterminada en el menú desplegable Red.
- Selecciona Rango de IP personalizado en el menú desplegable Subred.
- Ingresa
10.8.0.0
en la casilla de entrada Rango de IP. - Haz clic en Crear.
Compila una app de muestra con un certificado de servidor SSL
-
En el editor de Cloud Shell, abre el código fuente de la app de muestra.
Abrir Cloud Shell Editor - En el cuadro de diálogo Abrir en Cloud Shell, haz clic en Confirmar para descargar el código de la aplicación de muestra y abrir el directorio de la aplicación de muestra en el editor de Cloud Shell.
-
Sube el archivo del certificado de servidor SSL a la carpeta certs.
- Haz clic con el botón derecho en la carpeta certs en el editor de Cloud Shell y selecciona Subir archivos
- Selecciona el siguiente archivo en tu máquina local:
server-ca.pem
. - Con el archivo del certificado del servidor SSL seleccionado, haz clic en Abrir para completar el proceso de carga del archivo al editor de Cloud Shell.
-
Ejecuta el siguiente comando en Cloud Shell para compilar un contenedor de Docker y publicarlo en Container Registry.
Reemplaza YOUR_PROJECT_ID por el ID del proyecto.
gcloud builds submit --tag gcr.io/
YOUR_PROJECT_ID /run-sql
Implementa la app de ejemplo
Los pasos para implementar la muestra en Cloud Run dependen del tipo de dirección IP que asignaste a tu instancia de Cloud SQL.
IP pública
Cloud Run no admite la conexión a Cloud SQL para SQL Server a través de una IP pública. En su lugar, usa una IP privada.IP privada
-
En la consola de Google Cloud, ve a la página Cloud Run.
-
Haz clic en Crear contenedor y selecciona Servicio para mostrar el formulario Crear servicio.
- Conserva la opción de implementar desde una imagen de contenedor existente y haz clic en Seleccionar para especificar la imagen de contenedor
gcr.io/YOUR_PROJECT_ID/run-sql
que creaste en el paso anterior. - Ingresa
quickstart-service
en Nombre del servicio. - En la sección Autenticación, selecciona la opción
Allow unauthenticated invocations
. Si no tienes permisos (rol de administrador de Cloud Run) para seleccionar esta opción, el servicio se implementará y requerirá autenticación. - Expande la sección Contenedor, variables y secretos, Conexiones, Seguridad.
- Para crear las siguientes variables de entorno, haz clic en Agregar variable en Variables de entorno. Establece los valores para las variables de entorno de la siguiente manera:
DB_NAME
: Configurado comoquickstart-db
.DB_USER
: configurado comosqlserver
DB_PASS
: configurado como la contraseña del usuario desqlserver
que creaste en Crea una instancia de Cloud SQL.INSTANCE_CONNECTION_NAME
: configurado como el Nombre de conexión de tu instancia que aparece en la página Instancias de Cloud SQL en la consola de Google Cloud.DB_PORT
: Configurado como1433
.INSTANCE_HOST
: Establece la dirección IP privada de tu instancia como se menciona en la página Descripción general de la instancia de Cloud SQL.DB_ROOT_CERT
: configurado comocerts/server-ca.pem
PRIVATE_IP
: configurado comoTRUE
-
Habilita la conexión a Cloud SQL:
- Haz clic en Conexiones.
- Haz clic en Agregar conexión en la sección Conexiones de Cloud SQL.
- Selecciona la instancia de Cloud SQL
quickstart-instance
que creaste antes. - Selecciona
default: Serverless VPC Access Connector "quickstart-connector"
del menú desplegable Red de VPC. - Selecciona la opción Enrutar todo el tráfico por medio del conector de VPC.
-
Haz clic en Crear para terminar de crear el servicio de Cloud Run.
- Después de implementar el servicio de Cloud Run, la página Detalles del servicio muestra la URL del servicio en ejecución en la parte superior de la página.
Haz clic en el vínculo URL para ver la aplicación de muestra implementada en Cloud Run conectada a Cloud SQL.
Antes de ejecutar el siguiente comando, realiza los siguientes reemplazos:
- YOUR_PROJECT_ID por el ID del proyecto
-
INSTANCE_CONNECTION_NAME por el Nombre de conexión de tu instancia que aparece en la página Instancias de Cloud SQL en la consola de Google Cloud.
-
DB_PASS por la contraseña del usuario de
sqlserver
que creaste en Crea una instancia de Cloud SQL - INSTANCE_HOST por la dirección IP privada de la instancia Ve a la página Descripción general de la instancia de Cloud SQL en la que aparece la dirección IP privada de la instancia.
-
Cuando aparezca un mensaje de confirmación que indique que el servicio de Cloud Run se implementó, haz clic en el vínculo URL de servicio en el mensaje para ver la app de muestra en Cloud Run conectada a Cloud SQL.
Ejecuta el comando gcloud run deploy
de la siguiente manera para crear el servicio de Cloud Run:
gcloud run deploy run-sql --image gcr.io/YOUR_PROJECT_ID /run-sql \ --add-cloudsql-instancesINSTANCE_CONNECTION_NAME \ --vpc-connector="quickstart-connector " --vpc-egress=all-traffic \ --set-env-vars DB_NAME="quickstart-db " \ --set-env-vars DB_USER="sqlserver " \ --set-env-vars DB_PASS="DB_PASS " \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME " \ --set-env-vars DB_PORT="1433" \ --set-env-vars INSTANCE_HOST="INSTANCE_HOST " \ --set-env-vars DB_ROOT_CERT="certs/server-ca.pem" \ --set-env-vars PRIVATE_IP="TRUE"
Los usuarios de Java deben ejecutar el comando gcloud run deploy
sin las marcas INSTANCE_HOST, DB_ROOT_CERT y PRIVATE_IP --set-env-vars, de la siguiente manera, para crear el servicio de Cloud Run debido a que el conector de Java ya proporciona una conexión segura:
gcloud run deploy run-sql --image gcr.io/YOUR_PROJECT_ID /run-sql \ --add-cloudsql-instancesINSTANCE_CONNECTION_NAME \ --vpc-connector="quickstart-connector " --vpc-egress=all-traffic \ --set-env-vars DB_NAME="quickstart-db " \ --set-env-vars DB_USER="sqlserver " \ --set-env-vars DB_PASS="DB_PASS " \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME " \ --set-env-vars DB_PORT="1433"
Ingresa la opción numérica proporcionada para us-central1
cuando se te solicite especificar una región.
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
-
En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.
- Selecciona la instancia
quickstart-instance
para abrir la página de detalles de la instancia. - En la barra de íconos en la parte superior de la página, haz clic en Borrar.
- En el cuadro de diálogo Borrar instancia, escribe
quickstart-instance
y, luego, haz clic en Borrar. -
En la consola de Google Cloud, ve a la página Cloud Run.
- Selecciona la casilla de verificación junto al nombre del servicio
quickstart-service
. - Haz clic en Borrar en la parte superior de la página de Cloud Run.
Pasos opcionales de limpieza
Si no usas la función de cliente de Cloud SQL que asignaste a la cuenta de servicio de Compute Engine, puedes quitarla.
-
En la consola de Google Cloud, ve a la página IAM.
- Haz clic en el ícono de edición (que tiene forma de lápiz) en la cuenta de IAM llamada Cuenta de servicio predeterminada de Compute Engine.
- Borra la función cliente de Cloud SQL.
- Haz clic en Guardar.
Si no usas las API que se habilitaron como parte de esta guía de inicio rápido, puedes inhabilitarlas.
- API que se habilitaron en esta guía de inicio rápido:
- API de Compute Engine
- API de Cloud SQL Admin
- API de Cloud Run
- API de Container Registry
- API de Cloud Build
En la consola de Google Cloud, ve a la página API.
Selecciona la API que quieras inhabilitar y, luego, haz clic en el botón Inhabilitar API.
¿Qué sigue?
En función de tus necesidades, puedes obtener más información para crear instancias de Cloud SQL.También puedes aprender a crear usuarios de SQL Server y bases de datos para la instancia de Cloud SQL.
Si deseas obtener más información sobre los precios, consulta Precios de Cloud SQL para SQL Server.
Conoce más sobre:
- La configuración de la instancia de Cloud SQL con una dirección IP pública
- La configuración de la instancia de Cloud SQL con una dirección IP privada
Además, puedes obtener información sobre la conexión a una instancia de Cloud SQL desde otras aplicaciones de Google Cloud: