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 (al mismo tiempo). El destino que identificas como una etapa en la canalización se denomina multi-target, y los destinos que incluye varios destinos se denominan destinos secundarios.

Puedes usar la implementación paralela con cualquier tipo de destino que admita Cloud Deploy, incluido Google Kubernetes Engine, Cloud Run y GKE Enterprise.

Por qué la implementación en paralelo

Por ejemplo, puedes usar la implementación en paralelo para implementar tu aplicación en varios destinos de producción. En este caso, no necesitas implementar en cada destino de forma sucesiva, ya que no hay progreso (por ejemplo, del desarrollo a la etapa de pruebas y a la producción).

Y esta implementación paralela puede ser parte de la progresión normal de una 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 en paralelo usa los siguientes recursos especializados de Cloud Deploy:

  • destinos múltiples

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

  • Destinos secundarios

    Un destino secundario es cualquier destino al que hace referencia un destino múltiple como multiTarget.targetIds. El elemento secundario también debe hacer referencia a un tipo de destino compatible (Google Kubernetes Engine, GKE Enterprise o Cloud Run.

  • Lanzamientos del controlador

    El lanzamiento de un controlador es aquel que corresponde a varios destinos.

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

  • Lanzamientos secundarios

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

Configura la implementación en paralelo

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 los objetivos son las mismas que para todos los destinos, excepto los 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 los destinos múltiples para la aprobación, pero no los destinos secundarios, que no pueden incluir requireApproval:true.

Los destinos múltiples y secundarios pueden incluir parámetros de configuración personalizados del entorno de ejecución. Si un destino secundario no especifica un entorno de ejecución, hereda el definido en la definición de destinos múltiples o el predeterminado. Consulta Entornos de ejecución e implementación paralela para obtener más detalles.

Configura los destinos múltiples

Un destino múltiple es un destino único identificado como una etapa en la 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 destino múltiple no puede tener las propiedades gke, run o anthosCluster. La configuración para varios destinos es la misma sin importar el entorno de ejecución en el que realices la implementación.

En el YAML de la canalización de entrega o en un archivo YAML independiente, crea la definición de destino básica, incluida 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 YAML...

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

  • 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 un elemento secundario en tu configuración de destinos múltiples, configura otro destino, como uno secundario:

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

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 YAML...

  • CHILD_TARGET1 es el nombre de este destino secundario. El nombre corresponde a un miembro de la lista de destinos de la propiedad multiTarget.targetIds en 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, incluidos el ID del proyecto, la región y el nombre del clúster.

Este destino se configura de la misma manera que un destino de GKE estándar. Lo único que hace que este sea un destino secundario es que la propiedad multiTarget.targetIds hace referencia a él en el 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 YAML...

  • CHILD_TARGET1 es el nombre de este destino secundario. El nombre corresponde a un miembro de la lista de destinos de la propiedad multiTarget.targetIds en 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, incluido 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 la propiedad multiTarget.targetIds hace referencia a él en el destino múltiple.

GKE Enterprise

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 YAML...

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

Crea la versión

Con varios destinos 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 con cualquier canalización y destinos de Cloud Deploy, excepto que cuando llega a la etapa con los destinos múltiples, Cloud Deploy crea un lanzamiento de controladores para los destinos múltiples y un lanzamiento secundario para implementar la aplicación en cada destino secundario.

Los mensajes de Pub/Sub en respuesta a las operaciones de Cloud Deploy distinguen entre los lanzamientos de controladores y de lanzamientos secundarios.

Limitaciones

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

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

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

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

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

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

    Cuando realizas una implementación en un destino múltiple, todos los lanzamientos secundarios 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 otros finalicen, lo que significa que Cloud Deploy no se implementa 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 se inicien antes de que la aplicación se implemente en todos los destinos secundarios.

    Si necesitas poder realizar implementaciones 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 e implementación paralela

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

  • Si el objetivo 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 de los destinos múltiples.

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

Estas reglas facilitan la propagación de los entornos de ejecución a destinos secundarios desde varios destinos, de modo que no tengas que definir ni cambiar el entorno de ejecución de cada destino secundario y, a la vez, te permiten personalizar el entorno de ejecución para uno o más destinos secundarios si lo necesitas.

Consulta Usa entornos de ejecución de Google Cloud Deploy para obtener más información sobre los entornos de ejecución en Cloud Deploy.

Revierte una implementación paralela

Si necesitas revertir una implementación desde varios destinos paralelos, revierte un destino múltiple, como se describe en Revierte 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 destinos múltiples. La aprobación o el rechazo afectan a todos los objetivos secundarios en conjunto.

Ver la implementación paralela en la consola de Google Cloud

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

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

En el Inspector de versiones, puedes ver y diferenciar los manifiestos renderizados de lanzamientos secundarios.

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

Puedes diferenciar entre destinos secundarios si incluyes parámetros en tu manifiesto y valores en tu definición de canalización de entrega. Esos valores se pueden aplicar por separado a los manifiestos separados, 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 hacerlo, debes incluir los parámetros y los valores en la progresión de la canalización de entrega, junto con las etiquetas de los destinos secundarios que deben coincidir con cada par parámetro-valor.

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

Usa la implementación en paralelo con una estrategia de implementación

Puedes realizar implementaciones en paralelo cuando utilizas una estrategia de implementación de versiones canary. Para obtener más información, consulta Usa la implementación paralela con una estrategia de implementación de versiones canary.

¿Qué sigue?