Solución Jump Start: aplicación web dinámica con Python y JavaScript,Solución Jump Start: aplicación web dinámica con Python y JavaScript,Solución Jump Start: aplicación web dinámica con Python y JavaScript,Solución Jump Start: aplicación web dinámica con Python y JavaScript

Esta guía le ayuda a comprender, implementar y utilizar la aplicación web dinámica con Python y JavaScript Jump Start Solution. Esta solución demuestra cómo crear y ejecutar sitios web dinámicos en Google Cloud.

La implementación y administración de esta aplicación sirve como ejemplo de implementación en el mundo real de la creación de una aplicación web dinámica con muchas de las herramientas y productos que puede usar para aplicaciones sin servidor. Puede implementar esta solución si desea obtener información sobre lo siguiente:

  • Aplicación del marco REST de Django (DRF)
  • Aplicación de escaparate
  • Sitio web respaldado por bases de datos

Esta solución implementa la aplicación Avocano . Se trata de una tienda falsa, donde los usuarios pueden intentar comprar un artículo. Sin embargo, si un usuario agrega un artículo a su carrito, la tienda revela que es falso (Avoca, ¡no!). Aunque los usuarios en realidad no pueden comprar un aguacate, la aplicación ilustra la gestión de inventario al disminuir en uno la cantidad de producto disponible.

Avocano muestra la combinación de una API basada en Cloud Run, una base de datos Cloud SQL para PostgreSQL y una interfaz Firebase.

Consulte el código fuente de la aplicación Avocano .

Objetivos

Esta guía de solución le ayudará a aprender a utilizar Google Cloud para realizar las siguientes tareas:

  • Implementar una aplicación web de acceso público
    • Conectar una aplicación a un Google Cloud base de datos siguiente Google CloudPrácticas de seguridad recomendadas por:
      • Usar Secret Manager para almacenar contraseñas, claves y certificados.
      • Otorgar solo los permisos de IAM necesarios para realizar la tarea. Esto también se conoce como aplicación del principio de privilegio mínimo.
    • Implementar y operar los servicios backend.
  • Personaliza tu aplicación
    • Realice cambios de contenido o modifique la aplicación para agregar una función.
    • Compile y vuelva a implementar de forma segura.

Productos utilizados

El siguiente es un resumen de la Google Cloud Productos que utiliza esta solución:

  • Cloud Run : un servicio totalmente administrado que le permite crear e implementar aplicaciones en contenedores sin servidor. Google Cloud maneja el escalado y otras tareas de infraestructura para que usted pueda concentrarse en la lógica empresarial de su código.
    • Jobs : Procesamiento de tareas basado en contenedores.
  • Cloud Build : un servicio que le permite importar código fuente desde repositorios o espacios de Cloud Storage, ejecutar una compilación y producir artefactos como contenedores Docker o archivos Java.
  • Cloud SQL para PostgreSQL : una base de datos de PostgreSQL basada en la nube que se administra completamente en el Google Cloudinfraestructura.
  • Secret Manager : un servicio que le permite almacenar, administrar y acceder a secretos como blobs binarios o cadenas de texto. Puede utilizar Secret Manager para almacenar contraseñas de bases de datos, claves API o certificados TLS que necesita una aplicación en tiempo de ejecución.
  • Almacenamiento en la nube : un servicio listo para la empresa que proporciona almacenamiento de objetos sin límites y de bajo costo para diversos tipos de datos. Los datos son accesibles desde dentro y fuera deGoogle Cloud y se replica de forma georredundante.
  • Firebase : una plataforma de desarrollo que le permite crear, lanzar y monitorear aplicaciones para iOS, Android y la web.

Arquitectura

El siguiente diagrama muestra la arquitectura de la solución:

Aplicación web dinámica usando el diagrama de arquitectura Django.

Componentes y configuración

La arquitectura incluye los siguientes componentes:

  1. El cliente web está alojado en Firebase Hosting.
  2. El cliente web llama a un backend de API escrito en Python que se ejecuta como un servicio en Cloud Run.
  3. La configuración y otros secretos de la aplicación Python se almacenan en Secret Manager.
  4. Cloud SQL para PostgreSQL se utiliza como backend de base de datos relacional para la aplicación Python.
  5. Los activos estáticos para la aplicación y las imágenes del contenedor se almacenan en Cloud Storage.

Costo

Para una estimación del costo de la Google Cloud recursos que utiliza la solución de aplicación web dinámica, consulte la estimación precalculada en la Google Cloud Calculadora de precios .

Utilice la estimación como punto de partida para calcular el costo de su implementación. Puede modificar la estimación para reflejar cualquier cambio de configuración que planee realizar para los recursos que se utilizan en la solución.

La estimación precalculada se basa en supuestos para ciertos factores, incluidos los siguientes:

  • El Google Cloud Lugares donde se despliegan los recursos.
  • La cantidad de tiempo que se utilizan los recursos.

Antes de comenzar

Para implementar esta solución, primero necesita un Google Cloud proyecto y algunos permisos de IAM.

Crea o elige un Google Cloud proyecto

Cuando implementas la solución, eliges el Google Cloud proyecto donde se despliegan los recursos. Puede crear un nuevo proyecto o utilizar un proyecto existente para la implementación.

Si desea crear un nuevo proyecto, hágalo antes de comenzar la implementación. El uso de un nuevo proyecto puede ayudar a evitar conflictos con recursos previamente aprovisionados, como los recursos que se utilizan para cargas de trabajo de producción.

Para crear un proyecto, complete los siguientes pasos:

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

Obtenga los permisos de IAM necesarios

Para iniciar el proceso de implementación, necesita los permisos de Administración de acceso e identidad (IAM) que se enumeran en la siguiente tabla.

Si creó un nuevo proyecto para esta solución, entonces tiene el rol básico de roles/owner en ese proyecto y tiene todos los permisos necesarios. Si no tiene los roles/owner , solicite a su administrador que le otorgue estos permisos (o los roles que incluyen estos permisos).

Se requiere permiso de IAM Rol predefinido que incluye los permisos necesarios

serviceusage.services.enable

Administrador de uso del servicio
( roles/serviceusage.serviceUsageAdmin )

iam.serviceAccounts.create

Administrador de cuenta de servicio
( roles/iam.serviceAccountAdmin )

resourcemanager.projects.setIamPolicy

Administrador de IAM del proyecto
( roles/resourcemanager.projectIamAdmin )
config.deployments.create
config.deployments.list
Administrador del administrador de infraestructura en la nube
( roles/config.admin )
iam.serviceAccount.actAs Usuario de cuenta de servicio
( roles/iam.serviceAccountUser )

Acerca de los permisos temporales de cuentas de servicio

Si inicia el proceso de implementación a través de la consola, Google crea una cuenta de servicio para implementar la solución en su nombre (y eliminar la implementación más adelante, si así lo desea). A esta cuenta de servicio se le asignan temporalmente ciertos permisos de IAM; es decir, los permisos se revocan automáticamente una vez completadas las operaciones de implementación y eliminación de la solución. Google recomienda que después de eliminar la implementación, elimine la cuenta de servicio, como se describe más adelante en esta guía.

Ver los roles asignados a la cuenta de servicio

Estos roles se enumeran aquí en caso de que un administrador de suGoogle Cloud proyecto u organización necesita esta información.

  • roles/cloudsql.admin
  • roles/cloudsql.admin
  • roles/firebasehosting.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/run.admin
  • roles/secretmanager.admin
  • roles/storage.admin
  • roles/compute.networkAdmin
  • roles/compute.admin

Implementar la solución

Para ayudarle a implementar esta solución con el mínimo esfuerzo, se proporciona una configuración de Terraform en GitHub. La configuración de Terraform define todos losGoogle Cloud recursos que se requieren para la solución.

Puede implementar la solución mediante uno de los siguientes métodos:

  • A través de la consola : utilice este método si desea probar la solución con la configuración predeterminada y ver cómo funciona. Cloud Build implementa todos los recursos necesarios para la solución. Cuando ya no necesite la solución implementada, puede eliminarla a través de la consola. Es posible que sea necesario eliminar por separado todos los recursos que cree después de implementar la solución.

    Para utilizar este método de implementación, siga las instrucciones en Implementación a través de la consola .

  • Uso de Terraform CLI : utilice este método si desea personalizar la solución o si desea automatizar el aprovisionamiento y la administración de los recursos mediante el enfoque de infraestructura como código (IaC). Descargue la configuración de Terraform desde GitHub,, opcionalmente, personalice el código según sea necesario y luego implemente la solución mediante la CLI de Terraform. Después de implementar la solución, puede continuar usando Terraform para administrarla.

    Para utilizar este método de implementación, siga las instrucciones en Implementar mediante la CLI de Terraform .

Implementar a través de la consola

Complete los siguientes pasos para implementar la solución preconfigurada.

  1. En el Google Cloud Catálogo de Jump Start Solutions, vaya a la solución Aplicación web dinámica con Python y JavaScript .

    Ir a la solución Aplicación web dinámica con Python y JavaScript

  2. Revise la información que se proporciona en la página, como el costo estimado de la solución y el tiempo estimado de implementación.

  3. Cuando esté listo para comenzar a implementar la solución, haga clic en Implementar .

    Se muestra un panel de configuración paso a paso.

  4. Complete los pasos en el panel de configuración.

    Anote el nombre que ingresa para la implementación. Este nombre será necesario más adelante cuando elimine la implementación.

    Al hacer clic en Implementar , se muestra la página Implementaciones de soluciones . El campo Estado de esta página muestra Implementando .

  5. Espere a que se implemente la solución.

    Si la implementación falla, el campo Estado muestra Error . Puede utilizar el registro de Cloud Build para diagnosticar los errores. Para obtener más información, consulte Errores al implementar a través de la consola .

    Una vez completada la implementación, el campo Estado cambia a Implementado .

  6. Para ver y utilizar la solución, haga clic en el menú Acciones more_vert y seleccione Explorar esta solución .

    Para obtener más información sobre cómo explorar la implementación de su solución, consulte Explorar su implementación .

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Implementar usando la CLI de Terraform

Esta sección describe cómo puede personalizar la solución o automatizar el aprovisionamiento y la administración de la solución mediante Terraform CLI. Las soluciones que implementa mediante la CLI de Terraform no se muestran en la página Implementaciones de soluciones en la Google Cloud consola.

Configurar el cliente Terraform

Puede ejecutar Terraform en Cloud Shell o en su host local. Esta guía describe cómo ejecutar Terraform en Cloud Shell, que tiene Terraform preinstalado y configurado para autenticarse con Google Cloud.

El código Terraform para esta solución está disponible en un repositorio de GitHub.

  1. Clona el repositorio de GitHub en Cloud Shell.

    Abrir en Cloud Shell

    Se muestra un mensaje para confirmar la descarga del repositorio de GitHub a Cloud Shell.

  2. Haga clic en Confirmar .

    Cloud Shell se inicia en una pestaña separada del navegador y el código Terraform se descarga en el directorio $HOME/cloudshell_open de su entorno de Cloud Shell.

  3. En Cloud Shell, verifique si el directorio de trabajo actual es $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Este es el directorio que contiene los archivos de configuración de Terraform para la solución. Si necesita cambiar a ese directorio, ejecute el siguiente comando:

    cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
    
  4. Inicialice Terraform ejecutando el siguiente comando:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    

Configurar las variables de Terraform

El código de Terraform que descargó incluye variables que puede usar para personalizar la implementación según sus requisitos. Por ejemplo, puede especificar el Google Cloud proyecto y la región donde desea que se implemente la solución.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. En el mismo directorio, cree un archivo de texto llamado terraform.tfvars .

  3. En el archivo terraform.tfvars , copie el siguiente fragmento de código y establezca valores para las variables requeridas.

    • Siga las instrucciones que se proporcionan como comentarios en el fragmento de código.
    • Este fragmento de código incluye solo las variables para las que debe establecer valores. La configuración de Terraform incluye otras variables que tienen valores predeterminados. Para revisar todas las variables y los valores predeterminados, consulte el archivo variables.tf que está disponible en el directorio $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra .
    • Asegúrese de que cada valor que establezca en el archivo terraform.tfvars coincida con el tipo de variable declarado en el archivo variables.tf . Por ejemplo, si el tipo definido para una variable en el archivo variables.tf es bool , debe especificar true o false como valor de esa variable en el archivo terraform.tfvars .
    # ID of the project in which you want to deploy the solution.
    project_id = "PROJECT_ID"
    
    # Google Cloud region where you want to deploy the solution.
    # Example: us-central1
    region = "REGION"
    
    # Whether or not to enable underlying APIs in this solution.
    # Example: true
    enable_apis = "ENABLE_APIS"
    
    # Initial image to deploy to Cloud Run service.
    # Example: gcr.io/hsa-public/developer-journey/app
    initial_run_image = "INITIAL_RUN_IMAGE"
    
    # Identifier for the deployment. Used in some resource names.
    # Example: dev-journey
    deployment_name = "DEPLOYMENT_NAME"
    
    # Whether or not to initialize a Firestore instance.
    # Example: true
    init_firestore = "INIT_FIRESTORE"
    

Para obtener información sobre los valores que puede asignar a las variables requeridas, consulte lo siguiente:

  • project_id : Identificación de proyectos .
  • regions : Regiones disponibles .
  • enable_apis : configúrelo en true para habilitar las API subyacentes en esta solución.
  • initial_run_image : la URL de la imagen inicial que se implementará en el servicio Cloud Run.
  • deployment_name : Identificador de la implementación.
  • init_firestore : configúrelo en true para habilitar la inicialización de una instancia de Firestore.

Validar y revisar la configuración de Terraform

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Verifique que la configuración de Terraform no tenga errores:

    terraform validate
    

    Si el comando devuelve algún error, realice las correcciones necesarias en la configuración y luego ejecute el comando terraform validate nuevamente. Repita este paso hasta que el comando devuelva el siguiente mensaje:

    Success! The configuration is valid.
    
  3. Revise los recursos que están definidos en la configuración:

    terraform plan
    
  4. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    El resultado del comando terraform plan es una lista de los recursos que Terraform aprovisiona cuando aplica la configuración.

    Si desea realizar algún cambio, edite la configuración y luego ejecute los comandos terraform validate y terraform plan nuevamente.

Aprovisionar los recursos

Cuando no sean necesarios más cambios en la configuración de Terraform, implemente los recursos.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Aplique la configuración de Terraform:

    terraform apply
    
  3. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    Terraform muestra una lista de los recursos que se crearán.

  4. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso de la implementación.

    Si no se puede completar la implementación, Terraform muestra los errores que causaron la falla. Revise los mensajes de error y actualice la configuración para corregir los errores. Luego ejecute nuevamente el comando terraform apply . Para obtener ayuda con la solución de errores de Terraform, consulte Errores al implementar la solución mediante la CLI de Terraform .

    Una vez creados todos los recursos, Terraform muestra el siguiente mensaje:

    Apply complete!
    

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Explora tu implementación

Ha implementado su aplicación web dinámica de muestra. La implementación de su solución consta de múltiples servicios primarios que se han integrado en un único Google Cloud proyecto, incluyendo lo siguiente:

  • Una interfaz de cliente de Firebase Hosting, escrita utilizando el marco Lit.
  • Un servidor API de Cloud Run, escrito en Django utilizando Django REST Framework .
  • Una base de datos Cloud SQL, usando PostgreSQL .

Para ver el Google Cloud Recursos que se despliegan y su configuración, realice un recorrido interactivo.

Iniciar el recorrido

Opcional: personaliza tu aplicación

Para personalizar la aplicación web dinámica con la solución Python y JavaScript, puede realizar cambios en el frontend y el backend de la aplicación y luego volver a implementarla. Para seguir las instrucciones paso a paso para esta tarea directamente en Cloud Shell Editor, haga clic en Guíame.

Esta tarea tarda unos 15 minutos en completarse.

Guíame

Eliminar la implementación

Cuando ya no necesite la implementación de la solución, para evitar la facturación continua de los recursos que creó, elimine la implementación.

Eliminar la implementación a través de la consola.

Utilice este procedimiento si implementó la solución a través de la consola.

  1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

    Ir a implementaciones de soluciones

  2. Seleccione el proyecto que contiene la implementación que desea eliminar.

  3. Localice la implementación que desea eliminar.

  4. En la fila de la implementación, haga clic en Acciones y luego seleccione Eliminar .

    Es posible que tengas que desplazarte para ver Acciones en la fila.

  5. Ingrese el nombre de la implementación y luego haga clic en Confirmar .

    El campo Estado muestra Eliminando .

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Eliminar la implementación mediante la CLI de Terraform

Utilice este procedimiento si implementó la solución mediante la CLI de Terraform.

  1. En Cloud Shell, asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Elimine los recursos que fueron aprovisionados por Terraform:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

  3. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Opcional: eliminar el proyecto

Si implementó la solución en un nuevo Google Cloud proyecto y, si ya no lo necesita, elimínelo completando los siguientes pasos:

  1. En el Google Cloud consola, vaya a la página Administrar recursos .

    Ir a Administrar recursos

  2. En la lista de proyectos, seleccione el proyecto que desea eliminar y luego haga clic en Eliminar .
  3. Cuando se le solicite, escriba el ID del proyecto y luego haga clic en Apagar .

Si decide conservar el proyecto, elimine la cuenta de servicio que se creó para esta solución, como se describe en la siguiente sección.

Opcional: eliminar la cuenta de servicio

Si eliminó el proyecto que utilizó para la solución, omita esta sección.

Como se mencionó anteriormente en esta guía, cuando implementó la solución, se creó una cuenta de servicio en su nombre. A la cuenta de servicio se le asignaron ciertos permisos de IAM temporalmente ; es decir, los permisos se revocaron automáticamente después de que se completaron las operaciones de implementación y eliminación de la solución, pero la cuenta de servicio no se elimina. Google recomienda que elimine esta cuenta de servicio.

  • Si implementó la solución a través del Google Cloud consola, vaya a la página Implementaciones de soluciones . (Si ya está en esa página, actualice el navegador). Se activa un proceso en segundo plano para eliminar la cuenta de servicio. No es necesaria ninguna otra acción.

  • Si implementó la solución mediante la CLI de Terraform, complete los siguientes pasos:

    1. En el Google Cloud consola, vaya a la página Cuentas de servicio .

      Ir a cuentas de servicio

    2. Seleccione el proyecto que utilizó para la solución.

    3. Seleccione la cuenta de servicio que desea eliminar.

      El ID de correo electrónico de la cuenta de servicio que se creó para la solución tiene el siguiente formato:

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      El ID de correo electrónico contiene los siguientes valores:

      • DEPLOYMENT_NAME : el nombre de la implementación.
      • NNN : un número aleatorio de 3 dígitos.
      • PROJECT_ID : el ID del proyecto en el que implementó la solución.
    4. Haga clic en Eliminar .

Solucionar errores

Las acciones que puede realizar para diagnosticar y resolver errores dependen del método de implementación y de la complejidad del error.

Errores al implementar a través de la consola

Si la implementación falla cuando usa la consola, haga lo siguiente:

  1. Vaya a la página Implementaciones de soluciones .

    Si la implementación falló, el campo Estado muestra Error .

  2. Vea los detalles de los errores que causaron la falla:

    1. En la fila de la implementación, haga clic en Acciones .

      Es posible que tengas que desplazarte para ver Acciones en la fila.

    2. Seleccione Ver registros de Cloud Build .

  3. Revise el registro de Cloud Build y tome las medidas adecuadas para resolver el problema que provocó la falla.

Errores al implementar usando la CLI de Terraform

Si la implementación falla cuando usa Terraform, el resultado del comando terraform apply incluye mensajes de error que puede revisar para diagnosticar el problema.

Los ejemplos de las siguientes secciones muestran errores de implementación que puede encontrar al utilizar Terraform.

Error de API no habilitada

Si crea un proyecto y luego intenta implementar inmediatamente la solución en el nuevo proyecto, la implementación podría fallar con un error como el siguiente:

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Si se produce este error, espere unos minutos y luego ejecute nuevamente el comando terraform apply .

Error al eliminar una implementación

En determinados casos, los intentos de eliminar una implementación pueden fallar:

  • Después de implementar una solución a través de la consola, si cambia algún recurso que fue aprovisionado por la solución y luego intenta eliminar la implementación, es posible que la eliminación falle. El campo Estado en la página Implementaciones de soluciones muestra Error y el registro de Cloud Build muestra la causa del error.
  • Después de implementar una solución mediante la CLI de Terraform, si cambia cualquier recurso mediante una interfaz que no sea de Terraform (por ejemplo, la consola) y luego intenta eliminar la implementación, es posible que la eliminación falle. Los mensajes en la salida del comando terraform destroy muestran la causa del error.

Revise los registros y mensajes de error, identifique y elimine los recursos que causaron el error y luego intente eliminar la implementación nuevamente.

Si una implementación basada en consola no se elimina y no puede diagnosticar el error mediante el registro de Cloud Build, puede eliminar la implementación mediante la CLI de Terraform, como se describe en la siguiente sección.

Eliminar una implementación basada en consola mediante la CLI de Terraform

Esta sección describe cómo eliminar una implementación basada en consola si se producen errores al intentar eliminarla a través de la consola. En este enfoque, descarga la configuración de Terraform para la implementación que desea eliminar y luego usa la CLI de Terraform para eliminar la implementación.

  1. Identifique la región donde se almacenan el código Terraform, los registros y otros datos de la implementación. Esta región puede ser diferente de la región que seleccionó al implementar la solución.

    1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

      Ir a implementaciones de soluciones

    2. Seleccione el proyecto que contiene la implementación que desea eliminar.

    3. En la lista de implementaciones, identifique la fila de la implementación que desea eliminar.

    4. Haga clic en Ver todo el contenido de la fila .

    5. En la columna Ubicación , observe la segunda ubicación, como se resalta en el siguiente ejemplo:

      Ubicación del código de implementación, registros y otros artefactos.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Cree variables de entorno para el ID del proyecto, la región y el nombre de la implementación que desea eliminar:

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    En estos comandos, reemplace lo siguiente:

    • REGION : la ubicación que anotó anteriormente en este procedimiento.
    • PROJECT_ID : el ID del proyecto donde implementó la solución.
    • DEPLOYMENT_NAME : el nombre de la implementación que desea eliminar.
  4. Obtenga el ID de la última revisión de la implementación que desea eliminar:

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    El resultado es similar al siguiente:

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Obtenga la ubicación de Cloud Storage de la configuración de Terraform para la implementación:

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    El siguiente es un ejemplo del resultado de este comando:

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Descargue la configuración de Terraform desde Cloud Storage a Cloud Shell:

    gcloud storage cp $CONTENT_PATH $HOME --recursive
    cd $HOME/content/infra
    

    Espere hasta que aparezca el mensaje Operation completed , como se muestra en el siguiente ejemplo:

    Operation completed over 45 objects/268.5 KiB
    
  7. Inicializar Terraform:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    
  8. Elimine los recursos implementados:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

    Si se muestra alguna advertencia sobre variables no declaradas, ignórela.

  9. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    
  10. Elimine el artefacto de implementación:

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Espere unos segundos y luego verifique que se eliminó el artefacto de implementación:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Si el resultado muestra null , espere unos segundos y luego ejecute el comando nuevamente.

    Una vez eliminado el artefacto de implementación, se muestra un mensaje como el que se muestra en el siguiente ejemplo:

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

No se puede asignar el error de dirección solicitada

Cuando ejecuta el comando terraform apply , es posible que se produzca un error cannot assign requested address , con un mensaje como el siguiente:

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

Si se produce este error, ejecute nuevamente el comando terraform apply .

Enviar comentarios

Las soluciones Jump Start tienen fines informativos únicamente y no son productos con soporte oficial. Google puede cambiar o eliminar soluciones sin previo aviso.

Para solucionar errores, revise los registros de Cloud Build y la salida de Terraform.

Para enviar comentarios, haga lo siguiente:

  • Para obtener documentación, tutoriales en la consola o la solución, utilice el botón Enviar comentarios en la página.
  • Para código no modificado, cree problemas en el repositorio de GitHub correspondiente:

    Los problemas de GitHub se revisan según el mejor esfuerzo y no están destinados a preguntas de uso general.

¿Qué sigue?

Para seguir aprendiendo más sobre Google Cloud productos y capacidades, consulte:

,

Esta guía le ayuda a comprender, implementar y utilizar la aplicación web dinámica con Python y JavaScript Jump Start Solution. Esta solución demuestra cómo crear y ejecutar sitios web dinámicos en Google Cloud.

La implementación y administración de esta aplicación sirve como ejemplo de implementación en el mundo real de la creación de una aplicación web dinámica con muchas de las herramientas y productos que puede usar para aplicaciones sin servidor. Puede implementar esta solución si desea obtener información sobre lo siguiente:

  • Aplicación del marco REST de Django (DRF)
  • Aplicación de escaparate
  • Sitio web respaldado por bases de datos

Esta solución implementa la aplicación Avocano . Se trata de una tienda falsa, donde los usuarios pueden intentar comprar un artículo. Sin embargo, si un usuario agrega un artículo a su carrito, la tienda revela que es falso (Avoca, ¡no!). Aunque los usuarios en realidad no pueden comprar un aguacate, la aplicación ilustra la gestión de inventario al disminuir en uno la cantidad de producto disponible.

Avocano muestra la combinación de una API basada en Cloud Run, una base de datos Cloud SQL para PostgreSQL y una interfaz Firebase.

Consulte el código fuente de la aplicación Avocano .

Objetivos

Esta guía de solución le ayudará a aprender a utilizar Google Cloud para realizar las siguientes tareas:

  • Implementar una aplicación web de acceso público
    • Conectar una aplicación a un Google Cloud base de datos siguiente Google CloudPrácticas de seguridad recomendadas por:
      • Usar Secret Manager para almacenar contraseñas, claves y certificados.
      • Otorgar solo los permisos de IAM necesarios para realizar la tarea. Esto también se conoce como aplicación del principio de privilegio mínimo.
    • Implementar y operar los servicios backend.
  • Personaliza tu aplicación
    • Realice cambios de contenido o modifique la aplicación para agregar una función.
    • Compile y vuelva a implementar de forma segura.

Productos utilizados

El siguiente es un resumen de la Google Cloud Productos que utiliza esta solución:

  • Cloud Run : un servicio totalmente administrado que le permite crear e implementar aplicaciones en contenedores sin servidor. Google Cloud maneja el escalado y otras tareas de infraestructura para que usted pueda concentrarse en la lógica empresarial de su código.
    • Jobs : Procesamiento de tareas basado en contenedores.
  • Cloud Build : un servicio que le permite importar código fuente desde repositorios o espacios de Cloud Storage, ejecutar una compilación y producir artefactos como contenedores Docker o archivos Java.
  • Cloud SQL para PostgreSQL : una base de datos de PostgreSQL basada en la nube que se administra completamente en el Google Cloudinfraestructura.
  • Secret Manager : un servicio que le permite almacenar, administrar y acceder a secretos como blobs binarios o cadenas de texto. Puede utilizar Secret Manager para almacenar contraseñas de bases de datos, claves API o certificados TLS que necesita una aplicación en tiempo de ejecución.
  • Almacenamiento en la nube : un servicio listo para la empresa que proporciona almacenamiento de objetos sin límites y de bajo costo para diversos tipos de datos. Los datos son accesibles desde dentro y fuera deGoogle Cloud y se replica de forma georredundante.
  • Firebase : una plataforma de desarrollo que le permite crear, lanzar y monitorear aplicaciones para iOS, Android y la web.

Arquitectura

El siguiente diagrama muestra la arquitectura de la solución:

Aplicación web dinámica usando el diagrama de arquitectura Django.

Componentes y configuración

La arquitectura incluye los siguientes componentes:

  1. El cliente web está alojado en Firebase Hosting.
  2. El cliente web llama a un backend de API escrito en Python que se ejecuta como un servicio en Cloud Run.
  3. La configuración y otros secretos de la aplicación Python se almacenan en Secret Manager.
  4. Cloud SQL para PostgreSQL se utiliza como backend de base de datos relacional para la aplicación Python.
  5. Los activos estáticos para la aplicación y las imágenes del contenedor se almacenan en Cloud Storage.

Costo

Para una estimación del costo de la Google Cloud recursos que utiliza la solución de aplicación web dinámica, consulte la estimación precalculada en la Google Cloud Calculadora de precios .

Utilice la estimación como punto de partida para calcular el costo de su implementación. Puede modificar la estimación para reflejar cualquier cambio de configuración que planee realizar para los recursos que se utilizan en la solución.

La estimación precalculada se basa en supuestos para ciertos factores, incluidos los siguientes:

  • El Google Cloud Lugares donde se despliegan los recursos.
  • La cantidad de tiempo que se utilizan los recursos.

Antes de comenzar

Para implementar esta solución, primero necesita un Google Cloud proyecto y algunos permisos de IAM.

Crea o elige un Google Cloud proyecto

Cuando implementas la solución, eliges el Google Cloud proyecto donde se despliegan los recursos. Puede crear un nuevo proyecto o utilizar un proyecto existente para la implementación.

Si desea crear un nuevo proyecto, hágalo antes de comenzar la implementación. El uso de un nuevo proyecto puede ayudar a evitar conflictos con recursos previamente aprovisionados, como los recursos que se utilizan para cargas de trabajo de producción.

Para crear un proyecto, complete los siguientes pasos:

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

Obtenga los permisos de IAM necesarios

Para iniciar el proceso de implementación, necesita los permisos de Administración de acceso e identidad (IAM) que se enumeran en la siguiente tabla.

Si creó un nuevo proyecto para esta solución, entonces tiene el rol básico de roles/owner en ese proyecto y tiene todos los permisos necesarios. Si no tiene los roles/owner , solicite a su administrador que le otorgue estos permisos (o los roles que incluyen estos permisos).

Se requiere permiso de IAM Rol predefinido que incluye los permisos necesarios

serviceusage.services.enable

Administrador de uso del servicio
( roles/serviceusage.serviceUsageAdmin )

iam.serviceAccounts.create

Administrador de cuenta de servicio
( roles/iam.serviceAccountAdmin )

resourcemanager.projects.setIamPolicy

Administrador de IAM del proyecto
( roles/resourcemanager.projectIamAdmin )
config.deployments.create
config.deployments.list
Administrador del administrador de infraestructura en la nube
( roles/config.admin )
iam.serviceAccount.actAs Usuario de cuenta de servicio
( roles/iam.serviceAccountUser )

Acerca de los permisos temporales de cuentas de servicio

Si inicia el proceso de implementación a través de la consola, Google crea una cuenta de servicio para implementar la solución en su nombre (y eliminar la implementación más adelante, si así lo desea). A esta cuenta de servicio se le asignan temporalmente ciertos permisos de IAM; es decir, los permisos se revocan automáticamente una vez completadas las operaciones de implementación y eliminación de la solución. Google recomienda que después de eliminar la implementación, elimine la cuenta de servicio, como se describe más adelante en esta guía.

Ver los roles asignados a la cuenta de servicio

Estos roles se enumeran aquí en caso de que un administrador de suGoogle Cloud proyecto u organización necesita esta información.

  • roles/cloudsql.admin
  • roles/cloudsql.admin
  • roles/firebasehosting.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/run.admin
  • roles/secretmanager.admin
  • roles/storage.admin
  • roles/compute.networkAdmin
  • roles/compute.admin

Implementar la solución

Para ayudarle a implementar esta solución con el mínimo esfuerzo, se proporciona una configuración de Terraform en GitHub. La configuración de Terraform define todos losGoogle Cloud recursos que se requieren para la solución.

Puede implementar la solución mediante uno de los siguientes métodos:

  • A través de la consola : utilice este método si desea probar la solución con la configuración predeterminada y ver cómo funciona. Cloud Build implementa todos los recursos necesarios para la solución. Cuando ya no necesite la solución implementada, puede eliminarla a través de la consola. Es posible que sea necesario eliminar por separado todos los recursos que cree después de implementar la solución.

    Para utilizar este método de implementación, siga las instrucciones en Implementación a través de la consola .

  • Uso de Terraform CLI : utilice este método si desea personalizar la solución o si desea automatizar el aprovisionamiento y la administración de los recursos mediante el enfoque de infraestructura como código (IaC). Descargue la configuración de Terraform desde GitHub,, opcionalmente, personalice el código según sea necesario y luego implemente la solución mediante la CLI de Terraform. Después de implementar la solución, puede continuar usando Terraform para administrarla.

    Para utilizar este método de implementación, siga las instrucciones en Implementar mediante la CLI de Terraform .

Implementar a través de la consola

Complete los siguientes pasos para implementar la solución preconfigurada.

  1. En el Google Cloud Catálogo de Jump Start Solutions, vaya a la solución Aplicación web dinámica con Python y JavaScript .

    Ir a la solución Aplicación web dinámica con Python y JavaScript

  2. Revise la información que se proporciona en la página, como el costo estimado de la solución y el tiempo estimado de implementación.

  3. Cuando esté listo para comenzar a implementar la solución, haga clic en Implementar .

    Se muestra un panel de configuración paso a paso.

  4. Complete los pasos en el panel de configuración.

    Anote el nombre que ingresa para la implementación. Este nombre será necesario más adelante cuando elimine la implementación.

    Al hacer clic en Implementar , se muestra la página Implementaciones de soluciones . El campo Estado de esta página muestra Implementando .

  5. Espere a que se implemente la solución.

    Si la implementación falla, el campo Estado muestra Error . Puede utilizar el registro de Cloud Build para diagnosticar los errores. Para obtener más información, consulte Errores al implementar a través de la consola .

    Una vez completada la implementación, el campo Estado cambia a Implementado .

  6. Para ver y utilizar la solución, haga clic en el menú Acciones more_vert y seleccione Explorar esta solución .

    Para obtener más información sobre cómo explorar la implementación de su solución, consulte Explorar su implementación .

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Implementar usando la CLI de Terraform

Esta sección describe cómo puede personalizar la solución o automatizar el aprovisionamiento y la administración de la solución mediante Terraform CLI. Las soluciones que implementa mediante la CLI de Terraform no se muestran en la página Implementaciones de soluciones en la Google Cloud consola.

Configurar el cliente Terraform

Puede ejecutar Terraform en Cloud Shell o en su host local. Esta guía describe cómo ejecutar Terraform en Cloud Shell, que tiene Terraform preinstalado y configurado para autenticarse con Google Cloud.

El código Terraform para esta solución está disponible en un repositorio de GitHub.

  1. Clona el repositorio de GitHub en Cloud Shell.

    Abrir en Cloud Shell

    Se muestra un mensaje para confirmar la descarga del repositorio de GitHub a Cloud Shell.

  2. Haga clic en Confirmar .

    Cloud Shell se inicia en una pestaña separada del navegador y el código Terraform se descarga en el directorio $HOME/cloudshell_open de su entorno de Cloud Shell.

  3. En Cloud Shell, verifique si el directorio de trabajo actual es $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Este es el directorio que contiene los archivos de configuración de Terraform para la solución. Si necesita cambiar a ese directorio, ejecute el siguiente comando:

    cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
    
  4. Inicialice Terraform ejecutando el siguiente comando:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    

Configurar las variables de Terraform

El código de Terraform que descargó incluye variables que puede usar para personalizar la implementación según sus requisitos. Por ejemplo, puede especificar el Google Cloud proyecto y la región donde desea que se implemente la solución.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. En el mismo directorio, cree un archivo de texto llamado terraform.tfvars .

  3. En el archivo terraform.tfvars , copie el siguiente fragmento de código y establezca valores para las variables requeridas.

    • Siga las instrucciones que se proporcionan como comentarios en el fragmento de código.
    • Este fragmento de código incluye solo las variables para las que debe establecer valores. La configuración de Terraform incluye otras variables que tienen valores predeterminados. Para revisar todas las variables y los valores predeterminados, consulte el archivo variables.tf que está disponible en el directorio $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra .
    • Asegúrese de que cada valor que establezca en el archivo terraform.tfvars coincida con el tipo de variable declarado en el archivo variables.tf . Por ejemplo, si el tipo definido para una variable en el archivo variables.tf es bool , debe especificar true o false como valor de esa variable en el archivo terraform.tfvars .
    # ID of the project in which you want to deploy the solution.
    project_id = "PROJECT_ID"
    
    # Google Cloud region where you want to deploy the solution.
    # Example: us-central1
    region = "REGION"
    
    # Whether or not to enable underlying APIs in this solution.
    # Example: true
    enable_apis = "ENABLE_APIS"
    
    # Initial image to deploy to Cloud Run service.
    # Example: gcr.io/hsa-public/developer-journey/app
    initial_run_image = "INITIAL_RUN_IMAGE"
    
    # Identifier for the deployment. Used in some resource names.
    # Example: dev-journey
    deployment_name = "DEPLOYMENT_NAME"
    
    # Whether or not to initialize a Firestore instance.
    # Example: true
    init_firestore = "INIT_FIRESTORE"
    

Para obtener información sobre los valores que puede asignar a las variables requeridas, consulte lo siguiente:

  • project_id : Identificación de proyectos .
  • regions : Regiones disponibles .
  • enable_apis : configúrelo en true para habilitar las API subyacentes en esta solución.
  • initial_run_image : la URL de la imagen inicial que se implementará en el servicio Cloud Run.
  • deployment_name : Identificador de la implementación.
  • init_firestore : configúrelo en true para habilitar la inicialización de una instancia de Firestore.

Validar y revisar la configuración de Terraform

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Verifique que la configuración de Terraform no tenga errores:

    terraform validate
    

    Si el comando devuelve algún error, realice las correcciones necesarias en la configuración y luego ejecute el comando terraform validate nuevamente. Repita este paso hasta que el comando devuelva el siguiente mensaje:

    Success! The configuration is valid.
    
  3. Revise los recursos que están definidos en la configuración:

    terraform plan
    
  4. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    El resultado del comando terraform plan es una lista de los recursos que Terraform aprovisiona cuando aplica la configuración.

    Si desea realizar algún cambio, edite la configuración y luego ejecute los comandos terraform validate y terraform plan nuevamente.

Aprovisionar los recursos

Cuando no sean necesarios más cambios en la configuración de Terraform, implemente los recursos.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Aplique la configuración de Terraform:

    terraform apply
    
  3. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    Terraform muestra una lista de los recursos que se crearán.

  4. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso de la implementación.

    Si no se puede completar la implementación, Terraform muestra los errores que causaron la falla. Revise los mensajes de error y actualice la configuración para corregir los errores. Luego ejecute nuevamente el comando terraform apply . Para obtener ayuda con la solución de errores de Terraform, consulte Errores al implementar la solución mediante la CLI de Terraform .

    Una vez creados todos los recursos, Terraform muestra el siguiente mensaje:

    Apply complete!
    

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Explora tu implementación

Ha implementado su aplicación web dinámica de muestra. La implementación de su solución consta de múltiples servicios primarios que se han integrado en un único Google Cloud proyecto, incluyendo lo siguiente:

  • Una interfaz de cliente de Firebase Hosting, escrita utilizando el marco Lit.
  • Un servidor API de Cloud Run, escrito en Django utilizando Django REST Framework .
  • Una base de datos Cloud SQL, usando PostgreSQL .

Para ver el Google Cloud Recursos que se despliegan y su configuración, realice un recorrido interactivo.

Iniciar el recorrido

Opcional: personaliza tu aplicación

Para personalizar la aplicación web dinámica con la solución Python y JavaScript, puede realizar cambios en el frontend y el backend de la aplicación y luego volver a implementarla. Para seguir las instrucciones paso a paso para esta tarea directamente en Cloud Shell Editor, haga clic en Guíame.

Esta tarea tarda unos 15 minutos en completarse.

Guíame

Eliminar la implementación

Cuando ya no necesite la implementación de la solución, para evitar la facturación continua de los recursos que creó, elimine la implementación.

Eliminar la implementación a través de la consola.

Utilice este procedimiento si implementó la solución a través de la consola.

  1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

    Ir a implementaciones de soluciones

  2. Seleccione el proyecto que contiene la implementación que desea eliminar.

  3. Localice la implementación que desea eliminar.

  4. En la fila de la implementación, haga clic en Acciones y luego seleccione Eliminar .

    Es posible que tengas que desplazarte para ver Acciones en la fila.

  5. Ingrese el nombre de la implementación y luego haga clic en Confirmar .

    El campo Estado muestra Eliminando .

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Eliminar la implementación mediante la CLI de Terraform

Utilice este procedimiento si implementó la solución mediante la CLI de Terraform.

  1. En Cloud Shell, asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Elimine los recursos que fueron aprovisionados por Terraform:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

  3. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Opcional: eliminar el proyecto

Si implementó la solución en un nuevo Google Cloud proyecto y, si ya no lo necesita, elimínelo completando los siguientes pasos:

  1. En el Google Cloud consola, vaya a la página Administrar recursos .

    Ir a Administrar recursos

  2. En la lista de proyectos, seleccione el proyecto que desea eliminar y luego haga clic en Eliminar .
  3. Cuando se le solicite, escriba el ID del proyecto y luego haga clic en Apagar .

Si decide conservar el proyecto, elimine la cuenta de servicio que se creó para esta solución, como se describe en la siguiente sección.

Opcional: eliminar la cuenta de servicio

Si eliminó el proyecto que utilizó para la solución, omita esta sección.

Como se mencionó anteriormente en esta guía, cuando implementó la solución, se creó una cuenta de servicio en su nombre. A la cuenta de servicio se le asignaron ciertos permisos de IAM temporalmente ; es decir, los permisos se revocaron automáticamente después de que se completaron las operaciones de implementación y eliminación de la solución, pero la cuenta de servicio no se elimina. Google recomienda que elimine esta cuenta de servicio.

  • Si implementó la solución a través del Google Cloud consola, vaya a la página Implementaciones de soluciones . (Si ya está en esa página, actualice el navegador). Se activa un proceso en segundo plano para eliminar la cuenta de servicio. No es necesaria ninguna otra acción.

  • Si implementó la solución mediante la CLI de Terraform, complete los siguientes pasos:

    1. En el Google Cloud consola, vaya a la página Cuentas de servicio .

      Ir a cuentas de servicio

    2. Seleccione el proyecto que utilizó para la solución.

    3. Seleccione la cuenta de servicio que desea eliminar.

      El ID de correo electrónico de la cuenta de servicio que se creó para la solución tiene el siguiente formato:

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      El ID de correo electrónico contiene los siguientes valores:

      • DEPLOYMENT_NAME : el nombre de la implementación.
      • NNN : un número aleatorio de 3 dígitos.
      • PROJECT_ID : el ID del proyecto en el que implementó la solución.
    4. Haga clic en Eliminar .

Solucionar errores

Las acciones que puede realizar para diagnosticar y resolver errores dependen del método de implementación y de la complejidad del error.

Errores al implementar a través de la consola

Si la implementación falla cuando usa la consola, haga lo siguiente:

  1. Vaya a la página Implementaciones de soluciones .

    Si la implementación falló, el campo Estado muestra Error .

  2. Vea los detalles de los errores que causaron la falla:

    1. En la fila de la implementación, haga clic en Acciones .

      Es posible que tengas que desplazarte para ver Acciones en la fila.

    2. Seleccione Ver registros de Cloud Build .

  3. Revise el registro de Cloud Build y tome las medidas adecuadas para resolver el problema que provocó la falla.

Errores al implementar usando la CLI de Terraform

Si la implementación falla cuando usa Terraform, el resultado del comando terraform apply incluye mensajes de error que puede revisar para diagnosticar el problema.

Los ejemplos de las siguientes secciones muestran errores de implementación que puede encontrar al utilizar Terraform.

Error de API no habilitada

Si crea un proyecto y luego intenta implementar inmediatamente la solución en el nuevo proyecto, la implementación podría fallar con un error como el siguiente:

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Si se produce este error, espere unos minutos y luego ejecute nuevamente el comando terraform apply .

Error al eliminar una implementación

En determinados casos, los intentos de eliminar una implementación pueden fallar:

  • Después de implementar una solución a través de la consola, si cambia algún recurso que fue aprovisionado por la solución y luego intenta eliminar la implementación, es posible que la eliminación falle. El campo Estado en la página Implementaciones de soluciones muestra Error y el registro de Cloud Build muestra la causa del error.
  • Después de implementar una solución mediante la CLI de Terraform, si cambia cualquier recurso mediante una interfaz que no sea de Terraform (por ejemplo, la consola) y luego intenta eliminar la implementación, es posible que la eliminación falle. Los mensajes en la salida del comando terraform destroy muestran la causa del error.

Revise los registros y mensajes de error, identifique y elimine los recursos que causaron el error y luego intente eliminar la implementación nuevamente.

Si una implementación basada en consola no se elimina y no puede diagnosticar el error mediante el registro de Cloud Build, puede eliminar la implementación mediante la CLI de Terraform, como se describe en la siguiente sección.

Eliminar una implementación basada en consola mediante la CLI de Terraform

Esta sección describe cómo eliminar una implementación basada en consola si se producen errores al intentar eliminarla a través de la consola. En este enfoque, descarga la configuración de Terraform para la implementación que desea eliminar y luego usa la CLI de Terraform para eliminar la implementación.

  1. Identifique la región donde se almacenan el código Terraform, los registros y otros datos de la implementación. Esta región puede ser diferente de la región que seleccionó al implementar la solución.

    1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

      Ir a implementaciones de soluciones

    2. Seleccione el proyecto que contiene la implementación que desea eliminar.

    3. En la lista de implementaciones, identifique la fila de la implementación que desea eliminar.

    4. Haga clic en Ver todo el contenido de la fila .

    5. En la columna Ubicación , observe la segunda ubicación, como se resalta en el siguiente ejemplo:

      Ubicación del código de implementación, registros y otros artefactos.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Cree variables de entorno para el ID del proyecto, la región y el nombre de la implementación que desea eliminar:

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    En estos comandos, reemplace lo siguiente:

    • REGION : la ubicación que anotó anteriormente en este procedimiento.
    • PROJECT_ID : el ID del proyecto donde implementó la solución.
    • DEPLOYMENT_NAME : el nombre de la implementación que desea eliminar.
  4. Obtenga el ID de la última revisión de la implementación que desea eliminar:

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    El resultado es similar al siguiente:

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Obtenga la ubicación de Cloud Storage de la configuración de Terraform para la implementación:

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    El siguiente es un ejemplo del resultado de este comando:

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Descargue la configuración de Terraform desde Cloud Storage a Cloud Shell:

    gcloud storage cp $CONTENT_PATH $HOME --recursive
    cd $HOME/content/infra
    

    Espere hasta que aparezca el mensaje Operation completed , como se muestra en el siguiente ejemplo:

    Operation completed over 45 objects/268.5 KiB
    
  7. Inicializar Terraform:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    
  8. Elimine los recursos implementados:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

    Si se muestra alguna advertencia sobre variables no declaradas, ignórela.

  9. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    
  10. Elimine el artefacto de implementación:

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Espere unos segundos y luego verifique que se eliminó el artefacto de implementación:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Si el resultado muestra null , espere unos segundos y luego ejecute el comando nuevamente.

    Una vez eliminado el artefacto de implementación, se muestra un mensaje como el que se muestra en el siguiente ejemplo:

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

No se puede asignar el error de dirección solicitada

Cuando ejecuta el comando terraform apply , es posible que se produzca un error cannot assign requested address , con un mensaje como el siguiente:

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

Si se produce este error, ejecute nuevamente el comando terraform apply .

Enviar comentarios

Las soluciones Jump Start tienen fines informativos únicamente y no son productos con soporte oficial. Google puede cambiar o eliminar soluciones sin previo aviso.

Para solucionar errores, revise los registros de Cloud Build y la salida de Terraform.

Para enviar comentarios, haga lo siguiente:

  • Para obtener documentación, tutoriales en la consola o la solución, utilice el botón Enviar comentarios en la página.
  • Para código no modificado, cree problemas en el repositorio de GitHub correspondiente:

    Los problemas de GitHub se revisan según el mejor esfuerzo y no están destinados a preguntas de uso general.

¿Qué sigue?

Para seguir aprendiendo más sobre Google Cloud productos y capacidades, consulte:

,

Esta guía le ayuda a comprender, implementar y utilizar la aplicación web dinámica con Python y JavaScript Jump Start Solution. Esta solución demuestra cómo crear y ejecutar sitios web dinámicos en Google Cloud.

La implementación y administración de esta aplicación sirve como ejemplo de implementación en el mundo real de la creación de una aplicación web dinámica con muchas de las herramientas y productos que puede usar para aplicaciones sin servidor. Puede implementar esta solución si desea obtener información sobre lo siguiente:

  • Aplicación del marco REST de Django (DRF)
  • Aplicación de escaparate
  • Sitio web respaldado por bases de datos

Esta solución implementa la aplicación Avocano . Se trata de una tienda falsa, donde los usuarios pueden intentar comprar un artículo. Sin embargo, si un usuario agrega un artículo a su carrito, la tienda revela que es falso (Avoca, ¡no!). Aunque los usuarios en realidad no pueden comprar un aguacate, la aplicación ilustra la gestión de inventario al disminuir en uno la cantidad de producto disponible.

Avocano muestra la combinación de una API basada en Cloud Run, una base de datos Cloud SQL para PostgreSQL y una interfaz Firebase.

Consulte el código fuente de la aplicación Avocano .

Objetivos

Esta guía de solución le ayudará a aprender a utilizar Google Cloud para realizar las siguientes tareas:

  • Implementar una aplicación web de acceso público
    • Conectar una aplicación a un Google Cloud base de datos siguiente Google CloudPrácticas de seguridad recomendadas por:
      • Usar Secret Manager para almacenar contraseñas, claves y certificados.
      • Otorgar solo los permisos de IAM necesarios para realizar la tarea. Esto también se conoce como aplicación del principio de privilegio mínimo.
    • Implementar y operar los servicios backend.
  • Personaliza tu aplicación
    • Realice cambios de contenido o modifique la aplicación para agregar una función.
    • Compile y vuelva a implementar de forma segura.

Productos utilizados

El siguiente es un resumen de la Google Cloud Productos que utiliza esta solución:

  • Cloud Run : un servicio totalmente administrado que le permite crear e implementar aplicaciones en contenedores sin servidor. Google Cloud maneja el escalado y otras tareas de infraestructura para que usted pueda concentrarse en la lógica empresarial de su código.
    • Jobs : Procesamiento de tareas basado en contenedores.
  • Cloud Build : un servicio que le permite importar código fuente desde repositorios o espacios de Cloud Storage, ejecutar una compilación y producir artefactos como contenedores Docker o archivos Java.
  • Cloud SQL para PostgreSQL : una base de datos de PostgreSQL basada en la nube que se administra completamente en el Google Cloudinfraestructura.
  • Secret Manager : un servicio que le permite almacenar, administrar y acceder a secretos como blobs binarios o cadenas de texto. Puede utilizar Secret Manager para almacenar contraseñas de bases de datos, claves API o certificados TLS que necesita una aplicación en tiempo de ejecución.
  • Almacenamiento en la nube : un servicio listo para la empresa que proporciona almacenamiento de objetos sin límites y de bajo costo para diversos tipos de datos. Los datos son accesibles desde dentro y fuera deGoogle Cloud y se replica de forma georredundante.
  • Firebase : una plataforma de desarrollo que le permite crear, lanzar y monitorear aplicaciones para iOS, Android y la web.

Arquitectura

El siguiente diagrama muestra la arquitectura de la solución:

Aplicación web dinámica usando el diagrama de arquitectura Django.

Componentes y configuración

La arquitectura incluye los siguientes componentes:

  1. El cliente web está alojado en Firebase Hosting.
  2. El cliente web llama a un backend de API escrito en Python que se ejecuta como un servicio en Cloud Run.
  3. La configuración y otros secretos de la aplicación Python se almacenan en Secret Manager.
  4. Cloud SQL para PostgreSQL se utiliza como backend de base de datos relacional para la aplicación Python.
  5. Los activos estáticos para la aplicación y las imágenes del contenedor se almacenan en Cloud Storage.

Costo

Para una estimación del costo de la Google Cloud recursos que utiliza la solución de aplicación web dinámica, consulte la estimación precalculada en la Google Cloud Calculadora de precios .

Utilice la estimación como punto de partida para calcular el costo de su implementación. Puede modificar la estimación para reflejar cualquier cambio de configuración que planee realizar para los recursos que se utilizan en la solución.

La estimación precalculada se basa en supuestos para ciertos factores, incluidos los siguientes:

  • El Google Cloud Lugares donde se despliegan los recursos.
  • La cantidad de tiempo que se utilizan los recursos.

Antes de comenzar

Para implementar esta solución, primero necesita un Google Cloud proyecto y algunos permisos de IAM.

Crea o elige un Google Cloud proyecto

Cuando implementas la solución, eliges el Google Cloud proyecto donde se despliegan los recursos. Puede crear un nuevo proyecto o utilizar un proyecto existente para la implementación.

Si desea crear un nuevo proyecto, hágalo antes de comenzar la implementación. El uso de un nuevo proyecto puede ayudar a evitar conflictos con recursos previamente aprovisionados, como los recursos que se utilizan para cargas de trabajo de producción.

Para crear un proyecto, complete los siguientes pasos:

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

Obtenga los permisos de IAM necesarios

Para iniciar el proceso de implementación, necesita los permisos de Administración de acceso e identidad (IAM) que se enumeran en la siguiente tabla.

Si creó un nuevo proyecto para esta solución, entonces tiene el rol básico de roles/owner en ese proyecto y tiene todos los permisos necesarios. Si no tiene los roles/owner , solicite a su administrador que le otorgue estos permisos (o los roles que incluyen estos permisos).

Se requiere permiso de IAM Rol predefinido que incluye los permisos necesarios

serviceusage.services.enable

Administrador de uso del servicio
( roles/serviceusage.serviceUsageAdmin )

iam.serviceAccounts.create

Administrador de cuenta de servicio
( roles/iam.serviceAccountAdmin )

resourcemanager.projects.setIamPolicy

Administrador de IAM del proyecto
( roles/resourcemanager.projectIamAdmin )
config.deployments.create
config.deployments.list
Administrador del administrador de infraestructura en la nube
( roles/config.admin )
iam.serviceAccount.actAs Usuario de cuenta de servicio
( roles/iam.serviceAccountUser )

Acerca de los permisos temporales de cuentas de servicio

Si inicia el proceso de implementación a través de la consola, Google crea una cuenta de servicio para implementar la solución en su nombre (y eliminar la implementación más adelante, si así lo desea). A esta cuenta de servicio se le asignan temporalmente ciertos permisos de IAM; es decir, los permisos se revocan automáticamente una vez completadas las operaciones de implementación y eliminación de la solución. Google recomienda que después de eliminar la implementación, elimine la cuenta de servicio, como se describe más adelante en esta guía.

Ver los roles asignados a la cuenta de servicio

Estos roles se enumeran aquí en caso de que un administrador de suGoogle Cloud proyecto u organización necesita esta información.

  • roles/cloudsql.admin
  • roles/cloudsql.admin
  • roles/firebasehosting.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/run.admin
  • roles/secretmanager.admin
  • roles/storage.admin
  • roles/compute.networkAdmin
  • roles/compute.admin

Implementar la solución

Para ayudarle a implementar esta solución con el mínimo esfuerzo, se proporciona una configuración de Terraform en GitHub. La configuración de Terraform define todos losGoogle Cloud recursos que se requieren para la solución.

Puede implementar la solución mediante uno de los siguientes métodos:

  • A través de la consola : utilice este método si desea probar la solución con la configuración predeterminada y ver cómo funciona. Cloud Build implementa todos los recursos necesarios para la solución. Cuando ya no necesite la solución implementada, puede eliminarla a través de la consola. Es posible que sea necesario eliminar por separado todos los recursos que cree después de implementar la solución.

    Para utilizar este método de implementación, siga las instrucciones en Implementación a través de la consola .

  • Uso de Terraform CLI : utilice este método si desea personalizar la solución o si desea automatizar el aprovisionamiento y la administración de los recursos mediante el enfoque de infraestructura como código (IaC). Descargue la configuración de Terraform desde GitHub,, opcionalmente, personalice el código según sea necesario y luego implemente la solución mediante la CLI de Terraform. Después de implementar la solución, puede continuar usando Terraform para administrarla.

    Para utilizar este método de implementación, siga las instrucciones en Implementar mediante la CLI de Terraform .

Implementar a través de la consola

Complete los siguientes pasos para implementar la solución preconfigurada.

  1. En el Google Cloud Catálogo de Jump Start Solutions, vaya a la solución Aplicación web dinámica con Python y JavaScript .

    Ir a la solución Aplicación web dinámica con Python y JavaScript

  2. Revise la información que se proporciona en la página, como el costo estimado de la solución y el tiempo estimado de implementación.

  3. Cuando esté listo para comenzar a implementar la solución, haga clic en Implementar .

    Se muestra un panel de configuración paso a paso.

  4. Complete los pasos en el panel de configuración.

    Anote el nombre que ingresa para la implementación. Este nombre será necesario más adelante cuando elimine la implementación.

    Al hacer clic en Implementar , se muestra la página Implementaciones de soluciones . El campo Estado de esta página muestra Implementando .

  5. Espere a que se implemente la solución.

    Si la implementación falla, el campo Estado muestra Error . Puede utilizar el registro de Cloud Build para diagnosticar los errores. Para obtener más información, consulte Errores al implementar a través de la consola .

    Una vez completada la implementación, el campo Estado cambia a Implementado .

  6. Para ver y utilizar la solución, haga clic en el menú Acciones more_vert y seleccione Explorar esta solución .

    Para obtener más información sobre cómo explorar la implementación de su solución, consulte Explorar su implementación .

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Implementar usando la CLI de Terraform

Esta sección describe cómo puede personalizar la solución o automatizar el aprovisionamiento y la administración de la solución mediante Terraform CLI. Las soluciones que implementa mediante la CLI de Terraform no se muestran en la página Implementaciones de soluciones en la Google Cloud consola.

Configurar el cliente Terraform

Puede ejecutar Terraform en Cloud Shell o en su host local. Esta guía describe cómo ejecutar Terraform en Cloud Shell, que tiene Terraform preinstalado y configurado para autenticarse con Google Cloud.

El código Terraform para esta solución está disponible en un repositorio de GitHub.

  1. Clona el repositorio de GitHub en Cloud Shell.

    Abrir en Cloud Shell

    Se muestra un mensaje para confirmar la descarga del repositorio de GitHub a Cloud Shell.

  2. Haga clic en Confirmar .

    Cloud Shell se inicia en una pestaña separada del navegador y el código Terraform se descarga en el directorio $HOME/cloudshell_open de su entorno de Cloud Shell.

  3. En Cloud Shell, verifique si el directorio de trabajo actual es $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Este es el directorio que contiene los archivos de configuración de Terraform para la solución. Si necesita cambiar a ese directorio, ejecute el siguiente comando:

    cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
    
  4. Inicialice Terraform ejecutando el siguiente comando:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    

Configurar las variables de Terraform

El código de Terraform que descargó incluye variables que puede usar para personalizar la implementación según sus requisitos. Por ejemplo, puede especificar el Google Cloud proyecto y la región donde desea que se implemente la solución.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. En el mismo directorio, cree un archivo de texto llamado terraform.tfvars .

  3. En el archivo terraform.tfvars , copie el siguiente fragmento de código y establezca valores para las variables requeridas.

    • Siga las instrucciones que se proporcionan como comentarios en el fragmento de código.
    • Este fragmento de código incluye solo las variables para las que debe establecer valores. La configuración de Terraform incluye otras variables que tienen valores predeterminados. Para revisar todas las variables y los valores predeterminados, consulte el archivo variables.tf que está disponible en el directorio $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra .
    • Asegúrese de que cada valor que establezca en el archivo terraform.tfvars coincida con el tipo de variable declarado en el archivo variables.tf . Por ejemplo, si el tipo definido para una variable en el archivo variables.tf es bool , debe especificar true o false como valor de esa variable en el archivo terraform.tfvars .
    # ID of the project in which you want to deploy the solution.
    project_id = "PROJECT_ID"
    
    # Google Cloud region where you want to deploy the solution.
    # Example: us-central1
    region = "REGION"
    
    # Whether or not to enable underlying APIs in this solution.
    # Example: true
    enable_apis = "ENABLE_APIS"
    
    # Initial image to deploy to Cloud Run service.
    # Example: gcr.io/hsa-public/developer-journey/app
    initial_run_image = "INITIAL_RUN_IMAGE"
    
    # Identifier for the deployment. Used in some resource names.
    # Example: dev-journey
    deployment_name = "DEPLOYMENT_NAME"
    
    # Whether or not to initialize a Firestore instance.
    # Example: true
    init_firestore = "INIT_FIRESTORE"
    

Para obtener información sobre los valores que puede asignar a las variables requeridas, consulte lo siguiente:

  • project_id : Identificación de proyectos .
  • regions : Regiones disponibles .
  • enable_apis : configúrelo en true para habilitar las API subyacentes en esta solución.
  • initial_run_image : la URL de la imagen inicial que se implementará en el servicio Cloud Run.
  • deployment_name : Identificador de la implementación.
  • init_firestore : configúrelo en true para habilitar la inicialización de una instancia de Firestore.

Validar y revisar la configuración de Terraform

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Verifique que la configuración de Terraform no tenga errores:

    terraform validate
    

    Si el comando devuelve algún error, realice las correcciones necesarias en la configuración y luego ejecute el comando terraform validate nuevamente. Repita este paso hasta que el comando devuelva el siguiente mensaje:

    Success! The configuration is valid.
    
  3. Revise los recursos que están definidos en la configuración:

    terraform plan
    
  4. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    El resultado del comando terraform plan es una lista de los recursos que Terraform aprovisiona cuando aplica la configuración.

    Si desea realizar algún cambio, edite la configuración y luego ejecute los comandos terraform validate y terraform plan nuevamente.

Aprovisionar los recursos

Cuando no sean necesarios más cambios en la configuración de Terraform, implemente los recursos.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Aplique la configuración de Terraform:

    terraform apply
    
  3. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    Terraform muestra una lista de los recursos que se crearán.

  4. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso de la implementación.

    Si no se puede completar la implementación, Terraform muestra los errores que causaron la falla. Revise los mensajes de error y actualice la configuración para corregir los errores. Luego ejecute nuevamente el comando terraform apply . Para obtener ayuda con la solución de errores de Terraform, consulte Errores al implementar la solución mediante la CLI de Terraform .

    Una vez creados todos los recursos, Terraform muestra el siguiente mensaje:

    Apply complete!
    

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Explora tu implementación

Ha implementado su aplicación web dinámica de muestra. La implementación de su solución consta de múltiples servicios primarios que se han integrado en un único Google Cloud proyecto, incluyendo lo siguiente:

  • Una interfaz de cliente de Firebase Hosting, escrita utilizando el marco Lit.
  • Un servidor API de Cloud Run, escrito en Django utilizando Django REST Framework .
  • Una base de datos Cloud SQL, usando PostgreSQL .

Para ver el Google Cloud Recursos que se despliegan y su configuración, realice un recorrido interactivo.

Iniciar el recorrido

Opcional: personaliza tu aplicación

Para personalizar la aplicación web dinámica con la solución Python y JavaScript, puede realizar cambios en el frontend y el backend de la aplicación y luego volver a implementarla. Para seguir las instrucciones paso a paso para esta tarea directamente en Cloud Shell Editor, haga clic en Guíame.

Esta tarea tarda unos 15 minutos en completarse.

Guíame

Eliminar la implementación

Cuando ya no necesite la implementación de la solución, para evitar la facturación continua de los recursos que creó, elimine la implementación.

Eliminar la implementación a través de la consola.

Utilice este procedimiento si implementó la solución a través de la consola.

  1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

    Ir a implementaciones de soluciones

  2. Seleccione el proyecto que contiene la implementación que desea eliminar.

  3. Localice la implementación que desea eliminar.

  4. En la fila de la implementación, haga clic en Acciones y luego seleccione Eliminar .

    Es posible que tengas que desplazarte para ver Acciones en la fila.

  5. Ingrese el nombre de la implementación y luego haga clic en Confirmar .

    El campo Estado muestra Eliminando .

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Eliminar la implementación mediante la CLI de Terraform

Utilice este procedimiento si implementó la solución mediante la CLI de Terraform.

  1. En Cloud Shell, asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Elimine los recursos que fueron aprovisionados por Terraform:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

  3. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Opcional: eliminar el proyecto

Si implementó la solución en un nuevo Google Cloud proyecto y, si ya no lo necesita, elimínelo completando los siguientes pasos:

  1. En el Google Cloud consola, vaya a la página Administrar recursos .

    Ir a Administrar recursos

  2. En la lista de proyectos, seleccione el proyecto que desea eliminar y luego haga clic en Eliminar .
  3. Cuando se le solicite, escriba el ID del proyecto y luego haga clic en Apagar .

Si decide conservar el proyecto, elimine la cuenta de servicio que se creó para esta solución, como se describe en la siguiente sección.

Opcional: eliminar la cuenta de servicio

Si eliminó el proyecto que utilizó para la solución, omita esta sección.

Como se mencionó anteriormente en esta guía, cuando implementó la solución, se creó una cuenta de servicio en su nombre. A la cuenta de servicio se le asignaron ciertos permisos de IAM temporalmente ; es decir, los permisos se revocaron automáticamente después de que se completaron las operaciones de implementación y eliminación de la solución, pero la cuenta de servicio no se elimina. Google recomienda que elimine esta cuenta de servicio.

  • Si implementó la solución a través del Google Cloud consola, vaya a la página Implementaciones de soluciones . (Si ya está en esa página, actualice el navegador). Se activa un proceso en segundo plano para eliminar la cuenta de servicio. No es necesaria ninguna otra acción.

  • Si implementó la solución mediante la CLI de Terraform, complete los siguientes pasos:

    1. En el Google Cloud consola, vaya a la página Cuentas de servicio .

      Ir a cuentas de servicio

    2. Seleccione el proyecto que utilizó para la solución.

    3. Seleccione la cuenta de servicio que desea eliminar.

      El ID de correo electrónico de la cuenta de servicio que se creó para la solución tiene el siguiente formato:

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      El ID de correo electrónico contiene los siguientes valores:

      • DEPLOYMENT_NAME : el nombre de la implementación.
      • NNN : un número aleatorio de 3 dígitos.
      • PROJECT_ID : el ID del proyecto en el que implementó la solución.
    4. Haga clic en Eliminar .

Solucionar errores

Las acciones que puede realizar para diagnosticar y resolver errores dependen del método de implementación y de la complejidad del error.

Errores al implementar a través de la consola

Si la implementación falla cuando usa la consola, haga lo siguiente:

  1. Vaya a la página Implementaciones de soluciones .

    Si la implementación falló, el campo Estado muestra Error .

  2. Vea los detalles de los errores que causaron la falla:

    1. En la fila de la implementación, haga clic en Acciones .

      Es posible que tengas que desplazarte para ver Acciones en la fila.

    2. Seleccione Ver registros de Cloud Build .

  3. Revise el registro de Cloud Build y tome las medidas adecuadas para resolver el problema que provocó la falla.

Errores al implementar usando la CLI de Terraform

Si la implementación falla cuando usa Terraform, el resultado del comando terraform apply incluye mensajes de error que puede revisar para diagnosticar el problema.

Los ejemplos de las siguientes secciones muestran errores de implementación que puede encontrar al utilizar Terraform.

Error de API no habilitada

Si crea un proyecto y luego intenta implementar inmediatamente la solución en el nuevo proyecto, la implementación podría fallar con un error como el siguiente:

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Si se produce este error, espere unos minutos y luego ejecute nuevamente el comando terraform apply .

Error al eliminar una implementación

En determinados casos, los intentos de eliminar una implementación pueden fallar:

  • Después de implementar una solución a través de la consola, si cambia algún recurso que fue aprovisionado por la solución y luego intenta eliminar la implementación, es posible que la eliminación falle. El campo Estado en la página Implementaciones de soluciones muestra Error y el registro de Cloud Build muestra la causa del error.
  • Después de implementar una solución mediante la CLI de Terraform, si cambia cualquier recurso mediante una interfaz que no sea de Terraform (por ejemplo, la consola) y luego intenta eliminar la implementación, es posible que la eliminación falle. Los mensajes en la salida del comando terraform destroy muestran la causa del error.

Revise los registros y mensajes de error, identifique y elimine los recursos que causaron el error y luego intente eliminar la implementación nuevamente.

Si una implementación basada en consola no se elimina y no puede diagnosticar el error mediante el registro de Cloud Build, puede eliminar la implementación mediante la CLI de Terraform, como se describe en la siguiente sección.

Eliminar una implementación basada en consola mediante la CLI de Terraform

Esta sección describe cómo eliminar una implementación basada en consola si se producen errores al intentar eliminarla a través de la consola. En este enfoque, descarga la configuración de Terraform para la implementación que desea eliminar y luego usa la CLI de Terraform para eliminar la implementación.

  1. Identifique la región donde se almacenan el código Terraform, los registros y otros datos de la implementación. Esta región puede ser diferente de la región que seleccionó al implementar la solución.

    1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

      Ir a implementaciones de soluciones

    2. Seleccione el proyecto que contiene la implementación que desea eliminar.

    3. En la lista de implementaciones, identifique la fila de la implementación que desea eliminar.

    4. Haga clic en Ver todo el contenido de la fila .

    5. En la columna Ubicación , observe la segunda ubicación, como se resalta en el siguiente ejemplo:

      Ubicación del código de implementación, registros y otros artefactos.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Cree variables de entorno para el ID del proyecto, la región y el nombre de la implementación que desea eliminar:

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    En estos comandos, reemplace lo siguiente:

    • REGION : la ubicación que anotó anteriormente en este procedimiento.
    • PROJECT_ID : el ID del proyecto donde implementó la solución.
    • DEPLOYMENT_NAME : el nombre de la implementación que desea eliminar.
  4. Obtenga el ID de la última revisión de la implementación que desea eliminar:

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    El resultado es similar al siguiente:

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Obtenga la ubicación de Cloud Storage de la configuración de Terraform para la implementación:

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    El siguiente es un ejemplo del resultado de este comando:

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Descargue la configuración de Terraform desde Cloud Storage a Cloud Shell:

    gcloud storage cp $CONTENT_PATH $HOME --recursive
    cd $HOME/content/infra
    

    Espere hasta que aparezca el mensaje Operation completed , como se muestra en el siguiente ejemplo:

    Operation completed over 45 objects/268.5 KiB
    
  7. Inicializar Terraform:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    
  8. Elimine los recursos implementados:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

    Si se muestra alguna advertencia sobre variables no declaradas, ignórela.

  9. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    
  10. Elimine el artefacto de implementación:

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Espere unos segundos y luego verifique que se eliminó el artefacto de implementación:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Si el resultado muestra null , espere unos segundos y luego ejecute el comando nuevamente.

    Una vez eliminado el artefacto de implementación, se muestra un mensaje como el que se muestra en el siguiente ejemplo:

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

No se puede asignar el error de dirección solicitada

Cuando ejecuta el comando terraform apply , es posible que se produzca un error cannot assign requested address , con un mensaje como el siguiente:

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

Si se produce este error, ejecute nuevamente el comando terraform apply .

Enviar comentarios

Las soluciones Jump Start tienen fines informativos únicamente y no son productos con soporte oficial. Google puede cambiar o eliminar soluciones sin previo aviso.

Para solucionar errores, revise los registros de Cloud Build y la salida de Terraform.

Para enviar comentarios, haga lo siguiente:

  • Para obtener documentación, tutoriales en la consola o la solución, utilice el botón Enviar comentarios en la página.
  • Para código no modificado, cree problemas en el repositorio de GitHub correspondiente:

    Los problemas de GitHub se revisan según el mejor esfuerzo y no están destinados a preguntas de uso general.

¿Qué sigue?

Para seguir aprendiendo más sobre Google Cloud productos y capacidades, consulte:

,

Esta guía le ayuda a comprender, implementar y utilizar la aplicación web dinámica con Python y JavaScript Jump Start Solution. Esta solución demuestra cómo crear y ejecutar sitios web dinámicos en Google Cloud.

La implementación y administración de esta aplicación sirve como ejemplo de implementación en el mundo real de la creación de una aplicación web dinámica con muchas de las herramientas y productos que puede usar para aplicaciones sin servidor. Puede implementar esta solución si desea obtener información sobre lo siguiente:

  • Aplicación del marco REST de Django (DRF)
  • Aplicación de escaparate
  • Sitio web respaldado por bases de datos

Esta solución implementa la aplicación Avocano . Se trata de una tienda falsa, donde los usuarios pueden intentar comprar un artículo. Sin embargo, si un usuario agrega un artículo a su carrito, la tienda revela que es falso (Avoca, ¡no!). Aunque los usuarios en realidad no pueden comprar un aguacate, la aplicación ilustra la gestión de inventario al disminuir en uno la cantidad de producto disponible.

Avocano muestra la combinación de una API basada en Cloud Run, una base de datos Cloud SQL para PostgreSQL y una interfaz Firebase.

Consulte el código fuente de la aplicación Avocano .

Objetivos

Esta guía de solución le ayudará a aprender a utilizar Google Cloud para realizar las siguientes tareas:

  • Implementar una aplicación web de acceso público
    • Conectar una aplicación a un Google Cloud base de datos siguiente Google CloudPrácticas de seguridad recomendadas por:
      • Usar Secret Manager para almacenar contraseñas, claves y certificados.
      • Otorgar solo los permisos de IAM necesarios para realizar la tarea. Esto también se conoce como aplicación del principio de privilegio mínimo.
    • Implementar y operar los servicios backend.
  • Personaliza tu aplicación
    • Realice cambios de contenido o modifique la aplicación para agregar una función.
    • Compile y vuelva a implementar de forma segura.

Productos utilizados

El siguiente es un resumen de la Google Cloud Productos que utiliza esta solución:

  • Cloud Run : un servicio totalmente administrado que le permite crear e implementar aplicaciones en contenedores sin servidor. Google Cloud maneja el escalado y otras tareas de infraestructura para que usted pueda concentrarse en la lógica empresarial de su código.
    • Jobs : Procesamiento de tareas basado en contenedores.
  • Cloud Build : un servicio que le permite importar código fuente desde repositorios o espacios de Cloud Storage, ejecutar una compilación y producir artefactos como contenedores Docker o archivos Java.
  • Cloud SQL para PostgreSQL : una base de datos de PostgreSQL basada en la nube que se administra completamente en el Google Cloudinfraestructura.
  • Secret Manager : un servicio que le permite almacenar, administrar y acceder a secretos como blobs binarios o cadenas de texto. Puede utilizar Secret Manager para almacenar contraseñas de bases de datos, claves API o certificados TLS que necesita una aplicación en tiempo de ejecución.
  • Almacenamiento en la nube : un servicio listo para la empresa que proporciona almacenamiento de objetos sin límites y de bajo costo para diversos tipos de datos. Los datos son accesibles desde dentro y fuera deGoogle Cloud y se replica de forma georredundante.
  • Firebase : una plataforma de desarrollo que le permite crear, lanzar y monitorear aplicaciones para iOS, Android y la web.

Arquitectura

El siguiente diagrama muestra la arquitectura de la solución:

Aplicación web dinámica usando el diagrama de arquitectura Django.

Componentes y configuración

La arquitectura incluye los siguientes componentes:

  1. El cliente web está alojado en Firebase Hosting.
  2. El cliente web llama a un backend de API escrito en Python que se ejecuta como un servicio en Cloud Run.
  3. La configuración y otros secretos de la aplicación Python se almacenan en Secret Manager.
  4. Cloud SQL para PostgreSQL se utiliza como backend de base de datos relacional para la aplicación Python.
  5. Los activos estáticos para la aplicación y las imágenes del contenedor se almacenan en Cloud Storage.

Costo

Para una estimación del costo de la Google Cloud recursos que utiliza la solución de aplicación web dinámica, consulte la estimación precalculada en la Google Cloud Calculadora de precios .

Utilice la estimación como punto de partida para calcular el costo de su implementación. Puede modificar la estimación para reflejar cualquier cambio de configuración que planee realizar para los recursos que se utilizan en la solución.

La estimación precalculada se basa en supuestos para ciertos factores, incluidos los siguientes:

  • El Google Cloud Lugares donde se despliegan los recursos.
  • La cantidad de tiempo que se utilizan los recursos.

Antes de comenzar

Para implementar esta solución, primero necesita un Google Cloud proyecto y algunos permisos de IAM.

Crea o elige un Google Cloud proyecto

Cuando implementas la solución, eliges el Google Cloud proyecto donde se despliegan los recursos. Puede crear un nuevo proyecto o utilizar un proyecto existente para la implementación.

Si desea crear un nuevo proyecto, hágalo antes de comenzar la implementación. El uso de un nuevo proyecto puede ayudar a evitar conflictos con recursos previamente aprovisionados, como los recursos que se utilizan para cargas de trabajo de producción.

Para crear un proyecto, complete los siguientes pasos:

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

Obtenga los permisos de IAM necesarios

Para iniciar el proceso de implementación, necesita los permisos de Administración de acceso e identidad (IAM) que se enumeran en la siguiente tabla.

Si creó un nuevo proyecto para esta solución, entonces tiene el rol básico de roles/owner en ese proyecto y tiene todos los permisos necesarios. Si no tiene los roles/owner , solicite a su administrador que le otorgue estos permisos (o los roles que incluyen estos permisos).

Se requiere permiso de IAM Rol predefinido que incluye los permisos necesarios

serviceusage.services.enable

Administrador de uso del servicio
( roles/serviceusage.serviceUsageAdmin )

iam.serviceAccounts.create

Administrador de cuenta de servicio
( roles/iam.serviceAccountAdmin )

resourcemanager.projects.setIamPolicy

Administrador de IAM del proyecto
( roles/resourcemanager.projectIamAdmin )
config.deployments.create
config.deployments.list
Administrador del administrador de infraestructura en la nube
( roles/config.admin )
iam.serviceAccount.actAs Usuario de cuenta de servicio
( roles/iam.serviceAccountUser )

Acerca de los permisos temporales de cuentas de servicio

Si inicia el proceso de implementación a través de la consola, Google crea una cuenta de servicio para implementar la solución en su nombre (y eliminar la implementación más adelante, si así lo desea). A esta cuenta de servicio se le asignan temporalmente ciertos permisos de IAM; es decir, los permisos se revocan automáticamente una vez completadas las operaciones de implementación y eliminación de la solución. Google recomienda que después de eliminar la implementación, elimine la cuenta de servicio, como se describe más adelante en esta guía.

Ver los roles asignados a la cuenta de servicio

Estos roles se enumeran aquí en caso de que un administrador de suGoogle Cloud proyecto u organización necesita esta información.

  • roles/cloudsql.admin
  • roles/cloudsql.admin
  • roles/firebasehosting.admin
  • roles/iam.serviceAccountAdmin
  • roles/iam.serviceAccountUser
  • roles/resourcemanager.projectIamAdmin
  • roles/run.admin
  • roles/secretmanager.admin
  • roles/storage.admin
  • roles/compute.networkAdmin
  • roles/compute.admin

Implementar la solución

Para ayudarle a implementar esta solución con el mínimo esfuerzo, se proporciona una configuración de Terraform en GitHub. La configuración de Terraform define todos losGoogle Cloud recursos que se requieren para la solución.

Puede implementar la solución mediante uno de los siguientes métodos:

  • A través de la consola : utilice este método si desea probar la solución con la configuración predeterminada y ver cómo funciona. Cloud Build implementa todos los recursos necesarios para la solución. Cuando ya no necesite la solución implementada, puede eliminarla a través de la consola. Es posible que sea necesario eliminar por separado todos los recursos que cree después de implementar la solución.

    Para utilizar este método de implementación, siga las instrucciones en Implementación a través de la consola .

  • Uso de Terraform CLI : utilice este método si desea personalizar la solución o si desea automatizar el aprovisionamiento y la administración de los recursos mediante el enfoque de infraestructura como código (IaC). Descargue la configuración de Terraform desde GitHub,, opcionalmente, personalice el código según sea necesario y luego implemente la solución mediante la CLI de Terraform. Después de implementar la solución, puede continuar usando Terraform para administrarla.

    Para utilizar este método de implementación, siga las instrucciones en Implementar mediante la CLI de Terraform .

Implementar a través de la consola

Complete los siguientes pasos para implementar la solución preconfigurada.

  1. En el Google Cloud Catálogo de Jump Start Solutions, vaya a la solución Aplicación web dinámica con Python y JavaScript .

    Ir a la solución Aplicación web dinámica con Python y JavaScript

  2. Revise la información que se proporciona en la página, como el costo estimado de la solución y el tiempo estimado de implementación.

  3. Cuando esté listo para comenzar a implementar la solución, haga clic en Implementar .

    Se muestra un panel de configuración paso a paso.

  4. Complete los pasos en el panel de configuración.

    Anote el nombre que ingresa para la implementación. Este nombre será necesario más adelante cuando elimine la implementación.

    Al hacer clic en Implementar , se muestra la página Implementaciones de soluciones . El campo Estado de esta página muestra Implementando .

  5. Espere a que se implemente la solución.

    Si la implementación falla, el campo Estado muestra Error . Puede utilizar el registro de Cloud Build para diagnosticar los errores. Para obtener más información, consulte Errores al implementar a través de la consola .

    Una vez completada la implementación, el campo Estado cambia a Implementado .

  6. Para ver y utilizar la solución, haga clic en el menú Acciones more_vert y seleccione Explorar esta solución .

    Para obtener más información sobre cómo explorar la implementación de su solución, consulte Explorar su implementación .

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Implementar usando la CLI de Terraform

Esta sección describe cómo puede personalizar la solución o automatizar el aprovisionamiento y la administración de la solución mediante Terraform CLI. Las soluciones que implementa mediante la CLI de Terraform no se muestran en la página Implementaciones de soluciones en la Google Cloud consola.

Configurar el cliente Terraform

Puede ejecutar Terraform en Cloud Shell o en su host local. Esta guía describe cómo ejecutar Terraform en Cloud Shell, que tiene Terraform preinstalado y configurado para autenticarse con Google Cloud.

El código Terraform para esta solución está disponible en un repositorio de GitHub.

  1. Clona el repositorio de GitHub en Cloud Shell.

    Abrir en Cloud Shell

    Se muestra un mensaje para confirmar la descarga del repositorio de GitHub a Cloud Shell.

  2. Haga clic en Confirmar .

    Cloud Shell se inicia en una pestaña separada del navegador y el código Terraform se descarga en el directorio $HOME/cloudshell_open de su entorno de Cloud Shell.

  3. En Cloud Shell, verifique si el directorio de trabajo actual es $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Este es el directorio que contiene los archivos de configuración de Terraform para la solución. Si necesita cambiar a ese directorio, ejecute el siguiente comando:

    cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
    
  4. Inicialice Terraform ejecutando el siguiente comando:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    

Configurar las variables de Terraform

El código de Terraform que descargó incluye variables que puede usar para personalizar la implementación según sus requisitos. Por ejemplo, puede especificar el Google Cloud proyecto y la región donde desea que se implemente la solución.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. En el mismo directorio, cree un archivo de texto llamado terraform.tfvars .

  3. En el archivo terraform.tfvars , copie el siguiente fragmento de código y establezca valores para las variables requeridas.

    • Siga las instrucciones que se proporcionan como comentarios en el fragmento de código.
    • Este fragmento de código incluye solo las variables para las que debe establecer valores. La configuración de Terraform incluye otras variables que tienen valores predeterminados. Para revisar todas las variables y los valores predeterminados, consulte el archivo variables.tf que está disponible en el directorio $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra .
    • Asegúrese de que cada valor que establezca en el archivo terraform.tfvars coincida con el tipo de variable declarado en el archivo variables.tf . Por ejemplo, si el tipo definido para una variable en el archivo variables.tf es bool , debe especificar true o false como valor de esa variable en el archivo terraform.tfvars .
    # ID of the project in which you want to deploy the solution.
    project_id = "PROJECT_ID"
    
    # Google Cloud region where you want to deploy the solution.
    # Example: us-central1
    region = "REGION"
    
    # Whether or not to enable underlying APIs in this solution.
    # Example: true
    enable_apis = "ENABLE_APIS"
    
    # Initial image to deploy to Cloud Run service.
    # Example: gcr.io/hsa-public/developer-journey/app
    initial_run_image = "INITIAL_RUN_IMAGE"
    
    # Identifier for the deployment. Used in some resource names.
    # Example: dev-journey
    deployment_name = "DEPLOYMENT_NAME"
    
    # Whether or not to initialize a Firestore instance.
    # Example: true
    init_firestore = "INIT_FIRESTORE"
    

Para obtener información sobre los valores que puede asignar a las variables requeridas, consulte lo siguiente:

  • project_id : Identificación de proyectos .
  • regions : Regiones disponibles .
  • enable_apis : configúrelo en true para habilitar las API subyacentes en esta solución.
  • initial_run_image : la URL de la imagen inicial que se implementará en el servicio Cloud Run.
  • deployment_name : Identificador de la implementación.
  • init_firestore : configúrelo en true para habilitar la inicialización de una instancia de Firestore.

Validar y revisar la configuración de Terraform

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Verifique que la configuración de Terraform no tenga errores:

    terraform validate
    

    Si el comando devuelve algún error, realice las correcciones necesarias en la configuración y luego ejecute el comando terraform validate nuevamente. Repita este paso hasta que el comando devuelva el siguiente mensaje:

    Success! The configuration is valid.
    
  3. Revise los recursos que están definidos en la configuración:

    terraform plan
    
  4. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    El resultado del comando terraform plan es una lista de los recursos que Terraform aprovisiona cuando aplica la configuración.

    Si desea realizar algún cambio, edite la configuración y luego ejecute los comandos terraform validate y terraform plan nuevamente.

Aprovisionar los recursos

Cuando no sean necesarios más cambios en la configuración de Terraform, implemente los recursos.

  1. Asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Aplique la configuración de Terraform:

    terraform apply
    
  3. Terraform le solicita que ingrese valores para las variables que no tienen valores predeterminados. Introduzca los valores requeridos.

    Terraform muestra una lista de los recursos que se crearán.

  4. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso de la implementación.

    Si no se puede completar la implementación, Terraform muestra los errores que causaron la falla. Revise los mensajes de error y actualice la configuración para corregir los errores. Luego ejecute nuevamente el comando terraform apply . Para obtener ayuda con la solución de errores de Terraform, consulte Errores al implementar la solución mediante la CLI de Terraform .

    Una vez creados todos los recursos, Terraform muestra el siguiente mensaje:

    Apply complete!
    

Cuando ya no necesite la solución, puede eliminar la implementación para evitar la facturación continua por la Google Cloud recursos. Para obtener más información, consulte Eliminar la implementación .

Explora tu implementación

Ha implementado su aplicación web dinámica de muestra. La implementación de su solución consta de múltiples servicios primarios que se han integrado en un único Google Cloud proyecto, incluyendo lo siguiente:

  • Una interfaz de cliente de Firebase Hosting, escrita utilizando el marco Lit.
  • Un servidor API de Cloud Run, escrito en Django utilizando Django REST Framework .
  • Una base de datos Cloud SQL, usando PostgreSQL .

Para ver el Google Cloud Recursos que se despliegan y su configuración, realice un recorrido interactivo.

Iniciar el recorrido

Opcional: personaliza tu aplicación

Para personalizar la aplicación web dinámica con la solución Python y JavaScript, puede realizar cambios en el frontend y el backend de la aplicación y luego volver a implementarla. Para seguir las instrucciones paso a paso para esta tarea directamente en Cloud Shell Editor, haga clic en Guíame.

Esta tarea tarda unos 15 minutos en completarse.

Guíame

Eliminar la implementación

Cuando ya no necesite la implementación de la solución, para evitar la facturación continua de los recursos que creó, elimine la implementación.

Eliminar la implementación a través de la consola.

Utilice este procedimiento si implementó la solución a través de la consola.

  1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

    Ir a implementaciones de soluciones

  2. Seleccione el proyecto que contiene la implementación que desea eliminar.

  3. Localice la implementación que desea eliminar.

  4. En la fila de la implementación, haga clic en Acciones y luego seleccione Eliminar .

    Es posible que tengas que desplazarte para ver Acciones en la fila.

  5. Ingrese el nombre de la implementación y luego haga clic en Confirmar .

    El campo Estado muestra Eliminando .

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Eliminar la implementación mediante la CLI de Terraform

Utilice este procedimiento si implementó la solución mediante la CLI de Terraform.

  1. En Cloud Shell, asegúrese de que el directorio de trabajo actual sea $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra . Si no es así, vaya a ese directorio.

  2. Elimine los recursos que fueron aprovisionados por Terraform:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

  3. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    

    Si la eliminación falla, consulte la guía de solución de problemas en Error al eliminar una implementación .

Cuando ya no necesites el Google Cloud proyecto que utilizó para la solución, puede eliminar el proyecto. Para obtener más información, consulte Opcional: eliminar el proyecto .

Opcional: eliminar el proyecto

Si implementó la solución en un nuevo Google Cloud proyecto y, si ya no lo necesita, elimínelo completando los siguientes pasos:

  1. En el Google Cloud consola, vaya a la página Administrar recursos .

    Ir a Administrar recursos

  2. En la lista de proyectos, seleccione el proyecto que desea eliminar y luego haga clic en Eliminar .
  3. Cuando se le solicite, escriba el ID del proyecto y luego haga clic en Apagar .

Si decide conservar el proyecto, elimine la cuenta de servicio que se creó para esta solución, como se describe en la siguiente sección.

Opcional: eliminar la cuenta de servicio

Si eliminó el proyecto que utilizó para la solución, omita esta sección.

Como se mencionó anteriormente en esta guía, cuando implementó la solución, se creó una cuenta de servicio en su nombre. A la cuenta de servicio se le asignaron ciertos permisos de IAM temporalmente ; es decir, los permisos se revocaron automáticamente después de que se completaron las operaciones de implementación y eliminación de la solución, pero la cuenta de servicio no se elimina. Google recomienda que elimine esta cuenta de servicio.

  • Si implementó la solución a través del Google Cloud consola, vaya a la página Implementaciones de soluciones . (Si ya está en esa página, actualice el navegador). Se activa un proceso en segundo plano para eliminar la cuenta de servicio. No es necesaria ninguna otra acción.

  • Si implementó la solución mediante la CLI de Terraform, complete los siguientes pasos:

    1. En el Google Cloud consola, vaya a la página Cuentas de servicio .

      Ir a cuentas de servicio

    2. Seleccione el proyecto que utilizó para la solución.

    3. Seleccione la cuenta de servicio que desea eliminar.

      El ID de correo electrónico de la cuenta de servicio que se creó para la solución tiene el siguiente formato:

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
      

      El ID de correo electrónico contiene los siguientes valores:

      • DEPLOYMENT_NAME : el nombre de la implementación.
      • NNN : un número aleatorio de 3 dígitos.
      • PROJECT_ID : el ID del proyecto en el que implementó la solución.
    4. Haga clic en Eliminar .

Solucionar errores

Las acciones que puede realizar para diagnosticar y resolver errores dependen del método de implementación y de la complejidad del error.

Errores al implementar a través de la consola

Si la implementación falla cuando usa la consola, haga lo siguiente:

  1. Vaya a la página Implementaciones de soluciones .

    Si la implementación falló, el campo Estado muestra Error .

  2. Vea los detalles de los errores que causaron la falla:

    1. En la fila de la implementación, haga clic en Acciones .

      Es posible que tengas que desplazarte para ver Acciones en la fila.

    2. Seleccione Ver registros de Cloud Build .

  3. Revise el registro de Cloud Build y tome las medidas adecuadas para resolver el problema que provocó la falla.

Errores al implementar usando la CLI de Terraform

Si la implementación falla cuando usa Terraform, el resultado del comando terraform apply incluye mensajes de error que puede revisar para diagnosticar el problema.

Los ejemplos de las siguientes secciones muestran errores de implementación que puede encontrar al utilizar Terraform.

Error de API no habilitada

Si crea un proyecto y luego intenta implementar inmediatamente la solución en el nuevo proyecto, la implementación podría fallar con un error como el siguiente:

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Si se produce este error, espere unos minutos y luego ejecute nuevamente el comando terraform apply .

Error al eliminar una implementación

En determinados casos, los intentos de eliminar una implementación pueden fallar:

  • Después de implementar una solución a través de la consola, si cambia algún recurso que fue aprovisionado por la solución y luego intenta eliminar la implementación, es posible que la eliminación falle. El campo Estado en la página Implementaciones de soluciones muestra Error y el registro de Cloud Build muestra la causa del error.
  • Después de implementar una solución mediante la CLI de Terraform, si cambia cualquier recurso mediante una interfaz que no sea de Terraform (por ejemplo, la consola) y luego intenta eliminar la implementación, es posible que la eliminación falle. Los mensajes en la salida del comando terraform destroy muestran la causa del error.

Revise los registros y mensajes de error, identifique y elimine los recursos que causaron el error y luego intente eliminar la implementación nuevamente.

Si una implementación basada en consola no se elimina y no puede diagnosticar el error mediante el registro de Cloud Build, puede eliminar la implementación mediante la CLI de Terraform, como se describe en la siguiente sección.

Eliminar una implementación basada en consola mediante la CLI de Terraform

Esta sección describe cómo eliminar una implementación basada en consola si se producen errores al intentar eliminarla a través de la consola. En este enfoque, descarga la configuración de Terraform para la implementación que desea eliminar y luego usa la CLI de Terraform para eliminar la implementación.

  1. Identifique la región donde se almacenan el código Terraform, los registros y otros datos de la implementación. Esta región puede ser diferente de la región que seleccionó al implementar la solución.

    1. En el Google Cloud consola, vaya a la página Implementaciones de soluciones .

      Ir a implementaciones de soluciones

    2. Seleccione el proyecto que contiene la implementación que desea eliminar.

    3. En la lista de implementaciones, identifique la fila de la implementación que desea eliminar.

    4. Haga clic en Ver todo el contenido de la fila .

    5. En la columna Ubicación , observe la segunda ubicación, como se resalta en el siguiente ejemplo:

      Ubicación del código de implementación, registros y otros artefactos.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Cree variables de entorno para el ID del proyecto, la región y el nombre de la implementación que desea eliminar:

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    En estos comandos, reemplace lo siguiente:

    • REGION : la ubicación que anotó anteriormente en este procedimiento.
    • PROJECT_ID : el ID del proyecto donde implementó la solución.
    • DEPLOYMENT_NAME : el nombre de la implementación que desea eliminar.
  4. Obtenga el ID de la última revisión de la implementación que desea eliminar:

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    El resultado es similar al siguiente:

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Obtenga la ubicación de Cloud Storage de la configuración de Terraform para la implementación:

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    El siguiente es un ejemplo del resultado de este comando:

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Descargue la configuración de Terraform desde Cloud Storage a Cloud Shell:

    gcloud storage cp $CONTENT_PATH $HOME --recursive
    cd $HOME/content/infra
    

    Espere hasta que aparezca el mensaje Operation completed , como se muestra en el siguiente ejemplo:

    Operation completed over 45 objects/268.5 KiB
    
  7. Inicializar Terraform:

    terraform init
    

    Espere hasta que vea el siguiente mensaje:

    Terraform has been successfully initialized!
    
  8. Elimine los recursos implementados:

    terraform destroy
    

    Terraform muestra una lista de los recursos que serán destruidos.

    Si se muestra alguna advertencia sobre variables no declaradas, ignórela.

  9. Cuando se le solicite realizar las acciones, ingrese yes .

    Terraform muestra mensajes que muestran el progreso. Una vez eliminados todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    
  10. Elimine el artefacto de implementación:

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Espere unos segundos y luego verifique que se eliminó el artefacto de implementación:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Si el resultado muestra null , espere unos segundos y luego ejecute el comando nuevamente.

    Una vez eliminado el artefacto de implementación, se muestra un mensaje como el que se muestra en el siguiente ejemplo:

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

No se puede asignar el error de dirección solicitada

Cuando ejecuta el comando terraform apply , es posible que se produzca un error cannot assign requested address , con un mensaje como el siguiente:

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

Si se produce este error, ejecute nuevamente el comando terraform apply .

Enviar comentarios

Las soluciones Jump Start tienen fines informativos únicamente y no son productos con soporte oficial. Google puede cambiar o eliminar soluciones sin previo aviso.

Para solucionar errores, revise los registros de Cloud Build y la salida de Terraform.

Para enviar comentarios, haga lo siguiente:

  • Para obtener documentación, tutoriales en la consola o la solución, utilice el botón Enviar comentarios en la página.
  • Para código no modificado, cree problemas en el repositorio de GitHub correspondiente:

    Los problemas de GitHub se revisan según el mejor esfuerzo y no están destinados a preguntas de uso general.

¿Qué sigue?

Para seguir aprendiendo más sobre Google Cloud productos y capacidades, consulte: