Usa anotaciones y etiquetas con Cloud Deploy

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

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

Acerca de las anotaciones y las etiquetas

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

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

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

  • Un recurso de Cloud Deploy puede tener un máximo 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, además, se permiten los 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 Cloud Deploy. para obtener más información.

Agrega anotaciones y etiquetas a los recursos de Cloud Deploy

Puedes agregar anotaciones y etiquetas a las siguientes instancias de Cloud Deploy recursos:

  • Canalizaciones de entrega

    Para las canalizaciones de entrega, debes agregar anotaciones y etiquetas al archivo YAML de Terraform.

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 tu aplicación. Sin embargo, si el destino es compartido, podría usarse para más de una aplicación, por lo que el vínculo no debe específicas de la aplicación.

  • Versiones

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

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

  • Lanzamientos

    Para agregar anotaciones y etiquetas a lanzamientos nuevos, especifica --labels o --annotations en el comando gcloud deploy releases promote.

    Puedes agregar anotaciones y etiquetas a la primera implementación especificando --initial-rollout-labels o --initial-rollout-annotations en la Comando gcloud deploy releases create.

    Estas son algunas acciones que puedes realizar con las anotaciones en un lanzamiento:

    • Crea una anotación que contenga la URL que dirija a los resultados de la prueba.
    • Crear una anotación con un número de ticket relevante de un flujo de trabajo de gestión de proyectos.

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

Puedes ver las anotaciones y etiquetas de cualquier recurso compatible con el comando describe del recurso o con la visualización de los metadatos del recurso en la consola de Google Cloud.

Desde gcloud CLI

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 para un objetivo:

 $ 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 la consola de Google Cloud

Para ver anotaciones y etiquetas de cualquier recurso de Cloud Deploy que tiene esos metadatos, consulta los detalles de ese recurso en la consola de Google Cloud.

Por ejemplo, aquí están 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 la consola de Google Cloud

Y estos son los detalles de un lanzamiento:

Detalles de la versión en la consola de Google Cloud

Etiquetas automáticas de Cloud Deploy

De forma predeterminada, Cloud Deploy agrega las siguientes etiquetas a las capas renderizadas manifests:

  • app.kubernetes.io/managed-by:

    Una etiqueta estándar para indicar las herramientas de implementación. Esto siempre está configurado 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 que se usó. Esto se toma del instantánea de actualización.

  • 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 la implementación. Esto se toma de la instantánea de lanzamiento.

Ejemplo de uso

Un ejemplo del uso de estas etiquetas aplicadas automáticamente sería crear un grafo dentro de la observabilidad de Google Cloud que agregue una métrica de contenedor a través de las propiedades de 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 es configurado con una etiqueta que coincida con app.kubernetes.io/managed-by: google-cloud-deploy. Luego, podrías usar una consulta para definir un gráfico métricas:

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 no permita estas etiquetas automáticas por motivos regulatorios, de cumplimiento o de otro tipo. Para respaldar esto, El Servicio de políticas de la organización ofrece restricción que controla si estas etiquetas se aplican o no.

Para evitar que Cloud Deploy agregue automáticamente etiquetas a las imágenes renderizadas manifiestos, establece la restricción del Servicio de políticas de la organización Se aplicará la política clouddeploy.disableServiceLabelGeneration. Aplicar de manera forzosa no te impide especificar manualmente las etiquetas ni quitar etiquetas de 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.