Crea un objetivo personalizado

En este documento, se describe cómo crear un tipo de destino personalizado de Cloud Deploy y usarlo como un destino en una canalización de entrega de Cloud Deploy.

A continuación, se describe el proceso general para crear un tipo de objetivo personalizado y usarlo en tu canalización de entrega:

  1. Crea una aplicación en contenedores o aplicaciones que incluyan la funcionalidad para implementar en tu destino personalizado y que cumplan con los requisitos de Cloud Deploy para los tipos de destinos personalizados.

  2. Crea una definición de CustomTargetType con tareas que hagan referencia al contenedor y especifiquen los comandos que se ejecutarán en él.

  3. Define un objetivo nuevo con una propiedad customTarget que identifique tu nuevo tipo de objetivo personalizado.

  4. Haz referencia a ese destino desde la progresión de tu canalización de entrega.

  5. Crea una versión.

Cada uno de estos pasos se describe en detalle en el resto de este documento.

Crea tus aplicaciones alojadas en contenedores

La funcionalidad para implementar en tu destino personalizado se define en aplicaciones alojadas en contenedores, que proporcionas a Cloud Deploy en tu definición de CustomTargetType. Cuando tu canalización de entrega incluye un destino que usa un tipo de destino personalizado, Cloud Deploy llama a los contenedores definidos para ese tipo de destino personalizado para ejecutar la renderización y la implementación personalizadas que definiste.

El comportamiento de tus aplicaciones depende de ti. Sin embargo, debe consumir las variables de entorno de entrada que proporciona Cloud Deploy y debe devolver los resultados requeridos.

En la mayoría de los casos, crearás un contenedor para tu renderización personalizada y otro para tu implementación personalizada, para cada tipo de destino personalizado que crees. La renderización personalizada es opcional, pero debes crear una, a menos que tu destino personalizado funcione correctamente si se renderiza con los renderizadores integrados. De forma predeterminada, Cloud Deploy usa skaffold render para renderizar tus manifiestos.

Define tu tipo de segmentación personalizada

Para definir un objetivo personalizado, primero debes crear un tipo de objetivo personalizado con la configuración de CustomTargetType. Puedes crear el CustomTargetType en el mismo archivo que la definición de tu canalización de entrega, o con definiciones de destino, o en un archivo separado.

La definición de CustomTargetType es la siguiente:

apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name: [CUSTOM_TARGET_TYPE_NAME]
  annotations:
  labels:
description:
tasks:
  render: [RENDER_TASK]
  deploy: [DEPLOY_TASK]

Dónde

Registra tu tipo de segmentación personalizada

Después de configurar CustomTargetType, ejecuta el comando gcloud deploy apply para registrar el recurso CustomTargetType en un proyecto de Google Cloud :

gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]

Aquí:

FILE es el nombre del archivo en el que definiste este tipo de destino personalizado.

PROJECT es el proyecto Google Cloud en el que se creará este recurso. El CustomTargetType debe estar en el mismo proyecto que el recurso Target que lo referencia. No es necesario que especifiques el proyecto si lo configuraste como tu proyecto predeterminado para Google Cloud CLI.

REGION es la región (por ejemplo, us-central1) en la que se creará este recurso. El CustomTargetType debe estar en la misma región que el recurso Target que lo referencia. No es necesario que especifiques la región si la configuraste como tu región predeterminada para gcloud CLI.

Ahora que se creó CustomTargetType como un recurso de Cloud Deploy, puedes usarlo en una definición de Target para crear tu destino personalizado.

Para obtener más información sobre la definición de CustomTargetType, consulta la referencia del esquema de configuración de Cloud Deploy.

Define tu objetivo

La única diferencia entre una definición de destino para un tipo de destino admitido y una definición de destino personalizada es que esta última incluye una sección customTarget. La sintaxis de un customTarget es la siguiente:

customTarget:
  customTargetType: [CUSTOM_TARGET_TYPE_NAME]

Aquí, CUSTOM_TARGET_TYPE_NAME es el valor de la propiedad name definida en tu configuración de tipo de segmentación personalizado.

Agrega tu destino a la canalización de entrega

Puedes usar un destino personalizado en una canalización de entrega exactamente de la misma manera en que usarías un tipo de destino compatible. Es decir, no hay diferencia en la progresión de la canalización de entrega entre los destinos de un tipo de destino admitido y los destinos personalizados.

Todos los destinos de una canalización de entrega deben usar el mismo tipo de destino. Por ejemplo, no puedes tener una canalización de entrega con algunos destinos que se implementen en Google Kubernetes Engine y algunos destinos personalizados.

Al igual que con los tipos de destino admitidos, puedes incluir parámetros de implementación en la etapa de la canalización.

Crea una versión

Con tu tipo de destino personalizado completamente definido y un destino creado para usar ese tipo, ahora puedes crear una versión de la manera habitual:

gcloud deploy releases create [RELEASE_NAME] \
  --project=[PROJECT_NAME] \
  --region=[REGION] \
  --delivery-pipeline=[PIPELINE_NAME]

Cuando se crea la versión, se ejecuta tu renderización personalizada para cada destino de la canalización de entrega, incluido el procesamiento de los parámetros de implementación configurados en la versión, los destinos o la canalización de entrega. Cloud Deploy proporciona los parámetros de implementación como entrada al contenedor de renderización personalizado.

Visualiza el resultado de tus objetivos personalizados

Si tu tarea de renderización personalizada satisface los requisitos para los destinos personalizados, puedes usar la consola de Google Cloud para ver los artefactos renderizados.

Sigue estos pasos para ver el resultado de tu tarea de renderización personalizada.

  1. En la consola de Google Cloud , navega a la página Canalizaciones de entrega de Cloud Deploy para ver tu canalización de entrega.

    Abrir la página Canalizaciones de entrega

  2. Haz clic en el nombre de tu canalización de entrega.

    La visualización de la canalización muestra el estado de implementación de la app, y la versión aparece en la pestaña Versiones, en Detalles de la canalización de entrega.

  3. Haz clic en el nombre de la versión.

    Se muestra la página Detalles de la versión.

  4. Haz clic en la pestaña Artefactos.

  5. En Artefactos de destino, haz clic en la flecha junto a Ver artefactos.

    Se enumeran los artefactos renderizados, incluido el archivo de configuración de Skaffold renderizado y el archivo de manifiesto renderizado que generó el renderizador personalizado. Además, puedes hacer clic en el vínculo Ubicación de almacenamiento junto a cada uno para ir al bucket de Cloud Storage y ver esos archivos.

    También puedes hacer clic en el vínculo Ver artefactos para ver esos archivos por versión, por destino o por fase con el inspector de versiones.

¿Qué sigue?