Reversiones, lanzamientos graduales y migración de tráfico

Cloud Run te permite especificar qué revisiones deben recibir tráfico y especificar los porcentajes de tráfico que recibe una revisión. Esta característica te permite revertir a una revisión anterior, implementar gradualmente una revisión y dividir el tráfico entre varias revisiones. En esta página, se describe cómo usar esta función para administrar el tráfico a las revisiones de Cloud Run.

Revierte a una revisión anterior

Para revertir a una revisión anterior, debes hacer lo siguiente:

Console

  1. Ir a Cloud Run

  2. Ubicar el servicio en la lista de servicios y hacer clic en él

  3. Hacer clic en la pestaña Revisions (Revisiones) para ver la lista de revisiones actuales de ese servicio

  4. En la lista de revisiones, debes hacer clic en el ícono de puntos suspensivos a la derecha de la revisión que deseas revertir:

    manage-traffic

  5. Hacer clic en Manage Traffic (Administrar tráfico) para ver el formulario de administración de tráfico:

    1. Selecciona la revisión anterior a la que deseas revertir en la lista desplegable.
    2. Establece el porcentaje de tráfico de esa revisión anterior en 100.
    3. Establece el porcentaje de la revisión actual en 0.
    4. Haz clic en Guardar.

Línea de comandos

Usa el siguiente comando:

gcloud run services update-traffic SERVICE --to-revisions REVISION=100

  • Reemplaza SERVICE por el nombre del servicio.
  • Reemplaza REVISION por el nombre de la revisión a la que deseas revertir.

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Debajo del atributo spec, ubica y actualiza el atributo traffic a lo siguiente:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - revisionName: REVISION
        percent: 100
    

    Reemplaza

    • REVISION por el nombre de la revisión que deseas revertir
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml
  4. Espera a que se complete la actualización: deberías ver un mensaje que indica que la revisión desde la que estás revirtiendo se implementó y entrega 0 por ciento del tráfico.

Realiza un lanzamiento gradual de una revisión

Para lanzar una nueva revisión de manera gradual, haz lo siguiente:

Console

  1. Ir a Cloud Run

  2. Ubicar el servicio en la lista de servicios y hacer clic en él

  3. Hacer clic en Implementar una nueva revisión

  4. Debes completar el formulario de implementación según sea necesario, pero asegurarte de que la casilla de verificación Aplicar esta revisión inmediatamente no esté marcada

  5. Hacer clic en Implementar

  6. Hacer clic en Administrar tráfico

  7. La revisión nueva aparece en la lista, pero con un porcentaje establecido como 0: no está entregando tráfico. En el formulario, haz lo siguiente:

    1. Establece el porcentaje deseado, por ejemplo, 5. Ten en cuenta que el porcentaje de la versión actual se reduce de forma automática en la misma cantidad.
    2. Haz clic en Guardar.
    3. Repite estos pasos para administrar el tráfico, pero con porcentajes cambiados, y aumenta el porcentaje según sea necesario para la revisión nueva. No es necesario volver a implementar para cambiar los porcentajes de tráfico.

Línea de comandos

  1. Implementa la revisión que deseas lanzar de manera gradual y, en un principio, configúrala para que no reciba tráfico:

    gcloud run deploy --image IMAGE --no-traffic

    Reemplaza IMAGE por la imagen que implementas.

  2. Especifica el porcentaje de tráfico que deseas que maneje la revisión nueva, por ejemplo, un 5%:

    gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
    • Reemplaza SERVICE por el nombre del servicio.
    • Reemplaza REVISION por el nombre de la revisión que implementas de manera gradual. Para especificar la última revisión, puedes usar LATEST, por ejemplo, LATEST=5.
    • Reemplaza PERCENTAGE por el porcentaje de tráfico que deseas enviar a la revisión nueva, por ejemplo, 5 para enviarle el 5% del tráfico.
  3. Una vez que el rendimiento de la revisión sea satisfactorio, repite el paso anterior update-traffic, pero aumenta el valor porcentual como desees.

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Realiza los cambios de configuración que desees en el servicio como se describe en las diversas páginas de configuración y especifica el nombre de la revisión que desees otorgarle a la revisión nueva:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    template:
      metadata:
        annotations:
          ...
        name: REVISION-NAME
     ```
    
    Replace
    
    • REVISION-NAME por el nombre que deseas que tenga la nueva revisión
  3. Debajo del atributo spec, ubica y actualiza el atributo traffic para que la nueva revisión entregue solo una pequeña cantidad de tráfico:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - revisionName: REVISION-NEW
        percent: PERCENT-NEW
      - revisionName: REVISION-FORMER
        percent: PERCENT-FORMER
    

    Ten en cuenta que los porcentajes deben sumar hasta 100. Reemplaza

    • REVISION-NEW por el nombre de la revisión que deseas realizar de manera gradual
    • REVISION-FORMER por el nombre de la revisión entrega actualmente
    • PERCENT-NEW por el porcentaje de tráfico que deseas enviar a la nueva revisión, por ejemplo, usa 10 para enviar el 10% del tráfico a esa revisión.
    • PERCENT-FORMER por el porcentaje de tráfico que deseas enviar a la revisión anterior
  4. Espera a que se complete la actualización: deberías ver un mensaje que indica que la nueva revisión que estás lanzando de forma gradual se implementó y está entregando el valor de porcentaje de tráfico que usaste.

Divide el tráfico entre varias revisiones

Para dividir el tráfico entre dos o más revisiones, debes hacer lo siguiente:

Console

  1. Ir a Cloud Run

  2. Ubicar el servicio en la lista de servicios y hacer clic en él

  3. Hacer clic en Administrar tráfico

  4. Se muestra la revisión nueva actual. En el formulario, haz lo siguiente:

    1. Establece el porcentaje de la revisión actual en la división deseada.
    2. Selecciona una de las revisiones anteriores en la lista desplegable y configúrala en el porcentaje deseado.
    3. Para dividir el tráfico entre más revisiones, haz clic en Agregar revisión, selecciona la revisión deseada y establece el porcentaje en la división que desees.
    4. Haz clic en Guardar.

Línea de comandos

Especifica las revisiones y el porcentaje de tráfico para cada revisión en una lista delimitada por comas:

gcloud run services update-traffic SERVICE --to-revisions LIST

  • Reemplaza SERVICE por el nombre del servicio.
  • Reemplaza LIST por una lista de revisiones y porcentajes delimitados por comas:
    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEx
    por ejemplo, hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50.

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Debajo del atributo spec, ubica y actualiza el atributo traffic para que la nueva revisión entregue solo una pequeña cantidad de tráfico:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - revisionName: REVISION-A
        percent: PERCENT-A
      - revisionName: REVISION-B
        percent: PERCENT-B
      - revisionName: REVISION-C
        percent: PERCENT-C
    

    Ten en cuenta que los porcentajes deben sumar hasta 100. Reemplaza

    • REVISION-A, REVISION-B, REVISION-C por las revisiones a las que asignas tráfico.
    • PERCENT-A, PERCENT-B, PERCENT-C por el porcentaje de la revisión correspondiente.
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml
  4. Espera a que se complete la actualización: deberías ver un mensaje que indica que la nueva revisión que estás lanzando de forma gradual se implementó y está entregando el 5 por ciento (o cualquier valor gradual que hayas usado) de tráfico.

Envía todo el tráfico a la última revisión

Cuando implementas una revisión nueva, puedes hacer que esta revisión y todas las futuras entreguen el 100% del tráfico lo antes posible, lo que anula cualquier división de tráfico establecida:

Console

  1. Ir a Cloud Run

  2. Ubicar el servicio en la lista de servicios y hacer clic en él

  3. Hacer clic en Implementar una nueva revisión

  4. Debes completar el formulario de implementación según sea necesario y marcar la casilla de verificación Aplicar esta revisión inmediatamente. Esto anulará cualquier división de tráfico existente, y la revisión nueva entregará el 100% del tráfico.

  5. Hacer clic en Implementar

Línea de comandos

Para enviar todo el tráfico a la última revisión que se implementó, ejecuta este comando:

gcloud run services update-traffic SERVICE --to-latest

Reemplaza SERVICE por el nombre del servicio.

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Debajo del atributo spec, busca y actualiza el atributo traffic a lo siguiente:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - latestRevision: true
        percent: 100
    
  3. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml
  4. Espera a que se complete la actualización: deberías ver un mensaje que indica que la revisión (más reciente) se implementó y que está entregando el 100 por ciento del tráfico.

Usa etiquetas para pruebas, migración de tráfico y reversión

Después de implementar un servicio, puedes crear una revisión nueva y asignarle una etiqueta que te permita acceder a ella en una URL específica sin entregar tráfico. Puedes usar esa etiqueta para migrar el tráfico de forma gradual a la revisión etiquetada y revertir una revisión etiquetada.

Un caso de uso común para esta función es usarla con el fin de probar y aprobar una revisión de servicio nueva antes de entregar tráfico, en esta secuencia típica:

  1. Ejecuta pruebas de integración en un contenedor durante el desarrollo.
  2. Implementa el contenedor en un proyecto de Google Cloud que uses solo para la etapa de pruebas y que no entregue tráfico. Luego, pruébalo con una revisión etiquetada.
  3. Impleméntalo en producción sin entregar tráfico y pruébalo con una revisión etiquetada en producción.
  4. Migra el tráfico a la revisión etiquetada.

Implementa una revisión etiquetada nueva

Para implementar una revisión nueva de un servicio existente en producción, ejecuta el siguiente comando:

gcloud run deploy myservice --image IMAGE_URL  --no-traffic --tag TAG_NAME

Reemplaza los siguientes elementos:

  • IMAGE_URL por la URL de la imagen
  • TAG_NAME por el nombre de la etiqueta en minúscula

La etiqueta te permite probar directamente la revisión nueva en una URL específica, sin entregar tráfico. La URL comienza con el nombre de etiqueta que proporcionaste: por ejemplo, si usaste el nombre de etiqueta green en el servicio myservice, debes probar la revisión etiquetada en la URL https://green---myservice-abcdef.a.run.app.

Migra el tráfico a una revisión etiquetada

Después de confirmar que la revisión nueva funciona de forma correcta, puedes comenzar a migrar el tráfico mediante Cloud Console, la línea de comandos de gcloud o un archivo YAML:

Console

  1. Ir a Cloud Run

  2. Ubica el servicio en la lista de servicios y haz clic en él:

  3. Selecciona la revisión etiquetada a la que deseas enviar tráfico:

    manage-traffic

  4. Hacer clic en Administrar tráfico (Manage Traffic)

  5. Ubica el nombre de la revisión etiquetada; está en la lista, pero con un porcentaje establecido en 0, lo que implica que, en este momento, no está entregando tráfico. En el formulario Administrar tráfico*, haz lo siguiente:

    1. Establece el porcentaje deseado, por ejemplo, 5. Ten en cuenta que el porcentaje de la versión actual se reduce de forma automática en la misma cantidad.
    2. Haz clic en Guardar.
    3. Durante un período de horas o días, según sea necesario, repite estos pasos de Administrar tráfico, pero aumenta el porcentaje según sea necesario para la revisión etiquetada. No es necesario volver a implementar para cambiar los porcentajes de tráfico.

Línea de comandos

Para migrar el tráfico a una etiqueta de revisión específica, ejecuta el siguiente comando:

gcloud run services update-traffic myservice --to-tags TAG_NAME=TRAFFIC_PERCENT

Reemplaza los siguientes elementos:

  • TAG_NAME por el nombre de la etiqueta a la que migras el tráfico
  • TRAFFIC_PERCENT por el porcentaje de tráfico que deseas que entregue la revisión etiquetada, por ejemplo, 1.

YAML

Puedes descargar y ver la configuración del servicio existente mediante el comando gcloud run services describe --format export, que genera resultados limpios en formato YAML. Luego, puedes modificar los campos que se describen a continuación y subir el YAML modificado mediante el comando gcloud beta run services replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Realiza los cambios de configuración deseados en el servicio como se describe en las distintas páginas de configuración.

  3. Debajo del atributo spec, ubica y actualiza el atributo traffic para la revisión etiquetada de modo que la revisión etiquetada solo entregue una pequeña cantidad de tráfico:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - revisionName: REVISION
        tag: TAG_NAME
        percent: PERCENT-NEW
      - revisionName: REVISION-FORMER
        percent: PERCENT-FORMER
    

    Ten en cuenta que los porcentajes deben sumar 100. Reemplaza los siguientes elementos:

    • REVISION por el nombre de la revisión etiquetada
    • TAG_NAME por el nombre de la etiqueta que lanzas de forma gradual
    • PERCENT-NEW por el porcentaje de tráfico que deseas enviar a la revisión etiquetada; por ejemplo, usa 10 para enviar el 10% del tráfico a esa revisión
    • REVISION-FORMER por el nombre de la revisión que entrega en este momento
    • PERCENT-FORMER por el porcentaje de tráfico que deseas enviar a la revisión anterior
  4. Reemplaza el servicio por la configuración nueva mediante el siguiente comando:

    gcloud beta run services replace service.yaml
  5. Espera a que se complete la actualización: deberías ver un mensaje que indica que la nueva revisión que estás lanzando de forma gradual se implementó y está entregando el valor de porcentaje de tráfico que usaste.