Implementa en varios destinos al mismo tiempo

Con Cloud Deploy, puedes realizar implementaciones en un destino configurado para representar varios destinos, y tu aplicación se implementará en esos destinos en paralelo (de forma simultánea). El destino que identificas como una etapa en tu canalización se denomina destino múltiple, y los destinos que componen ese destino múltiple se denominan destinos secundarios.

Puedes usar la implementación paralela con cualquier tipo de destino que admita Cloud Deploy.

Por qué usar la implementación en paralelo

Por ejemplo, puedes usar la implementación paralela para implementar tu aplicación en varios destinos de producción. En este caso, no es necesario que realices la implementación en cada destino de forma sucesiva, ya que no hay progresión (por ejemplo, de desarrollo a etapa de pruebas y, luego, a producción).

Además, esta implementación paralela puede formar parte de una progresión normal de la canalización de entrega:
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...].

Recursos de Cloud Deploy que se usan para la implementación en paralelo

La implementación paralela usa los siguientes recursos especializados de Cloud Deploy:

  • varios destinos

    Un destino múltiple es un destino que se configura con la propiedad multiTarget, en el nivel superior del archivo YAML de configuración del destino, y, en lugar de hacer referencia al clúster o servicio de tiempo de ejecución, hace referencia a uno o más destinos, con multiTarget.targetIds.

  • Destinos secundarios

    Un destino secundario es cualquier destino al que se hace referencia en un destino múltiple como multiTarget.targetIds.

  • Lanzamientos del controlador

    Un lanzamiento del controlador es un lanzamiento que corresponde al destino múltiple.

    Consulta Limitaciones para obtener más información sobre lo que puedes y no puedes hacer con un lanzamiento de controlador.

  • Lanzamientos secundarios

    Consulta las Limitaciones para obtener más información sobre lo que puedes y no puedes hacer con un lanzamiento para niños.

Configura la implementación paralela

La configuración de la implementación paralela consiste en definir un destino múltiple y la cantidad de destinos secundarios que necesitas (hasta el límite). Las definiciones de destino son las mismas que para todos los destinos, excepto las siguientes:

  • Los destinos múltiples incluyen la propiedad multiTarget.
  • Los destinos secundarios no incluyen la propiedad multiTarget, pero se hace referencia a ellos desde el destino múltiple con la propiedad multiTarget.targetIds.
  • Puedes configurar la segmentación múltiple para la aprobación, pero no los objetivos secundarios, que no pueden incluir requireApproval:true.

Los destinos múltiples y los destinos secundarios pueden incluir configuraciones personalizadas del entorno de ejecución. Si un destino secundario no especifica un entorno de ejecución, hereda el que se define en la definición de destinos múltiples o el predeterminado. Consulta Entornos de ejecución y la implementación paralela para obtener más detalles.

Configura el objetivo múltiple

Un destino múltiple es un solo destino identificado como una etapa en tu canalización de entrega, pero que apunta a uno o más destinos secundarios.

La configuración de varios destinos incluye la propiedad multiTarget. Un anuncio multitarget no puede tener las propiedades gke, run ni anthosCluster. La configuración para un destino múltiple es la misma, independientemente del tiempo de ejecución en el que realices la implementación.

En tu archivo YAML de la canalización de entrega o en un archivo YAML separado, crea la definición básica del destino, incluido multiTarget:

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
 targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]

En este archivo YAML, se incluye lo siguiente:

  • TARGET_NAME es el nombre de este destino múltiple, que se usa en la propiedad stages.targetId de la definición de la canalización de entrega.

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn son los nombres de los destinos secundarios en los que se implementa este destino múltiple. Cada nombre corresponde a la propiedad name en la definición del destino secundario.

La presencia de la propiedad multiTarget.targetIds hace que este destino sea un destino múltiple.

Configura los destinos secundarios

Para cada destino identificado como secundario en tu configuración de destinos múltiples, configura otro destino como secundario:

En tu archivo YAML de la canalización de entrega o en un archivo YAML separado, crea la definición básica del destino:

GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
gke:
 cluster: projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_NAME

En este archivo YAML, se incluye lo siguiente:

  • CHILD_TARGET1 es el nombre de este objetivo secundario. El nombre corresponde a un miembro de la lista de destinos en la propiedad multiTarget.targetIds de la definición de varios destinos.

  • El valor de la propiedad gke.cluster es el nombre del recurso del clúster al que hace referencia este destino, incluido el ID del proyecto, la región y el nombre del clúster.

Este destino se configura de la misma manera que un destino estándar de GKE. Lo único que hace que este sea un destino secundario es que se hace referencia a él en la propiedad multiTarget.targetIds del destino múltiple.

Cloud Run

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
run:
 location: projects/PROJECT_ID/locations/REGION

En este archivo YAML, se incluye lo siguiente:

  • CHILD_TARGET1 es el nombre de este objetivo secundario. El nombre corresponde a un miembro de la lista de destinos en la propiedad multiTarget.targetIds de la definición de varios destinos.

  • El valor de la propiedad run.location es el nombre del recurso del servicio de Cloud Run al que hace referencia este destino, incluidos el ID del proyecto y la región.

Este destino se configura de la misma manera que un destino estándar de Cloud Run. Lo único que hace que este sea un destino secundario es que se hace referencia a él con la propiedad multiTarget.targetIds en el destino múltiple.

Clústeres conectados de GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
anthosCluster:
 membership: projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME

En este archivo YAML, se incluye lo siguiente:

  • CHILD_TARGET1 es el nombre de este objetivo secundario. El nombre corresponde a un miembro de la lista de destinos en la propiedad multiTarget.targetIds de la definición de varios destinos.

  • MEMBERSHIP_NAME es el nombre que elegiste cuando registraste el clúster en una flota.

Objetivo personalizado

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: CHILD_TARGET1
description: TARGET_DESCRIPTION
customTarget:
  customTargetType: CUSTOM_TARGET_TYPE_NAME

En este archivo YAML, se incluye lo siguiente:

Cómo pasar parámetros de implementación a destinos

Puedes diferenciar los objetivos secundarios incluyendo parámetros en tu manifiesto y valores en la definición de tu canalización de entrega. Esos valores se pueden aplicar por separado a los manifiestos independientes, según la coincidencia de etiquetas en los destinos correspondientes.

Por ejemplo, es posible que desees una cantidad diferente de réplicas para cada destino secundario. Para ello, debes incluir los parámetros y los valores en la progresión de la canalización de entrega, junto con etiquetas en los objetivos secundarios para que coincidan con cada par de valores del parámetro.

Obtén más información sobre los parámetros de implementación.

Crea la versión

Con un destino múltiple y destinos secundarios configurados, crea la canalización de entrega y los recursos de destino y, luego, crea una versión, como de costumbre.

El ciclo de vida de la canalización de entrega es el mismo que el de cualquier canalización y destino de Cloud Deploy, excepto que, cuando llega a la etapa con el destino múltiple, Cloud Deploy crea una implementación controladora para el destino múltiple y una implementación secundaria para implementar la aplicación en cada destino secundario.

Los mensajes de Pub/Sub en respuesta a las operaciones de Cloud Deploy distinguen entre las implementaciones del controlador y las implementaciones secundarias.

Limitaciones

  • Un destino múltiple no puede tener más de 100 destinos secundarios.

  • Todos los destinos secundarios de un solo destino múltiple deben tener el mismo tiempo de ejecución de destino (por ejemplo, todos los destinos de GKE o todos los de Cloud Run).

  • Dentro de una canalización de entrega, un destino secundario solo puede tener un destino múltiple principal.

  • Un destino múltiple no puede no tener destinos secundarios ni hacer referencia a sí mismo o a otro destino múltiple como destinos secundarios.

  • No puedes usar un destino secundario más de una vez en una sola canalización de entrega, pero puedes volver a usarlos en diferentes canalizaciones.

  • Si los objetivos secundarios son objetivos personalizados, todos deben hacer referencia al mismo CustomTargetType.

  • Los grupos predeterminados tienen límites de simultaneidad, pero los grupos privados no.

    Cuando realizas la implementación en un destino múltiple, todas las versiones secundarias se implementan al mismo tiempo, hasta el límite de simultaneidad de Cloud Build. Si tienes más destinos secundarios que ese límite, los trabajos de implementación para algunos destinos no se ejecutarán hasta que finalicen otros, lo que significa que Cloud Deploy no implementará en todos los destinos secundarios al mismo tiempo, en este caso.

    Además, si los destinos incluyen trabajos de verificación, es posible que uno o más de esos trabajos de verificación comiencen antes de que la aplicación se implemente en todos los destinos secundarios.

    Si necesitas implementar de forma simultánea en más destinos que el límite especificado en la documentación de Cloud Build, tienes dos opciones:

Entornos de ejecución y la implementación paralela

Cada destino se puede configurar para usar un entorno de ejecución no predeterminado.

  • Si el destino múltiple tiene un entorno de ejecución no predeterminado, todos los destinos secundarios que usen el entorno de ejecución predeterminado heredarán el no predeterminado del destino múltiple.

  • Si el destino múltiple usa el entorno de ejecución predeterminado, cualquier destino secundario configurado con un entorno de ejecución no predeterminado usará ese entorno no predeterminado.

Estas reglas facilitan la propagación de entornos de ejecución a destinos secundarios desde un destino múltiple, por lo que no es necesario definir ni cambiar el entorno de ejecución para cada destino secundario, y, al mismo tiempo, permiten personalizar el entorno de ejecución para uno o más destinos secundarios si es necesario.

Consulta Cómo usar los entornos de ejecución de Cloud Deploy para obtener más información sobre los entornos de ejecución en Cloud Deploy.

Cómo revertir una implementación en paralelo

Si necesitas revertir una implementación desde varios destinos paralelos, revierte el destino múltiple, como se describe en Cómo revertir un destino.

Aprobaciones para la implementación en paralelo

Al igual que con cualquier destino, puedes configurar tu implementación paralela para que requiera aprobaciones. Sin embargo, con la implementación paralela, solo puedes configurar la aprobación en el destino múltiple. La aprobación o el rechazo afectan a todos los objetivos secundarios en conjunto.

Visualiza la implementación en paralelo en la consola de Google Cloud

Puedes ver los detalles de tus lanzamientos para varios destinos, los destinos secundarios, el lanzamiento del controlador y los lanzamientos secundarios en la Google Cloud consola.

Cuando ves la lista de destinos de una canalización de entrega determinada, en los detalles de la canalización de entrega, se muestra el destino múltiple, pero no los destinos secundarios. Sin embargo, cuando ves los detalles de la versión, puedes ver el lanzamiento del controlador y los lanzamientos secundarios. También puedes ver los lanzamientos del controlador y los secundarios en la pestaña Lanzamientos de la página Detalles del canal de entrega.

En el inspector de versiones, puedes ver y comparar los manifiestos renderizados de las versiones secundarias.

Usa la implementación paralela con una estrategia de implementación

Puedes realizar implementaciones en paralelo cuando usas una estrategia de implementación canary. Consulta Usa la implementación paralela con una implementación de versiones canary canary para obtener más información.

¿Qué sigue?