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 las 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 incluye la lógica para analizar 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 Google Cloud proyecto.

  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 serviceusage.services.enable permiso. Obtén 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 Google Cloud proyecto.

  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 serviceusage.services.enable permiso. Obtén 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 asegurarte de 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 con otros roles predefinidos.

Configura un trabajo de análisis personalizado

Un trabajo de análisis personalizado es igual que 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 que se ejecutan en esos contenedores para 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 que no es deGoogle Cloud supervisión.

La sección analysis se puede usar directamente dentro de una configuración de 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 el tiempo, en segundos, que se ejecuta el trabajo de análisis. Una vez que vence la duración, el trabajo finaliza. Si falla el análisis (el contenedor muestra 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, en segundos, con la que se ejecuta la verificación individual.

  • IMAGE_NAME

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

  • COMMAND

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

  • ARGS

    Es una lista de argumentos para ese comando. 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 el comando completo que deseas ejecutar en el shell que invocas.

  • VAR_NAME

    Es el nombre de una variable de entorno que se pasa 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.

    Puedes usar parámetros del sistema como variables de entorno aquí.

  • 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. Depende de tu contenedor usar los valores en tu lógica de análisis.

Cada verificación en una definición de análisis personalizada incluye una tarea que hace referencia a un contenedor, el comando o los comandos que se ejecutan en ese contenedor y las variables de entorno aplicables que se pasan a ese contenedor.

El contenedor personalizado

Para el 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 usas. 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 ingerir datos de tu proveedor de métricas, determinar si las métricas, los registros o cualquier otro dato indican una aplicación que funciona correctamente y mostrar los resultados a Cloud Deploy.

Qué debe mostrar el contenedor personalizado

Cloud Deploy no requiere nada del contenedor personalizado, excepto que muestre un código de salida cero o distinto de cero. Si el contenedor muestra un código de salida distinto de cero, el análisis falla.

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

Variables de entorno disponibles

Cloud Deploy también proporciona y propaga las siguientes variables de entorno en el entorno de ejecución. Puedes usar estas variables de entorno como parte de tu hook de implementación, verificar el trabajo, o destino personalizado renderizar o implementar.

  • ANTHOS_MEMBERSHIP

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

  • CLOUD_RUN_LOCATION

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

  • CLOUD_RUN_PROJECT

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

  • CLOUD_RUN_SERVICE

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

  • CLOUD_RUN_SERVICE_URLS

    Para los destinos de tipo RUN, la URL o las URLs (lista separada por comas) que usarán los usuarios finales para acceder a tu servicio. Puedes encontrarlas en los detalles del servicio de Cloud Run de tu servicio, en la Google Cloud consola. 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, la revisión específica del servicio de Cloud Run.

  • GKE_CLUSTER

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

  • TARGET_TYPE

    El tipo de tiempo de ejecución específico del destino. Puede ser GKE, ANTHOS o RUN. Para los destinos personalizados, no se establecerá.

  • CLOUD_DEPLOY_LOCATION

    La región que contiene los recursos de Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    El ID de la canalización de entrega.

  • CLOUD_DEPLOY_TARGET

    El ID del destino.

  • CLOUD_DEPLOY_PROJECT

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

  • CLOUD_DEPLOY_PROJECT_ID

    El ID del proyecto Google Cloud .

  • CLOUD_DEPLOY_RELEASE

    El ID del lanzamiento en el que se ejecutarán los hooks.

  • CLOUD_DEPLOY_ROLLOUT

    El ID del lanzamiento que contiene los trabajos de los hooks.

  • CLOUD_DEPLOY_JOB_RUN

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

  • CLOUD_DEPLOY_PHASE

    La fase del lanzamiento que contiene el trabajo del hook de implementación, el trabajo de verificación o la renderización o implementación personalizada.

¿Qué sigue?