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, según las métricas de Google Cloud Observability, para garantizar que la aplicación funcione como se espera.

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 de entrega y destino de Cloud Deploy.

    Esta canalización incluye solo una etapa y usa solo un destino, y también incluye la definición de un trabajo de análisis.

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

    Una vez que se implementa la aplicación, el análisis se ejecuta como un trabajo en el lanzamiento.

    El servicio debería implementarse correctamente en el destino, pero el lanzamiento 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 versión nueva.

    Esta vez, el servicio se implementará correctamente y el lanzamiento se completará de forma correcta.

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. 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

  3. 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.

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

  5. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  6. Instala Google Cloud CLI.

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

  8. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  9. 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

  10. 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.

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

  12. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  13. Instala Google Cloud CLI.

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

  15. 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 los permisos necesarios a la cuenta de servicio de Cloud Deploy mediante roles personalizados o con 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 Cloud Run ya exista. 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 por el ID del proyecto.

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

Esta verificación de tiempo de actividad supervisa tu 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 muestra, y también definirás el archivo service.yaml que define 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 siguiente contenido:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
  rawYaml:
  - service.yaml
deploy:
  cloudrun: {}

Consulta la referencia de skaffold.yamlpara 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 falla en 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 por el ID del proyecto.

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

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

Crea la canalización de entrega y el 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 YAML, reemplaza ALERT_POLICY_ID por el resultado del comando gcloud monitoring policies list que ejecutaste antes, y reemplaza PROJECT_ID por el ID del proyecto que estás usando.

  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 Google Cloud consola, 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 que aparece 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 Arquitectura de servicios 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 de 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

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

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 destino configurado para esta canalización de entrega.

Consulta los resultados en la Google Cloud consola

Después de unos minutos, tu versión se implementa en el entorno de ejecución de destino. Puedes verla.

  1. En la Google Cloud consola, 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 solo un 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.

    El 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 está diseñado para fallar, ya que la política de alertas debería activar una alerta. El lanzamiento fallará debido a esta falla 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, cambiamos el recuento de instancias en la definición del servicio, de modo 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 otra 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, el lanzamiento debería tener éxito. 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.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu Google Cloud cuenta de 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?