En este instructivo se muestra cómo comenzar a usar Compute Engine. Si deseas seguir este instructivo, implementa una aplicación Hello World para Python en Compute Engine. Si deseas obtener ayuda para comenzar a usar App Engine, consulta el entorno estándar de App Engine.
Objetivos
- Usa Cloud Shell para descargar y, luego, implementar una aplicación de muestra Hello World.
- Implementar una app Hello World de muestra en una sola instancia de Compute Engine
Costos
En este instructivo, se usan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud sean aptos para obtener una prueba gratuita.
Antes de comenzar
- Accede a tu Cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.
- Habilita la API Compute Engine.
-
En Google Cloud Console, abre la aplicación en Cloud Shell.
Cloud Shell brinda acceso de línea de comandos a tus recursos en la nube directamente desde el navegador. Abre Cloud Shell en tu navegador y haz clic en Continuar para descargar el código de muestra y pasar al directorio de la aplicación.
- En Cloud Shell, configura la herramienta de
gcloud
para que use tu proyecto de Google Cloud nuevo de la manera siguiente:# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Ejecuta la app en Cloud Shell
En Cloud Shell, instala las dependencias de la app con
pip
:pip3 install -r requirements.txt --user
Instala el servidor HTTP de Gunicorn:
pip3 install gunicorn --user
Ejecuta el servidor HTTP de Gunicorn:
~/.local/bin/gunicorn -b :8080 main:app
En Cloud Shell, haz clic en Vista previa web y selecciona Obtener vista previa en el puerto 8080. Se abrirá una ventana nueva con tu aplicación en ejecución.
Para detener el servidor web local, presiona Control+C.
Implementar en una instancia única
En esta sección, se explica cómo ejecutar una instancia única de tu aplicación en Compute Engine.
En Cloud Shell, puedes realizar una implementación en la máquina virtual (VM) de una sola instancia de Compute Engine que ejecuta tu aplicación.
Usa una secuencia de comandos de inicio para inicializar una instancia
Necesitas una forma de indicar a tu instancia que descargue y ejecute tu código. Una instancia puede tener una secuencia de comandos de inicio que se ejecuta cada vez que se inicia o reinicia la instancia.
La secuencia de comandos de inicio realiza las siguientes tareas:
Instala Python 3 y PIP.
Instala el agente de Cloud Logging. Este agente recopila registros de syslog automáticamente.
Instala Supervisor para ejecutar la app como un daemon.
Clona el código fuente de la app desde Cloud Source Repositories y, luego, instala dependencias.
Configura Supervisor para ejecutar la app. Supervisor se asegura de que la app se reinicie si se cierra de forma inesperada o si la cierra un administrador o algún otro proceso. También envía
stdout
ystderr
de la app a syslog para que los recopile el agente de Logging.
Crea y configura una instancia de Compute Engine
Crea una instancia de Compute Engine:
Linux/macOS
Windows
gcloud compute instances create my-app-instance ^ --image-family=debian-9 ^ --image-project=debian-cloud ^ --machine-type=g1-small ^ --scopes userinfo-email,cloud-platform ^ --metadata-from-file startup-script=gce/startup-script.sh ^ --zone us-central1-f ^ --tags http-server
Reemplaza la zona por una zona de desarrollo, por ejemplo,
us-central1-a
. Para obtener más información sobre regiones y zonas, consulta Geografía y regiones.Esto permite crear una instancia nueva para acceder a los servicios de Google Cloud y ejecutar tu secuencia de comandos de inicio. El nombre de la instancia es
my-app-instance
.Revisa el progreso de la creación de la instancia con el comando siguiente:
gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
Reemplaza
YOUR_ZONE
por la zona en la que implementaste tu instancia.Cuando se complete la secuencia de comandos de inicio, verás el mensaje siguiente:
startup-script: INFO Finished running startup scripts.
Crea una regla de firewall para permitir el tráfico hacia tu instancia de la manera siguiente:
gcloud compute firewall-rules create default-allow-http-8080 \ --allow tcp:8080 \ --source-ranges 0.0.0.0/0 \ --target-tags http-server \ --description "Allow port 8080 access to http-server"
Obtén la dirección IP externa de la instancia con el comando siguiente:
gcloud compute instances list
Para ver la aplicación en ejecución, ingresa la URL siguiente en el navegador:
http://YOUR_INSTANCE_IP:8080
Reemplaza
YOUR_INSTANCE_IP
por la dirección IP externa de la instancia.
Administra y supervisa una instancia
Puedes usar Cloud Console para supervisar y administrar tu instancia.
- En Cloud Console, ve a la página Instancias de VM.
- En la lista de instancias de máquinas virtuales, haz clic en SSH en la fila de la instancia a la que deseas conectarte.
- Para ver todos los registros generados por tus recursos de Compute Engine, ve a la página Visor de registros.
Ir al Visor de registros
Cloud Logging se configura de forma automática para recopilar los registros de diversos servicios comunes, incluido
syslog
.
Realice una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
- En Cloud Console, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Borra los recursos individuales
gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all gcloud compute firewall-rules delete default-allow-http-8080