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

La entrega de Knative te permite especificar qué revisiones deben recibir tráfico y determinar los porcentajes de tráfico que recibe una revisión. Esta función te permite revertir a una revisión anterior, lanzar una revisión de forma gradual (también conocido como implementación azul-verde) 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 entrega de Knative.

Revierte a una revisión anterior

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

Console

  1. Ve a la entrega de Knative en la consola de Google Cloud:

    Ir a la entrega de Knative

  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:

  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 la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de entrega de Knative.

  2. En tu archivo local, actualiza el atributo traffic, que se encuentra en spec:

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

    Reemplazar

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

    gcloud run services replace service.yaml

Realiza un lanzamiento gradual de una revisión

Para lanzar una nueva revisión de forma gradual (implementación azul-verde), debes hacer lo siguiente:

Console

  1. Ve a la entrega de Knative en la consola de Google Cloud:

    Ir a la entrega de Knative

  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. A fin de implementar la revisión que deseas lanzar de manera gradual y establecerla para que no reciba tráfico al comienzo, usa el comando update con el parámetro --no-traffic:

    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 la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de entrega de Knative.

  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 quieras para 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 100. Reemplazar

    • REVISION-NEW por el nombre de la revisión que deseas realizar de manera gradual
    • REVISION-FORMER por el nombre de la revisión que entrega en este momento
    • 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

Divide el tráfico entre varias revisiones

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

Console

  1. Ve a la entrega de Knative en la consola de Google Cloud:

    Ir a la entrega de Knative

  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 lo siguiente:

  • SERVICE por el nombre del servicio
  • LIST con una lista delimitada por comas de revisiones de las que deseas recibir tráfico y el porcentaje de tráfico correspondiente, hasta un total de 100%:
    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
    por ejemplo, hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50.

YAML

Puedes descargar la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de entrega de Knative.

  2. En tu archivo local, actualiza el atributo traffic para que la revisión nueva solo entregue 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 comando siguiente:

    gcloud run services replace service.yaml

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. Ve a la entrega de Knative en la consola de Google Cloud:

    Ir a la entrega de Knative

  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 la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de entrega de Knative.

  2. En tu archivo local, actualiza el atributo traffic, que se encuentra en spec:

    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 comando siguiente:

    gcloud run services replace service.yaml

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 lo siguiente:

  • 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 de prueba comienza con el nombre de la etiqueta que proporcionaste: http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

Por ejemplo, si usaste el nombre de etiqueta green en el servicio myservice, deberías probar la revisión etiquetada en la URL: https://green---myservice.default.kuberun.11.111.11.111.nip.io.

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 la consola de Google Cloud, la línea de comandos de gcloud o un archivo YAML:

Console

  1. Ve a la entrega de Knative en la consola de Google Cloud:

    Ir a la entrega de Knative

  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:

  4. Hacer clic en Administrar tráfico.

  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 deploy update-traffic myservice --tag TAG_NAME=TRAFFIC_PERCENT

Reemplazar

  • 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 la configuración de un servicio existente en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. Luego, puedes modificar ese archivo YAML e implementar esos cambios con el comando gcloud run services replace. Debes asegurarte de modificar solo los atributos especificados.

  1. Descarga la configuración del servicio en un archivo llamado service.yaml en el lugar de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Reemplaza SERVICE por el nombre de tu servicio de entrega de Knative.

  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 comando siguiente:

    gcloud run services replace service.yaml