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

Knative Serving te permite especificar qué revisiones deben recibir tráfico y los porcentajes de tráfico que recibe una revisión. Esta función te permite restaurar una revisión anterior, lanzar gradualmente una revisión (también conocida 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 gestionar el tráfico a tus revisiones de Knative Serving.

Restaurar una revisión anterior

Para volver a una revisión anterior, sigue estos pasos:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

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

  3. Haga clic en la pestaña Revisiones para ver la lista de revisiones actuales de ese servicio.

  4. En la lista de revisiones, haga clic en el icono de los tres puntos situado a la derecha de la revisión a la que quiere volver:

  5. Haga clic en Gestionar tráfico para mostrar el formulario de gestión de tráfico:

    1. En la lista desplegable, selecciona la revisión anterior a la que quieras volver.
    2. Asigna el 100 % del tráfico a esa revisión anterior.
    3. Asigna el 0 % a la revisión que se está sirviendo.
    4. Haz clic en Guardar.

Línea de comandos

Usa el siguiente comando:

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

  • Sustituye SERVICE por el nombre del servicio.
  • Sustituye REVISION por el nombre de la revisión a la que quieres volver.

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

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

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

    Sustituir

    • REVISION con el nombre de la revisión a la que quieres volver.
  3. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml

Implementar una revisión de forma gradual

Para lanzar una nueva revisión de forma gradual (despliegue azul-verde), sigue estos pasos:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

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

  3. Haz clic en Desplegar nueva revisión.

  4. Rellena el formulario de implementación según sea necesario, pero asegúrate de que la casilla Servir esta revisión de inmediato esté DESMARCADA.

  5. Haz clic en Desplegar.

  6. Haz clic en Gestionar tráfico.

  7. La nueva revisión aparece en la lista, pero con un porcentaje del 0 %: actualmente no está sirviendo tráfico. En el formulario:

    1. Establece el porcentaje que quieras; por ejemplo, 5. Ten en cuenta que el porcentaje de la versión que se está publicando se reduce automáticamente en la misma cantidad.
    2. Haz clic en Guardar.
    3. Repite los pasos de Gestionar tráfico, pero con porcentajes diferentes. Aumenta el porcentaje según sea necesario para la nueva revisión. No es necesario volver a implementar para cambiar los porcentajes de tráfico.

Línea de comandos

  1. Para desplegar la revisión que quieras lanzar gradualmente, configurándola inicialmente para que no reciba tráfico, usa el comando update con el parámetro --no-traffic:

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

    Sustituye IMAGE por la imagen que vas a implementar.

  2. Especifique el porcentaje de tráfico que quiere que gestione la nueva revisión. Por ejemplo, el 5 %:

    gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
    • Sustituye SERVICE por el nombre del servicio.
    • Sustituye REVISION por el nombre de la revisión que vas a implementar gradualmente. Para especificar la última revisión, puedes usar LATEST, por ejemplo, LATEST=5.
    • Sustituye PERCENTAGE por el porcentaje de tráfico que quieras enviar a la nueva revisión (por ejemplo, 5 para enviarle el 5% del tráfico).
  3. Cuando el rendimiento de la revisión sea satisfactorio, repita el paso anterior, pero aumente el valor del porcentaje según lo desee.update-traffic

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. Haz los cambios de configuración que quieras en el servicio, tal como se describe en las distintas páginas de configuración, y especifica el nombre de revisión que quieras para la nueva revisión:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    template:
      metadata:
        annotations:
          ...
        name: REVISION-NAME
     ```
    
    Replace
    
    • REVISION-NAME con el nombre que quieras que tenga la nueva revisión.
  3. Debajo del atributo spec, busque y actualice el atributo traffic para que la nueva revisión solo sirva 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. Sustituir

    • REVISION-NEW con el nombre de la revisión que vas a lanzar de forma gradual.
    • REVISION-FORMER con el nombre de la revisión que se está publicando.
    • PERCENT-NEW con el porcentaje de tráfico que quiera enviar a la nueva revisión. Por ejemplo, use 10 para enviar el 10% del tráfico a esa revisión.
    • PERCENT-FORMER con el porcentaje de tráfico que quieras enviar a la revisión antigua

Dividir el tráfico entre varias revisiones

Para dividir el tráfico entre dos o más revisiones, sigue estos pasos:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

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

  3. Haz clic en Gestionar tráfico.

  4. Se muestra la nueva revisión que se está publicando. En el formulario:

    1. Define el porcentaje de la revisión que se está sirviendo actualmente para conseguir la división que quieras.
    2. Selecciona una de las revisiones anteriores en la lista desplegable y asigna el porcentaje que quieras.
    3. Para dividir el tráfico entre más revisiones, haz clic en Añadir revisión, selecciona la revisión que quieras y define el porcentaje de división.
    4. Haz clic en Guardar.

Línea de comandos

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

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

Sustituye:

  • SERVICE con el nombre del servicio.
  • LIST con una lista de revisiones delimitada por comas de las que quieras recibir tráfico y el porcentaje de tráfico correspondiente, que sume un 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 en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. A continuación, puedes modificar ese archivo YAML e implementar los cambios con el comando gcloud run services replace. Debe asegurarse de modificar solo los atributos especificados.

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. En el archivo local, actualice el atributo traffic para que la nueva revisión sirva 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 100. Sustituir

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

    gcloud run services replace service.yaml

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

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

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

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

  3. Haz clic en Desplegar nueva revisión.

  4. Rellena el formulario de implementación según sea necesario y asegúrate de marcar la casilla Servir esta revisión de inmediato. De esta forma, se anulará cualquier división de tráfico que se haya creado y la nueva revisión servirá el 100 % del tráfico.

  5. Haz clic en Desplegar.

Línea de comandos

Para enviar todo el tráfico a la revisión implementada más recientemente, sigue estos pasos:

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

Sustituye SERVICE por el nombre del servicio.

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. En el archivo local, actualice 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. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml

Usar etiquetas para hacer pruebas, migrar tráfico y restaurar versiones

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

Un caso práctico habitual de esta función es usarla para probar y verificar una revisión de un servicio nuevo antes de que sirva tráfico, siguiendo esta secuencia típica:

  1. Ejecuta pruebas de integración en un contenedor durante el desarrollo.
  2. Implementa el contenedor en un Google Cloud proyecto que solo uses para las pruebas, que no sirva tráfico y que se pruebe con una revisión etiquetada.
  3. Implementarla en producción sin servir tráfico y probarla con una revisión etiquetada en producción.
  4. Migra el tráfico a la revisión etiquetada.

Desplegar una nueva revisión etiquetada

Para desplegar una nueva revisión de un servicio en producción, sigue estos pasos:

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

Sustituye:

  • IMAGE_URL con la URL de la imagen
  • TAG_NAME con el nombre de la etiqueta en minúsculas

La etiqueta te permite probar directamente la nueva revisión en una URL específica sin servir tráfico. La URL de prueba empieza por el nombre de la etiqueta que has proporcionado: http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io

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

Migrar tráfico a una revisión etiquetada

Después de confirmar que la nueva revisión funciona correctamente, puedes empezar a migrar el tráfico a ella mediante la Google Cloud consola, la línea de comandos gcloud o un archivo YAML:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

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

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

  4. Haz clic en Gestionar tráfico.

  5. Busca el nombre de la revisión etiquetada: aparece en la lista, pero con un porcentaje del 0 %, ya que no está sirviendo tráfico. En el formulario Gestionar tráfico*:

    1. Establece el porcentaje que quieras; por ejemplo, 5. Ten en cuenta que el porcentaje de la versión que se está publicando se reduce automáticamente en la misma cantidad.
    2. Haz clic en Guardar.
    3. Durante un periodo de horas o días, según sea necesario, repite los pasos de Gestionar tráfico, pero con porcentajes modificados. 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, sigue estos pasos:

gcloud run deploy update-traffic myservice --tag TAG_NAME=TRAFFIC_PERCENT

Sustituir

  • TAG_NAME con el nombre de la etiqueta a la que va a migrar el tráfico
  • TRAFFIC_PERCENT con el porcentaje de tráfico que quiera que sirva la revisión etiquetada. Por ejemplo, 1.

YAML

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

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

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

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. Realice los cambios de configuración que quiera en el servicio, tal como se describe en las distintas páginas de configuración.

  3. Debajo del atributo spec, busque y actualice el atributo traffic de la revisión etiquetada para que esta solo sirva 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. Sustituir

    • REVISION con el nombre de la revisión etiquetada.
    • TAG_NAME con el nombre de la etiqueta que vas a implementar gradualmente.
    • PERCENT-NEW con el porcentaje de tráfico que quiera enviar a la revisión etiquetada. Por ejemplo, use 10 para enviar el 10% del tráfico a esa revisión.
    • REVISION-FORMER con el nombre de la revisión que se está publicando.
    • PERCENT-FORMER con el porcentaje de tráfico que quieras enviar a la revisión antigua
  4. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml