Usa anotaciones y etiquetas con Google Cloud Deploy

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puedes adjuntar anotaciones y etiquetas a tus recursos de Google Cloud Deploy. No son obligatorios.

En este documento, se enumeran los recursos a los que puedes adjuntar etiquetas y anotaciones, y se describe cómo puedes usarlos y dónde puedes verlos.

Acerca de las anotaciones y las etiquetas

Las anotaciones son pares clave-valor de texto de formato libre. Puedes usarlas para adjuntar información arbitraria asociada con el recurso.

Puedes usar etiquetas para organizar los recursos. Por ejemplo, puedes aplicar una lógica basada en la selección de etiquetas.

Al igual que con las anotaciones, las etiquetas son pares clave-valor. Sin embargo, deben cumplir con las siguientes limitaciones:

  • Un recurso de Google Cloud Deploy no puede tener más de 64 etiquetas.

  • Tanto las claves como los valores deben ser de 128 bytes o menos.

  • Las claves y los valores pueden contener solo letras en minúscula, números, guiones bajos y guiones.

  • Las claves deben comenzar con una letra en minúscula o un carácter internacional.

  • Todos los caracteres deben usar la codificación UTF-8. Se permite el uso de caracteres internacionales.

La marca --labels (por ejemplo, en gcloud deploy releases create) puede tomar una lista de pares clave-valor:

"name=wrench,mass=1.3kg,count=3"

Consulta la documentación de la API de Google Cloud Deploy para obtener más detalles.

Agrega anotaciones y etiquetas a los recursos de Google Cloud Deploy

Puedes agregar anotaciones y etiquetas a los siguientes recursos de Google Cloud Deploy:

apiVersion: deploy.cloud.google.com/v1
  kind: DeliveryPipeline
  metadata:
   name:
   annotations:
     key: "value"
   labels:
     key: "value"
  description:
  serialPipeline:
   stages:
   - targetId:
     profiles: []
   - targetId:
     profiles: []
  • Destinos

    Agrega anotaciones y etiquetas a los destinos en la YAML de configuración de destino.

    Por ejemplo, puedes incluir un vínculo para obtener más información sobre la supervisión de terceros en tu aplicación. Sin embargo, si el destino es compartido, recuerda que podría usarse para más de una aplicación, por lo que el vínculo no debe ser específico de la aplicación.

  • Versiones

    Puedes agregar anotaciones o etiquetas, o ambas, a una versión mediante las marcas --labels y --annotations en el comando gcloud deploy releases create. Las etiquetas y anotaciones que agregas a una versión no se incluyen como etiquetas o anotaciones en los lanzamientos resultantes.

    Por ejemplo, puedes usar anotaciones para incluir una referencia a un PR, un autor o un hash SHA de la confirmación de Git que contenga los cambios que se implementarán. Para obtener más detalles, consulta Cómo usar las anotaciones para hacer un seguimiento de la procedencia de la versión.

  • Lanzamientos

    Puedes agregar anotaciones y etiquetas a lanzamientos nuevos si especificas --labels o --annotations en el comando gcloud deploy releases promote.

    La única forma de agregar anotaciones y etiquetas a un primer lanzamiento es crear un lanzamiento con la API de Cloud Deploy e incluir las anotaciones o etiquetas en el recurso rollout.

    Estas son algunas de las cosas que puedes hacer con las anotaciones en un lanzamiento:

    • Crea una anotación que contenga la URL que apunta a los resultados de la prueba.
    • Crea una anotación con un número de ticket relevante de un sistema de administración de flujos de trabajo.

¿Dónde puedo encontrar las anotaciones de un recurso?

Puedes ver las anotaciones y las etiquetas de cualquier recurso admitido mediante el comando describe del recurso o los metadatos del recurso en Google Cloud Console.

Desde la CLI de gcloud

Para ver las anotaciones y las etiquetas de un recurso desde la línea de comandos, usa un comando describe en ese recurso. En el siguiente ejemplo, se muestran los detalles de un destino:

 $ gcloud deploy targets describe qsprod --delivery-pipeline=my-demo-app-1 \
                                              --region=us-central1 \
                                              --project=quickstart-basic8

El comando anterior muestra el siguiente resultado:

 Target:
   annotations:
     approver_ticket_queue_url: https://workflows.example.com/deploy_approvals/4985729
   createTime: '2021-10-28T19:33:56.907887878Z'
   description: development cluster
   etag: 5b3bbee48f693cd7
   gke:
     cluster: projects/quickstart-basic8/locations/us-central1/clusters/quickstart-cluster-qsdev
   name: projects/quickstart-basic8/locations/us-central1/targets/qsdev
   uid: 3f3a5f8e7e0648e3bb17898ee531455d
   updateTime: '2021-11-10T16:55:11.502660604Z'

Ten en cuenta que este resultado incluye la anotación target_name.

En Google Cloud Console

Para ver las anotaciones y las etiquetas de cualquier recurso de Google Cloud Deploy que tenga estos metadatos, consulta los detalles de ese recurso en Google Cloud Console.

Por ejemplo, estos son los detalles de la canalización de entrega para una canalización que incluye una anotación:

Detalles de la canalización de entrega en Google Cloud Console

Estos son los detalles del lanzamiento:

Detalles de la versión en Google Cloud Console

Etiquetas automáticas de Google Cloud Deploy

De forma predeterminada, Google Cloud Deploy agrega las siguientes etiquetas a los manifiestos renderizados:

  • app.kubernetes.io/managed-by:

    Una etiqueta estándar para indicar las herramientas de implementación. Siempre se configura como google-cloud-deploy para identificar el origen de la carga de trabajo.

  • deploy.cloud.google.com/location:

    La ubicación de la canalización de entrega implementada, por ejemplo, us-central1.

  • deploy.cloud.google.com/project-id:

    El ID del proyecto de la canalización de entrega implementada.

  • deploy.cloud.google.com/delivery-pipeline-id:

    El ID de recurso de la canalización de entrega utilizada. Esto se toma de la instantánea de lanzamiento.

  • deploy.cloud.google.com/release-id:

    El ID de recurso de la versión implementada.

  • deploy.cloud.google.com/target-id:

    El ID de recurso del destino de implementación. Esto se toma de la instantánea de lanzamiento.

Ejemplo de uso

Un ejemplo del uso de estas etiquetas aplicadas de forma automática sería crear un grafo dentro del conjunto de operaciones de Google Cloud que agrega una métrica de contenedor a través de Google Cloud Deploy:

fetch k8s_container
| metric 'kubernetes.io/container/cpu/core_usage_time'
| filter metadata.user.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
      sum(val())
| rate 1m

También puedes usar esto con métricas personalizadas. Por ejemplo, si PodMonitor está configurado con una etiqueta para que coincida con app.kubernetes.io/managed-by: google-cloud-deploy. Luego, puedes usar una consulta a fin de definir un grafo para métricas personalizadas:

fetch k8s_container
| metric workload.googleapis.com/example_requests_total
| filter metadata.user_labels.c'app.kubernetes.io/managed-by' = "google-cloud-deploy"
| group_by [
    pipeline: metadata.user.c'deploy.cloud.google.com/delivery-pipeline-id',
    target: metadata.user.c'deploy.cloud.google.com/target-id',
    release: metadata.user.c'deploy.cloud.google.com/release-id',],
    sum(val())
| rate 1m

Inhabilita las etiquetas automáticas

Es posible que tu organización inhabilite estas etiquetas automáticas por motivos regulatorios, de cumplimiento o por otros motivos. Para ello, el Servicio de políticas de la organización ofrece una restricción que controla si estas etiquetas se aplican o no.

Para evitar que Google Cloud Deploy agregue automáticamente etiquetas a los manifiestos procesados, establece la restricción del servicio de políticas de la organización clouddeploy.disableServiceLabelGeneration para que se aplique. Aplicar esta restricción no te impide especificar etiquetas de forma manual ni quitar las etiquetas de las versiones existentes.

Consulta Usa restricciones booleanas en la política de la organización para obtener más información sobre cómo habilitar restricciones.