Implementa tu aplicación

En esta página se describe cómo usar Google Cloud Deploy para implementar tu aplicación en los entornos de ejecución de destino deseados.

Google Cloud Deploy lleva tu aplicación a través de una progresión de varios destinos de implementación, en secuencia, y en esta página se describe el proceso de alto nivel.

En el proceso descrito en esta página, creas una canalización de entrega y defines tus objetivos con uno o más archivos de configuración YAML. Luego, registra esa canalización y envía tu aplicación como una versión cuya implementación es administrada por esa canalización.

Antes de comenzar

  • Tener una imagen de contenedor para implementar y un manifiesto de Kubernetes que identifique la imagen de contenedor

    Necesitas una canalización de integración continua o algún otro proceso para compilar y colocar imágenes. Tu herramienta de CI puede ser Cloud Build, Jenkins o cualquier otra cosa que genere imágenes de contenedor para proporcionar a tu canalización de entrega de Google Cloud Deploy.

  • Crea un archivo de configuración skaffold.yaml, si aún no tienes uno, que le indique a Google Cloud Deploy cómo procesar y, luego, implementar la aplicación de Kubernetes.

    Google Cloud Deploy llama a skaffold render para procesar los manifiestos de Kubernetes mediante este archivo y a skaffold apply a fin de implementarlos en tu destino.

    El archivo skaffold.yaml debe hacer referencia al espacio de nombres correspondiente a una versión compatible en la primera línea, como en este ejemplo:

    apiVersion: skaffold/v2beta16

    Si aún no tienes un archivo skaffold.yaml, puedes usar skaffold init para generarlo.

    Consulta Usa Skaffold en Google Cloud Deploy para obtener más detalles. Además, Administra manifiestos en Google Cloud Deploy tiene más detalles sobre el uso de Skaffold y Google Cloud Deploy con herramientas de administración de manifiestos como Helm, Kustomize y kpt.

  • Asegúrate de que tu cuenta de servicio de ejecución tenga los roles y permisos de IAM necesarios.

Crea la canalización de entrega

La canalización de entrega describe un progresión de objetivos de implementación. Puedes definir esos objetivos en el mismo archivo que la canalización de entrega o en uno o más archivos separados.

Después de crear la canalización de entrega y los archivos de definición de destino, ejecuta gcloud deploy apply en cada uno de esos archivos para registrarlos como recursos de implementación de Google Cloud.

Define la canalización y los objetivos de entrega

La estructura del archivo de configuración de la canalización de entrega se describe aquí.

Puedes llamar a este archivo como desees. Por convención, una configuración de canalización de entrega que incluye definiciones de objetivo se denomina clouddeploy.yaml y otra que hace referencia a los objetivos definidos en uno o más archivos separados se llama delivery-pipeline.yaml.

Registra la canalización de entrega y los objetivos

Para registrar tu canalización de entrega con Google Cloud Deploy, ejecuta gcloud deploy apply una vez por cada archivo de definición independiente. Es decir, si defines tres objetivos en tres archivos, debes ejecutar el comando cuatro veces: una para la canalización de entrega y una para cada destino.

Con el siguiente comando, se registra una canalización de entrega con sus objetivos definidos en el mismo archivo.

gcloud deploy apply --file=PIPELINE_CONFIG \
                         --region=LOCATION
                         --project=PROJECT

Ahora tienes una canalización de entrega que puede administrar la implementación de tus versiones y recursos de destino que puede usar cualquier canalización de entrega en el mismo proyecto y región.

Un solo archivo de ejemplo

El comando de este ejemplo registra una canalización de entrega y destinos que se definen en el mismo archivo:

gcloud deploy apply --file=clouddeploy.yaml --region=us-central1

Un ejemplo que usa archivos separados

Para este ejemplo, hay tres objetivos definidos en tres archivos separados, por lo que debes ejecutar cuatro comandos:

gcloud deploy apply --file=delivery-pipeline.yaml --region=us-central1 && \
gcloud deploy apply --file=target_dev.yaml --region=us-central1 && \
gcloud deploy apply --file=target_staging.yaml --region=us-central1 && \
gcloud deploy apply --file=target_prod.yaml --region=us-central1

La marca --region es obligatoria, a menos que hayas configurado una configuración predeterminada (mediante gcloud config set deploy/region [REGION]). La región debe ser la misma para la canalización de entrega y todos los objetivos a los que hace referencia la canalización.

Edita canalizaciones y destinos existentes

Luego, puedes editar cualquier canalización de entrega o configuración de destino y ejecutar gcloud deploy apply para actualizar la canalización o el recurso de destino. Pero esos cambios no afectan ninguna actualización existente, ya que los administra la canalización de entrega original.

Solicita aprobación manual para una implementación

A fin de requerir la aprobación manual para un destino determinado, incluye la siguiente propiedad en la definición de destino:

requireApproval: true

El valor predeterminado es false. Si omites esta propiedad de la configuración de la canalización de entrega o no proporcionas ningún valor para ella, la implementación en este destino no requiere aprobación. (Pero el emisor que intenta ascender al destino aún necesita el permiso clouddeploy.rollouts.create de IAM).

Incluso puedes requerir una aprobación manual en el primer destino. Cuando se crea una versión, mediante la CLI, para el primer destino, el rollout se crea de forma automática. Si se requiere aprobación, Google Cloud Deploy creará el rollout, pero en estado de actualización pendiente hasta que se otorgue la aprobación.

Invoca la canalización de entrega para implementar tu aplicación

Ahora puedes enviar tu aplicación para que se implemente de acuerdo con la canalización de entrega que creaste.

  1. Ejecuta el proceso de integración continua (CI) regular, lo que crea los artefactos o artefactos implementables.

  2. Inicia la canalización de entrega mediante una llamada a Google Cloud Deploy para crear una versión.

    Ejecuta el siguiente comando desde el directorio que contiene la configuración de Skaffold:

    gcloud deploy releases create RELEASE_NAME --delivery-pipeline=PIPELINE_NAME
    

    Aquí:

    RELEASE_NAME es el nombre que se debe asignar a esta versión. El nombre debe ser único entre todas las versiones de esta canalización de entrega.

    PIPELINE_NAME es el nombre de la canalización de entrega que administrará la implementación de esta versión a través del progreso de los objetivos. Este nombre debe coincidir con el campo name en la definición de la canalización.

Con este comando, se sube un archivo comprimido que contiene tus archivos de configuración a un bucket de Cloud Storage y crea la versión. Google Cloud Deploy también crea de forma automática un lanzamiento e implementa la imagen en el primer destino definido en la canalización de entrega.

Además de los parámetros que se muestran con este comando, puedes incluir cualquiera de las siguientes opciones:

  • --images=<name=path/name:$IMAGE_SHA>,<name=path/name:$IMAGE_SHA>

    Una colección de nombres de imágenes para reemplazos de rutas de acceso completas de imágenes.

  • --build_artifacts=<path/file>

    Una referencia a un archivo de salida de artefactos de compilación de Skaffold, que se puede pasar para representar los reemplazos de ruta de acceso completos de la imagen

Estas dos opciones son mutuamente excluyentes.

Promueve una actualización

Cuando la versión se implementa en un destino definido en la canalización de entrega, puedes promoverla al siguiente destino:

gcloud

gcloud deploy releases promote --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME

Aquí:

RELEASE_NAME es el nombre de la versión que deseas promover.

PIPELINE_NAME es el nombre de la canalización de entrega que usas para administrar la implementación de esta versión.

Console

  1. Abre la página Canalizaciones de entrega.

  2. Haz clic en tu canalización, que se muestra en la lista de canalizaciones de entrega.

    En la página de detalles de la canalización de entrega, se muestra una representación gráfica del progreso de tu canalización de entrega.

    Visualización de la canalización de entrega en Google Cloud Console

  3. En el primer objetivo de la visualización de la canalización de entrega, haz clic en Promover.

    Se muestra el cuadro de diálogo Promover versión. Muestra los detalles del objetivo al que promocionas.

  4. Haz clic en Promover.

Si la canalización o el destino de entrega cambiaron desde que se creó la versión, Google Cloud Deploy muestra un mensaje que indica una posible coincidencia y te solicita que confirmes la promoción. Puedes responder n al mensaje y examinar las diferencias entre las versiones de canalización antes de continuar. Si eliges ascender de todos modos, la versión se implementa de acuerdo con la canalización de entrega como se definió cuando se creó la versión. Consulta Instancias de canalización por versión para obtener más información sobre las discrepancias de canalización.

Google Cloud Deploy crea un rollout para la versión en el destino de destino y la versión se pone en cola para la implementación. Cuando se implementa, la visualización de la canalización de entrega muestra ese hecho:

Visualización de la canalización de entrega en Google Cloud Console

Aprueba una promoción

Cada destino puede requerir aprobación antes de implementar cualquier actualización en él.

Cuando asciendes a un destino que requiere aprobación, Google Cloud Deploy publica un mensaje de Pub/Sub en el tema cd-approvals.

Consulta Aprueba o rechaza un lanzamiento para obtener más información sobre cómo funcionan las aprobaciones.

Implementa de forma manual

Durante el uso normal, Google Cloud Deploy implementa tu aplicación en cada destino de la progresión, en secuencia. Pero también puedes implementar de forma manual tu aplicación en cualquier destino definido.

Puedes implementar una versión nueva o existente de forma manual.

Implementa una versión existente de forma manual

Si ya se creó una versión, puedes ascenderla al destino previsto:

gcloud deploy releases promote --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --to-target=TARGET_NAME

Aquí:

  • RELEASE_NAME es el nombre de la versión que promocionas de forma manual al destino previsto.

  • PIPELINE_NAME es el nombre de la canalización de entrega que describe el progreso de la implementación automatizada que anulas.

  • TARGET_NAME es el nombre del destino en el que realizas la implementación manual.

Implementa una versión nueva de forma manual

De forma predeterminada, cuando creas una versión, Google Cloud Deploy lo implementa de forma automática en el primer destino de la secuencia de promoción. Sin embargo, puedes especificar un objetivo distinto del primero.

Al igual que con el primer destino predeterminado en el progreso, Google Cloud Deploy crea de forma automática el rollout para el destino especificado y, luego, implementa la versión allí.

Para implementar una versión nueva de forma manual, ejecuta el siguiente comando:

gcloud deploy releases create --release=RELEASE_NAME --delivery-pipeline=PIPELINE_NAME --to-target=TARGET_NAME

Aquí:

  • RELEASE_NAME es el nombre de la versión que promocionas de forma manual al destino previsto.

  • PIPELINE_NAME es el nombre de la canalización de entrega que describe el progreso de la implementación automatizada que anulas.

  • TARGET_NAME es el nombre del destino en el que realizas la implementación manual.

El efecto de la implementación manual en el progreso

Cuando implementas de forma manual en un destino específico y, luego, promueves la versión sin especificar un destino, Google Cloud Deploy lo promueve al siguiente destino correcto en el progreso. Esto se debe a que el servicio realiza un seguimiento del objetivo más reciente en el que se implementó una versión. Si la versión ya está en el último objetivo en el progreso, Google Cloud Deploy muestra un mensaje que indica que no hay más destinos para promover.

¿Qué sigue?