En este instructivo, se muestra cómo implementar la app de muestra de Bookshelf de Python con Cloud Deployment Manager.
Deployment Manager te permite crear los recursos de Google Cloud necesarios para una implementación en un solo paso, a través de un proceso declarativo y repetible. Con Deployment Manager, puedes actualizar tus implementaciones, realizar un seguimiento de tus modificaciones a lo largo del tiempo, crear plantillas con Jinja o Python y modificar tus plantillas para que las implementaciones similares la compartan.
Objetivos
- Clonar y configurar la app de muestra de Bookshelf
- Crear configuraciones y plantillas de Deployment Manager
- Crear implementaciones de Deployment Manager
- Implementar la app de muestra de Bookshelf con Deployment Manager
Costos
En este documento, usarás 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.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
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.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Instala Python,
pip
yvirtualenv
en tu sistema. Para obtener instrucciones, consulta Configurar un entorno de desarrollo de Python para Google Cloud.
Crea un depósito de Cloud Storage
En las instrucciones siguientes, se detalla cómo crear un bucket de Cloud Storage. Los depósitos son los contenedores básicos que conservan tus datos en Cloud Storage.
En la ventana de la terminal, crea un depósito de Cloud Storage, en el que YOUR_BUCKET_NAME represente el nombre del depósito:
gsutil mb gs://YOUR_BUCKET_NAME
Para ver las imágenes que se subieron en la aplicación Bookshelf, configura la Lista de control de acceso (LCA) predeterminada del depósito como
public-read
.gsutil defacl set public-read gs://YOUR_BUCKET_NAME
Clona la app de muestra
La app de muestra está disponible en GitHub en GoogleCloudPlatform/getting-started-python
.
Clona el repositorio:
git clone https://github.com/GoogleCloudPlatform/getting-started-python.git -b steps
Ve al directorio de muestra:
cd getting-started-python/7-gce
Configura la app
Abre
config.py
para edición.Configura el valor de
PROJECT_ID
como el ID de tu proyecto.Establece la variable
CLOUD_STORAGE_BUCKET
como el nombre de tu bucket de Cloud Storage.
Guarda y cierra
config.py
.
Ejecuta la app en tu computadora local
Crea un entorno aislado de Python y, luego, instala las dependencias:
Linux/macOS
virtualenv -p python3 env source env/bin/activate pip install -r requirements.txt
Windows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txt
Ejecute la aplicación:
python main.py
En el navegador web, ingresa la siguiente dirección:
Para detener el servidor web local, presiona Control+C. Si deseas salir del entorno virtual, ingresa deactivate
.
Implementa la app de muestra
Enviar tu código a un repositorio
Puedes obtener tu código en una instancia de Compute Engine en ejecución de varias maneras. Una manera es usar Cloud Source Repositories. Cada proyecto incluye un repositorio de Git disponible para las instancias de Compute Engine. Luego, durante el inicio, tus instancias obtendrán la versión más reciente del código de tu app. Usar un repositorio de Git es conveniente porque la actualización de tu app no requiere configurar imágenes o instancias nuevas; solo debes reiniciar una instancia existente o crear una.
Por primera vez que usas Git, usa
git config --global
para configurar tu identidad.En Cloud Console, crea un repositorio:
Luego, envía el código de tu app al repositorio de tu proyecto, en el que
[YOUR_PROJECT_ID]
es el ID del proyecto y[YOUR_REPO]
es el nombre del repositorio:git commit -am "Updating configuration" git config credential.helper gcloud.sh git remote add cloud https://source.developers.google.com/p/[YOUR_PROJECT_ID]/r/[YOUR_REPO] git push cloud master
Crea la implementación:
Después de confirmar la configuración y subir tu código a Cloud Source Repository, puedes usar Deployment Manager para crear la implementación:
Ve al directorio
deployment_manager
:cd getting-started-python/7-gce/gce/deployment_manager
Crea la implementación:
gcloud deployment-manager deployments create my-deployment --config config.yaml
Ve una lista de todas las implementaciones:
gcloud deployment-manager deployments list
Obtén una descripción de la implementación y los recursos que creó:
gcloud deployment-manager deployments describe my-deployment
Ver tu aplicación
Después de crear la regla de reenvío, tu configuración puede tardar varios minutos en propagarse y el tráfico puede tardar el mismo tiempo en dirigirse a tus instancias.
Para verificar el progreso, haz lo siguiente:
gcloud compute backend-services get-health bookshelf-my-deployment-frontend --global
Cuando al menos una de tus instancias informe el estado
HEALTHY
, obtén la dirección IP de reenvío para el balanceador de cargas:gcloud compute forwarding-rules list --global
La dirección IP de tus reglas de reenvío está en la columna
IP_ADDRESS
.En tu navegador, ingresa la dirección IP de la lista.
Tu app ya se ejecuta en Google Cloud.
Comprende el código
Configura la implementación
Puedes ver cómo se configura la implementación en config.yaml
:
El archivo de configuración importa el archivo de plantilla como un recurso y lo usa para definir un recurso llamado bookshelf
. La plantilla toma varias propiedades como parámetros. Para obtener más información sobre cómo crear archivos de configuración de Deployment Manager, consulta Cómo crear una configuración.
Configura el esquema de la plantilla de implementación
Mira el archivo de esquema bookshelf.jinja.schema
, que define y documenta los parámetros que se espera que la implementación proporcione en su archivo de configuración. Para obtener más información sobre los esquemas de configuración, consulta Usa esquemas.
Configura la plantilla de implementación
La plantilla define varios recursos necesarios para crear un grupo de instancias administrado y con ajuste de escala automático. Para obtener una descripción completa de los recursos creados, consulta los comentarios de la plantilla y revisa el instructivo de Bookshelf en Compute Engine.
Ten en cuenta que Deployment Manager proporciona una forma de definir recursos de forma declarativa, pero la mayor parte de la configuración de un recurso determinado se define mediante su API. Por ejemplo, la mayoría de las opciones de configuración para el recurso de plantilla de instancias se encuentran en la definición de recurso de plantilla de instancias en la documentación de referencia de la API de Compute Engine.
La plantilla se escribe con el lenguaje de plantillas de Jinja. Cuando escribes plantillas de Deployment Manager, puedes usar Jinja o Python. Jinja tiene la ventaja de ser más declarativo, que puede ser más legible y fácil de entender que Python. Para algunas implementaciones complejas, la expresividad completa de Python podría simplificar las cosas. En este caso, Jinja es suficiente para crear los recursos necesarios.
En una plantilla, ciertas variables de entorno se configuran automáticamente, y puedes acceder a ellas mediante el diccionario env
. En este caso, se hace referencia al nombre de la implementación como un nombre que se volverá a usar cuando se asignen nombres a los recursos que se crean. Para obtener más información sobre las variables de entorno disponibles, consulta Usa variables de entorno en la documentación de Deployment Manager:
En la plantilla, se usa la misma secuencia de comandos de inicio que se usa en el instructivo de Compute Engine. El contenido de la secuencia de comandos se inserta en la plantilla y la directiva sobre la sangría de Jinja aplica la sangría correcta:
En una plantilla de Jinja de Deployment Manager, es posible hacer referencia a un recurso creado en otra sección de la plantilla. En el siguiente ejemplo, el servicio de backend usa la referencia del grupo de instancia administrado para obtener el grupo de instancias al que debería apuntar:
Las propiedades especificadas en config.yaml
se pueden usar en la plantilla:
Limpia
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
La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.
Para borrar el proyecto, haga lo siguiente:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Borra tu implementación
Para borrar tu implementación, ingresa el siguiente comando. Este comando borra el balanceador de cargas y las instancias de Compute Engine que estén asociadas con la implementación:
gcloud deployment-manager deployments delete my-deployment
¿Qué sigue?
Obtén más información sobre cómo definir plantillas del administrador de implementaciones.
Aprende a ejecutar la aplicación de muestra de Bookshelf para PHP en Google Kubernetes Engine.
Aprende a ejecutar la app de muestra de Bookshelf para Python en el entorno flexible de App Engine.
Explora arquitecturas de referencia, diagramas, instructivos y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.
Explora otros servicios de Google Cloud.