Cómo definir un análisis personalizado

Cloud Deploy admite trabajos de análisis que usan alertas generadas por Google Cloud Observability en función de métricas y otros datos también de Google Cloud Observability. Sin embargo, también puedes extender Cloud Deploy para usar otros proveedores de métricas. En este documento, se describe cómo configurar y usar un trabajo de análisis, y los requisitos para un contenedor personalizado que incluya la lógica para analizar las métricas del proveedor que elijas.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Instala Google Cloud CLI.

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

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

    gcloud init
  5. Verifica que tengas los permisos necesarios para completar esta guía.

  6. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

  7. Habilita las APIs de Compute Engine y Cloud Deploy:

    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.

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. Instala Google Cloud CLI.

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

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

    gcloud init
  11. Verifica que tengas los permisos necesarios para completar esta guía.

  12. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

  13. Habilita las APIs de Compute Engine y Cloud Deploy:

    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.

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

Roles obligatorios

Para obtener los permisos que necesitas para crear y usar trabajos de análisis, pídele a tu administrador que te otorgue los siguientes roles de IAM en la cuenta de tu proyecto:

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

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Para garantizar que la cuenta de servicio de Cloud Deploy tenga los permisos necesarios para crear y usar trabajos de análisis, 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.

Configura un trabajo de análisis personalizado

Un trabajo de análisis personalizado es igual a un trabajo de análisis que usa alertas de Google Cloud Observability, pero el trabajo personalizado usa una o más tareas que hacen referencia a contenedores personalizados y a los comandos para ejecutar en esos contenedores y procesar datos de tu proveedor de métricas.

En esta sección, se describe cómo configurar un trabajo de análisis de Cloud Deploy que usa un proveedor de supervisión que no es deGoogle Cloud .

La sección analysis se puede usar directamente dentro de la configuración de una estrategia de implementación (strategy.standard.analysis, para una estrategia estándar). Si deseas configurar el análisis por fase, usa una versión canary personalizada (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis).

strategy:
  standard:
    analysis:
      duration: DURATION
      customChecks:
      - id: CHECK_ID
        frequency: FREQUENCY
        task:
          type: container
          image: IMAGE_NAME
          command: COMMAND
          args: [ARGS]
          env:
            [VAR_NAME: VALUE]

Aquí:

  • DURATION

    Es la duración, en segundos, del trabajo de análisis. Una vez que vence el plazo, el trabajo finaliza. Si el análisis falla (el contenedor devuelve un código de salida distinto de cero), el trabajo finaliza (FAILED) antes de que venza la duración.

  • CHECK_ID

    Es un ID para la verificación individual. Este ID debe ser único dentro de este trabajo de análisis.

  • FREQUENCY

    Es la frecuencia con la que se ejecuta la verificación individual, expresada en segundos.

  • IMAGE_NAME

    Es la ruta de acceso y el nombre que identifican tu imagen de contenedor.

  • COMMAND

    Es el comando que se ejecutará en ese contenedor, por ejemplo, una secuencia de comandos de shell (/bin/bash).

  • ARGS

    Es una lista de argumentos para ese comando. Esta es una lista separada por comas. Si tu COMMAND_TO_RUN es "/bin/sh", uno de los argumentos aquí sería -c, y otro argumento sería todo el comando que deseas ejecutar en el shell que invocas.

  • VAR_NAME

    Es el nombre de una variable de entorno que se pasará al contenedor. Usas variables de entorno para configurar el comportamiento del contenedor. Es decir, las variables y sus valores le indican al contenedor qué supervisar específicamente en el proveedor de métricas.

    Aquí puedes usar parámetros del sistema como variables de entorno.

  • VALUE

    Es el valor de cada variable de entorno. Cloud Deploy no hace nada con estas variables de entorno, excepto pasarlas, con sus valores, a tu contenedor. Tu contenedor es el encargado de usar los valores en tu lógica de análisis.

Cada verificación en una definición de análisis personalizado incluye una tarea que hace referencia a un contenedor, los comandos que se ejecutarán en ese contenedor y las variables de entorno aplicables que se pasarán a ese contenedor.

El contenedor personalizado

En el caso del análisis personalizado, el contenedor que proporcionas es responsable de analizar la telemetría, los registros o cualquier otro dato del proveedor de métricas que utilices. El trabajo de análisis de Cloud Deploy espera el código de retorno del contenedor.

Qué debe hacer el contenedor personalizado

El contenedor personalizado es responsable de transferir datos de tu proveedor de métricas, determinar si las métricas, los registros o cualquier otro dato indican que la aplicación funciona correctamente y devolver los resultados a Cloud Deploy.

Qué debe devolver el contenedor personalizado

Cloud Deploy no requiere nada del contenedor personalizado, más allá de que devuelva un código de salida cero o distinto de cero. Si el contenedor devuelve un código de salida distinto de cero, el análisis falla.

El contenedor puede escribir los resultados en un archivo llamado results.json (en formato JSON), ubicado en el bucket de Cloud Storage que proporciona Cloud Deploy. El archivo contendrá los metadatos en forma de pares clave-valor. No es obligatorio.

Variables de entorno disponibles

Cloud Deploy también proporciona y completa las siguientes variables de entorno en el entorno de ejecución. Puedes usar estas variables de entorno como parte de tu gancho de implementación, trabajo de verificación o destino personalizado de renderización o implementación.

  • ANTHOS_MEMBERSHIP

    Para los destinos de tipo ANTHOS, es el nombre del recurso completamente especificado de la membresía de Anthos.

  • CLOUD_RUN_LOCATION

    Para los destinos de tipo RUN, es la región en la que se implementa el servicio de Cloud Run.

  • CLOUD_RUN_PROJECT

    Para los destinos de tipo RUN, es el proyecto en el que se creó el servicio de Cloud Run.

  • CLOUD_RUN_SERVICE

    Para los destinos de tipo RUN, es el nombre del servicio de Cloud Run implementado.

  • CLOUD_RUN_SERVICE_URLS

    Para los destinos de tipo RUN, son las URLs (lista separada por comas) que los usuarios finales usarán para acceder a tu servicio. Puedes encontrarlos en los detalles del servicio de Cloud Run de tu servicio, en la consola deGoogle Cloud . Cloud Run genera las URLs después de que se implementan correctamente tus servicios de Cloud Run. Por lo tanto, esta variable de entorno solo está disponible en los hooks posteriores a la implementación y en los trabajos de verificación.

  • CLOUD_RUN_REVISION

    Para los destinos de tipo RUN, es la revisión específica del servicio de Cloud Run.

  • GKE_CLUSTER

    Para los destinos de tipo GKE, es el nombre del recurso completamente especificado del clúster de Google Kubernetes Engine, por ejemplo, projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    Es el tipo de tiempo de ejecución específico del destino. Puede ser GKE, ANTHOS o RUN. En el caso de los objetivos personalizados, no se establecerá este parámetro.

  • CLOUD_DEPLOY_LOCATION

    Es la región que contiene los recursos de Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    Es el ID de la canalización de entrega.

  • CLOUD_DEPLOY_TARGET

    Es el ID del objetivo.

  • CLOUD_DEPLOY_PROJECT

    Número del proyecto Google Cloud que contiene los recursos de Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    ID del proyecto Google Cloud .

  • CLOUD_DEPLOY_RELEASE

    Es el ID de la versión en la que se ejecutarán los hooks.

  • CLOUD_DEPLOY_ROLLOUT

    Es el ID del lanzamiento que contiene los trabajos de los hooks.

  • CLOUD_DEPLOY_JOB_RUN

    Es el ID de la ejecución del trabajo que representa la ejecución actual del trabajo.

  • CLOUD_DEPLOY_PHASE

    Es la fase de la versión que contiene el trabajo para el gancho de implementación, el trabajo de verificación o la renderización o implementación personalizadas.

¿Qué sigue?