Con Cloud Deploy, puedes implementar en un destino configurado para representar varios destinos, y tu aplicación se implementa en esos destinos en paralelo (simultáneamente). El objetivo que identificas como una fase de tu flujo de trabajo se denomina objetivo múltiple, y los objetivos que lo componen se denominan objetivos secundarios.
Puedes usar la implementación paralela con cualquier tipo de destino que admita Cloud Deploy.
Por qué usar el despliegue paralelo
Puedes usar el despliegue paralelo, por ejemplo, para desplegar tu aplicación en varios destinos de producción. En este caso, no es necesario que implementes en cada destino de forma sucesiva, ya que no hay ninguna progresión (por ejemplo, de desarrollo a preproducción y a producción).
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 usados para el despliegue paralelo
El despliegue paralelo utiliza los siguientes recursos especializados de Cloud Deploy:
varios objetivos
Un multitarget es un target que se configura con la propiedad
multiTargeten el nivel superior del archivo YAML de configuración del target. En lugar de hacer referencia al clúster o al servicio de tiempo de ejecución, hace referencia a uno o varios targets mediantemultiTarget.targetIds.Objetivos secundarios
Un objetivo secundario es cualquier objetivo al que haga referencia un objetivo múltiple como
multiTarget.targetIds.Lanzamientos controlados
Un lanzamiento de controlador es un lanzamiento que corresponde al multitarget.
Consulta Limitaciones para obtener más información sobre lo que puedes hacer y lo que no con un lanzamiento de controlador.
-
Consulta Limitaciones para obtener más información sobre lo que puedes y no puedes hacer con un lanzamiento secundario.
Configurar el despliegue paralelo
Para configurar una implementación paralela, debes definir un elemento de destino múltiple y el número de elementos de destino secundarios que necesites (hasta el límite). Las definiciones de los objetivos son las mismas que las de todos los objetivos, excepto en los siguientes casos:
- Los multitargets incluyen la propiedad
multiTarget. - Los elementos secundarios no incluyen la propiedad
multiTarget, pero se hace referencia a ellos desde el elemento de destino múltiple mediante la propiedadmultiTarget.targetIds. - Puedes configurar la opción de varios objetivos para la aprobación, pero no los objetivos secundarios, que no pueden incluir
requireApproval:true.
Los elementos de destino múltiples y los elementos de destino secundarios pueden incluir configuraciones de entorno de ejecución personalizadas. Si un elemento secundario de destino no especifica un entorno de ejecución, hereda el definido en la definición de varios destinos o el predeterminado. Para obtener más información, consulta el artículo sobre entornos de ejecución e implementación paralela.
Configurar el multiobjetivo
Un multitarget es un único target identificado como una fase de tu canal de distribución, pero que apunta a uno o varios targets secundarios.
La configuración multiobjetivo incluye la propiedad multiTarget. Una multitarget no puede tener las propiedades gke, run ni anthosCluster.
La configuración de un multitarget es la misma independientemente del tiempo de ejecución en el que se implemente.
En el archivo YAML de tu flujo de procesamiento de entrega o en un archivo YAML independiente, 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 elemento de destino múltiple, que se usa en la propiedad
stages.targetIdde la definición del flujo de procesamiento de entrega.CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn son los nombres de los elementos de destino secundarios a los que se implementa este elemento de destino múltiple. Cada nombre corresponde a la propiedad
namede la definición de destino secundario.
La presencia de la propiedad multiTarget.targetIds hace que este destino sea un destino múltiple.
Configurar los elementos de destino secundarios
Por cada objetivo identificado como secundario en tu configuración de varios objetivos, configura otro objetivo como secundario:
En el archivo YAML de tu flujo de procesamiento de entrega o en otro archivo YAML, 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 elemento secundario de destino. El nombre corresponde a uno de los miembros de la lista de objetivos de la propiedad
multiTarget.targetIdsde la definición de varios objetivos.El valor de la propiedad
gke.clusteres el nombre de 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 igual que un destino estándar de GKE.
Lo único que hace que sea un elemento de destino secundario es que la propiedad multiTarget.targetIds del elemento de destino múltiple haga 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 elemento secundario de destino. El nombre corresponde a uno de los miembros de la lista de objetivos de la propiedad
multiTarget.targetIdsde la definición de varios objetivos.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 igual que un destino estándar de Cloud Run. Lo único que hace que sea un objetivo secundario es que la propiedad multiTarget.targetIds de la cartera multiobjetivo haga referencia a él.
Clústeres de GKE adjuntos
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 elemento secundario de destino. El nombre corresponde a uno de los miembros de la lista de objetivos de la propiedad
multiTarget.targetIdsde la definición de varios objetivos.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...
CHILD_TARGET1 es el nombre de este elemento secundario de destino. El nombre corresponde a uno de los miembros de la lista de objetivos de la propiedad
multiTarget.targetIdsde la definición de varios objetivos.CUSTOM_TARGET_TYPE_NAME es el nombre del