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
Ve a Knative Serving en la Google Cloud consola:
Busca el servicio en la lista de servicios y haz clic en él.
Haga clic en la pestaña Revisiones para ver la lista de revisiones actuales de ese servicio.
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:
Haga clic en Gestionar tráfico para mostrar el formulario de gestión de tráfico:
- En la lista desplegable, selecciona la revisión anterior a la que quieras volver.
- Asigna el 100 % del tráfico a esa revisión anterior.
- Asigna el 0 % a la revisión que se está sirviendo.
- 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.
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.
En el archivo local, actualice el atributo
traffic
, que se encuentra enspec
: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.
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
Ve a Knative Serving en la Google Cloud consola:
Busca el servicio en la lista de servicios y haz clic en él.
Haz clic en Desplegar nueva revisión.
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.
Haz clic en Desplegar.
Haz clic en Gestionar tráfico.
La nueva revisión aparece en la lista, pero con un porcentaje del 0 %: actualmente no está sirviendo tráfico. En el formulario:
- 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.
- Haz clic en Guardar.
- 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
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.
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).
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.
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.
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.
Debajo del atributo
spec
, busque y actualice el atributotraffic
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
Ve a Knative Serving en la Google Cloud consola:
Busca el servicio en la lista de servicios y haz clic en él.
Haz clic en Gestionar tráfico.
Se muestra la nueva revisión que se está publicando. En el formulario:
- Define el porcentaje de la revisión que se está sirviendo actualmente para conseguir la división que quieras.
- Selecciona una de las revisiones anteriores en la lista desplegable y asigna el porcentaje que quieras.
- 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.
- 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.
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.
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.
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
Ve a Knative Serving en la Google Cloud consola:
Busca el servicio en la lista de servicios y haz clic en él.
Haz clic en Desplegar nueva revisión.
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.
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.
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.
En el archivo local, actualice el atributo
traffic
, que se encuentra enspec
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
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:
- Ejecuta pruebas de integración en un contenedor durante el desarrollo.
- 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.
- Implementarla en producción sin servir tráfico y probarla con una revisión etiquetada en producción.
- 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
Ve a Knative Serving en la Google Cloud consola:
Busca el servicio en la lista de servicios y haz clic en él:
Selecciona la revisión etiquetada a la que quieras enviar tráfico:
Haz clic en Gestionar tráfico.
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*:
- 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.
- Haz clic en Guardar.
- 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.
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.
Realice los cambios de configuración que quiera en el servicio, tal como se describe en las distintas páginas de configuración.
Debajo del atributo
spec
, busque y actualice el atributotraffic
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
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml