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 necesarios Google Cloud 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 completes las tareas que se describen en este documento, podrás borrar los recursos que creaste para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.
Antes de comenzar
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Datastore API, Cloud Storage API, Pub/Sub API APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Instala Python,
pipyvirtualenven tu sistema. Para obtener instrucciones, consulta Configura un entorno de desarrollo de Python para Google Cloud.
Crea un bucket 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 bucket de Cloud Storage, en el que YOUR_BUCKET_NAME represente el nombre del bucket:
gcloud storage buckets create gs://YOUR_BUCKET_NAME
Para ver las imágenes que se subieron en la aplicación Bookshelf, configura la política de Identity and Access Management (IAM) del bucket para otorgar la función
legacyObjectReaderaallUsers:gcloud storage buckets add-iam-policy-binding gs://YOUR_BUCKET_NAME --member=allUsers --role=roles/storage.legacyObjectReader
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 stepsVe al directorio de muestra:
cd getting-started-python/7-gce
Configura la app
Abre
config.pypara edición.Configura el valor de
PROJECT_IDcomo el ID de tu proyecto.Establece la variable
CLOUD_STORAGE_BUCKETcomo 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.txtWindows
virtualenv -p python3 env env\scripts\activate pip install -r requirements.txtEjecute la aplicación:
python main.pyEn el navegador web, ingresa la siguiente dirección:
Para detener el servidor web local, presiona Control+C. Si deseas salir del entorno virtual, ingresa . Si deseas salir del entorno virtual, ingresa deactivate.
Implementa la app de muestra
Enviar tu código a un repositorio
Puedes ingresar 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 que está disponible para las instancias de Compute Engine. Luego, tus instancias obtienen la versión más reciente del código de tu aplicación durante el inicio. Usar un repositorio de Git es conveniente porque actualizar tu aplicación no requiere configurar imágenes o instancias nuevas; solo debes reiniciar una instancia existente o crear una.
Usa
git config --globalpara configurar tu identidad, si es la primera vez que utilizas Git.En la Google Cloud consola, crea un repositorio:
Luego, envía el código de tu aplicación al repositorio de tu proyecto, en el que
[YOUR_PROJECT_ID]es tu ID del proyecto y[YOUR_REPO]es el nombre de tu 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_managerCrea la implementación:
gcloud deployment-manager deployments create my-deployment --config config.yamlVe una lista de todas las implementaciones:
gcloud deployment-manager deployments listObté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 --globalCuando al menos una de tus instancias muestre el estado
HEALTHY, obtén la dirección IP de reenvío del balanceador de cargas:gcloud compute forwarding-rules list --globalLa 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 la creación de
archivos de configuración de Deployment Manager, consulta
Crea una configuración.
Configura el esquema de la plantilla de implementación
Observa 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, balanceado por cargas y con ajuste de escala automático. Para obtener una descripción completa de los recursos creados, consulta los comentarios en la plantilla y revisa el instructivo de Bookshelf en Compute Engine.
Ten en cuenta que Deployment Manager permite definir recursos de manera declarativa, pero la mayor parte de la configuración de un recurso es definida por su API. Por ejemplo, la mayoría de las opciones de configuración del recurso Plantilla de instancias se encuentran en la definición del recurso Plantilla de instancias en la documentación de referencia para la API de Compute Engine.
La plantilla se escribe con el Jinja lenguaje de plantillas. Cuando escribes plantillas de Deployment Manager, puedes usar Jinja o Python. Jinja tiene la ventaja de ser más declarativo, lo que puede ser más legible y fácil de entender que Python. Para algunas implementaciones complejas, la expresividad completa de Python puede simplificar las cosas. En este caso, Jinja es suficiente para crear los recursos necesarios.
En una plantilla, se establecen automáticamente ciertas variables de entorno, y puedes acceder a ellas con 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:
La plantilla 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 de sangría de Jinja aplica la sangría al contenido de forma 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 instancias 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, sigue estos pasos:
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que tú 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 tu implementación
Para borrar tu implementación, ingresa el siguiente comando. Este comando borra el balanceador de cargas y cualquier instancia de Compute Engine asociada con tu 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 y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.
Explora otros Google Cloud servicios.