Analiza tu aplicación con métricas

En esta guía de inicio rápido, se muestra cómo usar Cloud Deploy para analizar tu servicio de Cloud Run implementado, en función de las métricas de Google Cloud Observability, para garantizar que la aplicación funcione según lo previsto.

En esta guía de inicio rápido, harás lo siguiente:

  1. Crea e implementa un servicio de Cloud Run.

    En este caso, no usarás Cloud Deploy para implementarlo.

  2. Crea una verificación de tiempo de actividad en Google Cloud Observability.

    Esta verificación supervisa tu servicio de Cloud Run para asegurarse de que se esté ejecutando.

  3. Crea una política de alertas en Cloud Monitoring.

    De forma predeterminada, el análisis de Cloud Deploy puede usar muchos tipos de métricas de Google Cloud Observability. Esta política crea una alerta si una verificación de tiempo de actividad indica un problema.

  4. Crea una configuración de Skaffold para identificar el servicio de Cloud Run.

  5. Define tu canalización y destino de entrega de Cloud Deploy.

    Esta canalización incluye solo una etapa y un solo objetivo, y contiene la definición de un trabajo de análisis.

  6. Crea una versión, que se implementará automáticamente en el destino.

    Después de implementar la aplicación, el análisis se ejecuta como un trabajo en la versión.

    El servicio debería implementarse correctamente en el destino, pero la versión debería fallar porque la política de alertas generará una alerta.

  7. Cambia la definición del servicio de Cloud Run para aumentar el recuento de instancias del servicio y crear una nueva versión.

    Esta vez, el servicio se implementará correctamente y el lanzamiento se completará sin problemas.

Antes de comenzar

  • Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  • Verify that billing is enabled for your Google Cloud project.

  • Habilita las APIs de Cloud Deploy, Cloud Build, Cloud Run y Cloud Storage.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar las API

  • Instala Google Cloud CLI.

  • Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  • Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  • Verify that billing is enabled for your Google Cloud project.

  • Habilita las APIs de Cloud Deploy, Cloud Build, Cloud Run y Cloud Storage.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar las API

  • Instala Google Cloud CLI.

  • Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  • Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  • Roles obligatorios

    Para asegurarte de que la cuenta de servicio de Cloud Deploy tenga los permisos necesarios para ejecutar operaciones de Cloud Deploy y realizar implementaciones en Cloud Run, pídele a tu administrador que otorgue los siguientes roles de IAM a la cuenta de servicio de Cloud Deploy en tu proyecto:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    Es posible que tu administrador también pueda otorgar a la cuenta de servicio de Cloud Deploy los permisos necesarios a través de roles personalizados o de otros roles predefinidos.

    Obtén más información sobre la cuenta de servicio de Cloud Deploy.

    Implementa un servicio de Cloud Run

    En esta guía de inicio rápido, se usa una política de alertas que requiere que ya exista Cloud Run. Por lo tanto, implementaremos uno aquí y, en una sección posterior, definiremos un service.yaml con el mismo nombre de servicio.

    Ejecuta el siguiente comando para crear el servicio inicial:

    gcloud run deploy my-analysis-run-service \
      --image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
      --project=PROJECT_ID \
      --region=us-central1 \
      --allow-unauthenticated
    

    Reemplaza PROJECT_ID con el ID del proyecto.

    Crea una verificación de tiempo de actividad de Google Cloud Observability

    Esta verificación de tiempo de actividad supervisa el servicio en ejecución para confirmar que se esté ejecutando. En una sección posterior, crearás una política de alertas de Google Cloud Observability que generará una alerta si tu servicio no tiene al menos una instancia disponible en ejecución.

    1. Para crear la verificación de tiempo de actividad, ejecuta el siguiente comando:

      gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \
        --resource-type=cloud-run-revision \
        --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \
        --project=PROJECT_ID \
        --protocol=https \
        --path="/" \
        --port=443 \
        --period=1 \
        --timeout=10 \
        --service-agent-auth="oidc-token" \
        --status-classes="2xx"
      
    2. Copia el ID de la verificación de tiempo de actividad.

      El resultado del comando que acabas de ejecutar contiene el ID.

    Prepara la configuración de Skaffold y la definición del servicio

    En esta guía de inicio rápido, crearás un archivo skaffold.yaml, que identifica el manifiesto que se usará para implementar el servicio de Cloud Run de ejemplo, y también definirás el archivo service.yaml que define el propio Cloud Run.

    1. Abre una ventana de terminal.

    2. Crea un directorio nuevo y navega hasta él.

    mkdir deploy-analysis-run-quickstart
    cd deploy-analysis-run-quickstart
    
    1. Crea un archivo llamado skaffold.yaml con el contenido siguiente:
    apiVersion: skaffold/v4beta7
    kind: Config
    manifests:
      rawYaml:
      - service.yaml
    deploy:
      cloudrun: {}
    

    Consulta la referencia de skaffold.yaml para obtener más información sobre este archivo de configuración.

    1. Crea un archivo llamado service.yaml con el siguiente contenido.
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: my-analysis-run-service
      annotations:
        run.googleapis.com/scalingMode: manual
        run.googleapis.com/manualInstanceCount: 0
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    Este archivo es una definición de servicio de Cloud Run que se usa para implementar la aplicación. La imagen de contenedor que se implementará se establece aquí como un marcador de posición, my-app-image, que se reemplaza por la imagen específica cuando creas la versión.

    Ten en cuenta que establecimos el modo de ajuste de escala en manual y el recuento de instancias en 0. Esto significa que el servicio implementado no podrá recibir tráfico y no habrá instancias en ejecución, lo que activará una alerta. Configurarás esa alerta a continuación.

    Crea una política de alertas

    En esta guía de inicio rápido, se usa una política de alertas de Google Cloud Observability. Esta política de alertas genera una alerta cuando el servicio de Cloud Run no supera la verificación de tiempo de actividad que creaste antes.

    1. En el directorio deploy-analysis-run-quickstart, crea un archivo llamado policy.yaml con el siguiente contenido:

      displayName: Cloud Run service uptime check
      userLabels:
        policy-for: analysis-run-pipeline
      combiner: OR
      conditions:
      - displayName: Failure of uptime check UPTIME_ID
        conditionThreshold:
          filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision"
          aggregations:
          - alignmentPeriod: 60s
            crossSeriesReducer: REDUCE_COUNT_FALSE
            groupByFields:
            - resource.label.*
            perSeriesAligner: ALIGN_NEXT_OLDER
          comparison: COMPARISON_GT
          duration: 60s
          thresholdValue: 1.0
      

      Reemplaza UPTIME_ID por el ID de la verificación de tiempo de actividad que creaste antes.

    2. Ejecuta el siguiente comando para crear la política:

      gcloud monitoring policies create \
        --policy-from-file=policy.yaml\
        --project=PROJECT_ID
      

      Reemplaza PROJECT_ID con el ID del proyecto.

    3. Copia el ID de la política del resultado del comando que acabas de ejecutar.

      Esta vez, copia todo el ID de recurso, incluida la ruta de acceso. Usarás este ID en la siguiente sección, en la configuración del análisis de tu canalización de entrega.

    Crea tu canalización de entrega y tu destino

    Esta canalización de entrega tiene una etapa para un destino: analysis-staging.

    1. En el directorio deploy-analysis-run-quickstart, crea un archivo nuevo, clouddeploy.yaml, con el siguiente contenido:

      apiVersion: deploy.cloud.google.com/v1
      kind: DeliveryPipeline
      metadata:
        name: deploy-analysis-demo-app-run
      description: main application pipeline
      serialPipeline:
        stages:
        - targetId: analysis-staging
          profiles: []
          strategy:
            standard:
              analysis:
                duration: 300s
                googleCloud:
                  alertPolicyChecks:
                  - id: check-1
                    alertPolicies:
                    - ALERT_POLICY_ID
      ---
      
      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
        name: analysis-staging
      description: staging Run service
      run:
        location: projects/PROJECT_ID/locations/us-central1
      

      En este archivo YAML, reemplaza ALERT_POLICY_ID por el resultado del comando gcloud monitoring policies list que ejecutaste anteriormente y reemplaza PROJECT_ID por el ID del proyecto que usas.

    2. Registra tu canalización y destino con el servicio de Cloud Deploy:

      gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
      

      Ahora tienes una canalización de entrega, con un destino, lista para implementar tu aplicación.

    3. Confirma tu canalización y destino:

      En la consola de Google Cloud , navega a la página Canalizaciones de entrega de Cloud Deploy para ver una lista de las canalizaciones de entrega disponibles.

      Abrir la página Canalizaciones de entrega

      Se muestra la canalización de entrega que acabas de crear, con un destino enumerado en la columna Destinos.

      Página de la canalización de entrega en la consola de Google Cloud , en la que se muestra tu canalización

    Crea una versión

    Una versión es el recurso central de Cloud Deploy que representa los cambios que se implementan. La canalización de entrega define el ciclo de vida de esa versión. Consulta la arquitectura del servicio de Cloud Deploy para obtener detalles sobre ese ciclo de vida.

    Ejecuta el siguiente comando desde el directorio deploy-analysis-run-quickstart para crear un recurso release que represente la imagen del contenedor que se implementará:

    gcloud deploy releases create test-release-001 \
      --project=PROJECT_ID \
      --region=us-central1 \
      --delivery-pipeline=deploy-analysis-demo-app-run \
      --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
    

    Observa la marca --images=, que usas para reemplazar el marcador de posición (my-app-image) en la definición del servicio por la imagen específica calificada con SHA. Google recomienda que crees plantillas para tus definiciones de servicio de esta manera y que uses nombres de imágenes calificados con SHA cuando crees versiones.

    Al igual que con todas las versiones (a menos que incluyan --disable-initial-rollout), Cloud Deploy también crea automáticamente un recurso de lanzamiento. La aplicación se implementa automáticamente en el único destino configurado para esta canalización de entrega.

    Visualiza los resultados en la consola de Google Cloud

    Después de unos minutos, la versión se implementará en el entorno de ejecución de destino. Puedes verlo.

    1. En la consola de Google Cloud , navega a la página Canalizaciones de entrega de Cloud Deploy para ver tu canalización de entrega ("deploy-analysis-demo-app-run").

      Abrir la página Canalizaciones de entrega

    2. Haz clic en el nombre de tu canalización de entrega (“deploy-analysis-demo-app-run”).

      La visualización de la canalización muestra el estado de implementación de la app. Debido a que solo hay una etapa en la canalización, la visualización muestra un solo nodo.

      Visualización de la canalización de entrega que muestra el éxito

      Y la versión aparece en la pestaña Versiones, en Detalles de la canalización de entrega.

    3. Haz clic en la pestaña Lanzamientos en Detalles de la canalización de entrega.

    4. Haz clic en el nombre del lanzamiento para ver sus detalles.

      Análisis aparece como un trabajo.

      Lanzamientos en la consola de Google Cloud

    Un análisis fallido

    El trabajo de análisis que especificamos en la configuración de nuestra canalización de entrega se ejecuta como parte de este lanzamiento, después de que se implementa la aplicación. Este análisis debe fallar, ya que la política de alertas debe activar una alerta. La implementación fallará debido a este error de análisis.

    Realizaremos un cambio y, luego, crearemos otra versión, que debería tener éxito.

    Cambia la definición del servicio y crea una versión nueva

    Ahora, cambiaremos el recuento de instancias en la definición del servicio para que haya una instancia en ejecución del servicio y no se active la alerta.

    1. Edita el archivo de definición de Cloud Run, service.yaml, para cambiar el valor de run.googleapis.com/manualInstanceCount de 0 a 1.

    2. Ejecuta el siguiente comando desde el mismo directorio deploy-analysis-run-quickstart para crear otro release:

      gcloud deploy releases create test-release-002 \
        --project=PROJECT_ID \
        --region=us-central1 \
        --delivery-pipeline=deploy-analysis-demo-app-run \
        --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
      

    Esta vez, la versión debería lanzarse correctamente. Esto se debe a que tu servicio de Cloud Run ahora tiene una instancia en ejecución, por lo que la verificación de tiempo de actividad no invocará una alerta de la política de alertas.

    Realiza una limpieza

    Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.

    1. Borra el servicio de Cloud Run:

      gcloud run services delete my-analysis-run-service \
      --region=us-central1 \
      --project=PROJECT_ID
      
    2. Para borrar la canalización de entrega, el destino, la versión y el lanzamiento, ejecuta el siguiente comando desde el directorio que contiene la definición de tu canalización de entrega:

      gcloud deploy delete --file=clouddeploy.yaml \
      --force \
      --region=us-central1 \
      --project=PROJECT_ID
      
    3. Borra la política de alertas de Google Cloud Observability:

      gcloud monitoring policies delete  ALERT_POLICY_ID
      
    4. Borra los buckets de Cloud Storage que creó Cloud Deploy.

      Uno termina con _clouddeploy y el otro es [region].deploy-artifacts.[project].appspot.com.

      Abrir la página del navegador de Cloud Storage

    Eso es todo, finalizaste la guía de inicio rápido.

    ¿Qué sigue?