Con Cloud Deploy, puedes realizar implementaciones en un destino configurado para representar varios destinos, y tu aplicación se implementa en esos destinos en paralelo (simultáneamente). El destino que identificas como una etapa en tu canalización se denomina destino múltiple, y los destinos que comprende ese destino múltiple se denominan destinos secundarios.
Puedes usar la implementación en paralelo con cualquier tipo de destino que admita Cloud Deploy.
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 necesitas realizar la implementación en cada destino de forma sucesiva, ya que no hay una progresión (por ejemplo, de desarrollo a etapa de pruebas y, luego, a producción).
Además, esta implementación en paralelo 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 en paralelo usa los siguientes recursos especializados de Cloud Deploy:
Destinos múltiples
Un destino múltiple es un destino 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 destinos, mediantemultiTarget.targetIds.Destinos secundarios
Un destino secundario es cualquier destino al que hace referencia 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 del controlador.
-
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 en paralelo 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 por lo siguiente:
- 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 propiedadmultiTarget.targetIds. - Puedes configurar el destino múltiple para la aprobación, pero no los destinos 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 definido en la definición de destino múltiple o el predeterminado. Consulta Entornos de ejecución y la implementación en paralelo para obtener más detalles.
Configura el destino múltiple
Un destino múltiple es un destino único identificado como una etapa en tu canalización de entrega, pero que apunta a uno o más destinos secundarios.
La configuración de destino múltiple incluye la propiedad multiTarget. Un destino múltiple no puede tener las propiedades gke, run ni anthosCluster.
La configuración para un destino múltiple es la misma, independientemente del entorno de ejecución en el que realices la implementación.
En tu archivo YAML de canalización de entrega o en un archivo YAML separado, crea la definición de destino básica, 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...
TARGET_NAME es el nombre de este destino múltiple, que se usa en la definición de canalización de entrega,
stages.targetIdpropiedad.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
nameen la definición de 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 la configuración de destino múltiple, configura otro destino como destino secundario:
En tu archivo YAML de canalización de entrega o en un archivo YAML separado, 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 archivo YAML...
CHILD_TARGET1 es el nombre de este destino secundario. El nombre corresponde a un miembro de la lista de destinos en la
multiTarget.targetIdspropiedad en la definición de destino múltiple.El valor de la propiedad
gke.clusteres 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 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 archivo YAML...
CHILD_TARGET1 es el nombre de este destino secundario. El nombre corresponde a un miembro de la lista de destinos en la
multiTarget.targetIdspropiedad en la definición de destino múltiple.El valor de la propiedad
run.locationes 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 en el destino múltiple hace referencia a él.
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...
CHILD_TARGET1 es el nombre de este destino secundario. El nombre corresponde a un miembro de la lista de destinos en la
multiTarget.targetIdspropiedad en la definición de destino múltiple.MEMBERSHIP_NAME es el nombre que elegiste cuando registraste el clúster en una flota.
Destino 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...
CHILD_TARGET1 es el nombre de este destino secundario. El nombre corresponde a un miembro de la lista de destinos en la
multiTarget.targetIdspropiedad en la definición de destino múltiple.CUSTOM_TARGET_TYPE_NAME es el nombre del tipo de destino personalizado que usa este destino.
Pasa parámetros de implementación a los destinos
Puedes diferenciar entre los destinos secundarios si incluyes 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 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 ello, incluirías los parámetros y los valores en la canalización de entrega de progresión, junto con las etiquetas en los destinos secundarios para que coincidan con cada par parámetro-valor.
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 con cualquier canalización y destino de Cloud Deploy, excepto que, cuando llega a la etapa con el destino múltiple, Cloud Deploy crea un lanzamiento del controlador para el destino 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 los lanzamientos del controlador y los 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 de destino (por ejemplo, todos GKE o todos Cloud Run).
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 y no 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 usarlos en diferentes canalizaciones.
Si los destinos secundarios son destinos personalizados, todos deben hacer referencia al mismo
CustomTargetType.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 finalicen otros, lo que significa que Cloud Deploy no realiza la implementación 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 haya implementado en todos los destinos secundarios.
Si necesitas poder realizar implementaciones simultáneamente en más destinos que el límite especificado en la documentación de Cloud Build, tienes dos opciones:
Solicita un aumento de la cantidad de compilaciones simultáneas que puedes ejecutar.
Configura un grupo privado y configura tus destinos para que usen ese grupo.
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 esté configurado con un entorno de ejecución no predeterminado usa 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, al mismo tiempo, te permiten personalizar el entorno de ejecución para uno o más destinos secundarios si necesitas hacerlo.
Consulta Usa los entornos de ejecución de Cloud Deploy para obtener más información sobre los entornos de ejecución en Cloud Deploy.
Revierte una implementación en paralelo
Si necesitas revertir una implementación de varios destinos paralelos, revierte el 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 en paralelo para que requiera aprobaciones. Sin embargo, con la implementación en paralelo, solo puedes configurar la aprobación en el destino múltiple. La aprobación o el rechazo afectan a todos los destinos secundarios juntos.
Visualiza la implementación en paralelo en la Google Cloud consola
Puedes ver los detalles de tu destino múltiple, los destinos secundarios, el lanzamiento del controlador y los lanzamientos secundarios en la Google Cloud consola.
Cuando ves la lista de destinos para 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 lanzamientos secundarios que aparecen 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 los manifiestos renderizados para los lanzamientos secundarios.
Usa la implementación en paralelo con una estrategia de implementación
Puedes realizar implementaciones en paralelo cuando usas una estrategia de implementación de versiones canary. Consulta Usa la implementación en paralelo con una estrategia de implementación de versiones canary para obtener más información.
¿Qué sigue?
Prueba la guía de inicio rápido: Implementa una app en varios destinos al mismo tiempo.
Obtén más información para usar parámetros de implementación.
Consulta el esquema de configuración de destino.
Revisa el artículo Arquitectura del servicio de Cloud Deploy.