Implementa en varios destinos al mismo tiempo

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

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

Por qué usar la implementación en paralelo

Puedes usar la implementación en paralelo, por ejemplo, para implementar tu aplicación en varios destinos de producción. En este caso, no es necesario que realices la implementación en cada objetivo de forma consecutiva, ya que no hay una progresión (por ejemplo, de dev a pruebas y, luego, a producción).

Y esta implementación en paralelo puede ser parte de una progresión normal de la canalización de publicación:
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:

  • múltiples objetivos

    Un objetivo múltiple es un objetivo que se configura con la propiedad multiTarget, en el nivel superior del archivo YAML de configuración de destino y, en lugar de hacer referencia al clúster o servicio de tiempo de ejecución, hace referencia a uno o más otros objetivos con 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 de controladores

    Un lanzamiento del controlador es un lanzamiento que corresponde al multiobjetivo.

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

  • Lanzamientos secundarios

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

Configura la implementación en paralelo

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

  • Los múltiples destinos 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 configuración multiobjetivo para su 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 varios destinos o el predeterminado. Consulta Entornos de ejecución y la implementación en paralelo para obtener más detalles.

Configura la segmentación multiobjetivo

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 objetivos incluye la propiedad multiTarget. Un segmento multiobjetivo no puede tener las propiedades gke, run ni anthosCluster. La configuración de un destino múltiple es la misma independientemente del entorno de ejecución al que realices la implementación.

En el archivo YAML de tu 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 multiobjetivo, 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 a los que se implementa este destino múltiple. Cada nombre corresponde a la propiedad name en la definición del objetivo secundario.

La presencia de la propiedad multiTarget.targetIds hace que este objetivo sea multiobjetivo.

Configura los destinos secundarios

Para cada objetivo identificado como secundario en tu configuración de varios destinos, configura otro objetivo como secundario:

En el archivo 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 objetivo secundario. El nombre corresponde a un miembro de la lista de destinos en la propiedad multiTarget.targetIds en la definición de varios objetivos.

  • El valor de la propiedad gke.cluster es el nombre del recurso del clúster al que se refiere 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 la propiedad multiTarget.targetIds en el destino múltiple hace referencia a él.

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 objetivo secundario. El nombre corresponde a un miembro de la lista de destinos en 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 objetivo, 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 en el destino múltiple hace referencia a él.

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

Pasa parámetros de implementación a los destinos

Puedes diferenciar entre los objetivos secundarios si incluyes parámetros en tu manifiesto y valores en la definición de tu canalización de publicación. 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 objetivo secundario. Para ello, debes incluir los parámetros y los valores en la progresión de la canalización de publicación, junto con las 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 los destinos múltiples y 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 destino de Cloud Deploy, excepto que, cuando llega a la etapa con la orientación múltiple, Cloud Deploy crea un lanzamiento del controlador para la orientación múltiple 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 lanzamientos del controlador y lanzamientos secundarios.

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 entorno de ejecución objetivo (por ejemplo, todo GKE o todo 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 no tener destinos 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 en una sola canalización de entrega, pero puedes volver a usarlo en una canalización diferente.

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

    Cuando realizas una implementación en varios destinos, 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, las tareas de implementación de algunos destinos no se ejecutarán hasta que finalicen otros, lo que significa que, en este caso, Cloud Deploy no se implementará en todos los destinos secundarios al mismo tiempo.

    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 haya implementado 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 en paralelo

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 usan el entorno de ejecución predeterminado heredan el no predeterminado del destino múltiple.

  • Si el destino múltiple usa el entorno de ejecución predeterminado, cualquier destino secundario que se configure 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 tienes que definir ni cambiar el entorno de ejecución para cada destino secundario, y aún puedes personalizar el entorno de ejecución para uno o más destinos secundarios si lo necesitas.

Consulta Cómo usar los entornos de ejecución de Google 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 de varios objetivos en paralelo, revierte la implementación multiobjetivo, como se describe en Cómo revertir un objetivo.

Aprobaciones para la implementación en paralelo

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

Cómo ver la implementación en paralelo en la consola de Google Cloud

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

Cuando veas la lista de destinos de una canalización de entrega determinada, en los detalles de la canalización de entrega, se mostrará el destino múltiple, pero no los destinos secundarios. Sin embargo, cuando veas los detalles de la versión, podrás ver el lanzamiento del controlador y los lanzamientos secundarios. También puedes ver los lanzamientos del controlador y de los elementos secundarios 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 comparar manifiestos renderizados para lanzamientos secundarios.

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

Puedes realizar la implementación en paralelo cuando usas una estrategia de implementación Canary. Consulta Cómo usar la implementación en paralelo con una implementación de versiones canary Canary para obtener más información.

¿Qué sigue?