Knative serving te permite especificar qué revisiones deben recibir tráfico y especificar 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 Knative serving.
Revierte a una revisión anterior
Para revertir a una revisión anterior, debes hacer lo siguiente:
Console
Ve a Knative serving en la consola de Google Cloud:
Ubicar el servicio en la lista de servicios y hacer clic en él
Hacer clic en la pestaña Revisions (Revisiones) para ver la lista de revisiones actuales de ese servicio
En la lista de revisiones, debes hacer clic en el ícono de puntos suspensivos a la derecha de la revisión que deseas revertir:
Hacer clic en Manage Traffic (Administrar tráfico) para ver el formulario de administración de tráfico:
- Selecciona la revisión anterior a la que deseas revertir en la lista desplegable.
- Establece el porcentaje de tráfico de esa revisión anterior en 100.
- Establece el porcentaje de la revisión actual en 0.
- 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.
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 Knative serving.
En tu archivo local, actualiza el atributo
traffic
, que se encuentra enspec
: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
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
Ve a Knative serving en la consola de Google Cloud:
Ubicar el servicio en la lista de servicios y hacer clic en él
Hacer clic en Implementar una nueva revisión
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
Haz clic en Implementar.
Hacer clic en Administrar tráfico.
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:
- 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.
- Haz clic en Guardar.
- 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
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.
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.
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.
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 Knative serving.
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
Debajo del atributo
spec
, ubica y actualiza el atributotraffic
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
Ve a Knative serving en la consola de Google Cloud:
Ubicar el servicio en la lista de servicios y hacer clic en él
Hacer clic en Administrar tráfico.
Se muestra la revisión nueva actual. En el formulario, haz lo siguiente:
- Establece el porcentaje de la revisión actual en la división deseada.
- Selecciona una de las revisiones anteriores en la lista desplegable y configúrala en el porcentaje deseado.
- 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.
- 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.
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 Knative serving.
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. Reemplazar
- 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.
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
Ve a Knative serving en la consola de Google Cloud:
Ubicar el servicio en la lista de servicios y hacer clic en él
Hacer clic en Implementar una nueva revisión
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.
Haz 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.
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 Knative serving.
En tu archivo local, actualiza el atributo
traffic
, que se encuentra enspec
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
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:
- Ejecuta pruebas de integración en un contenedor durante el desarrollo.
- 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.
- Impleméntalo en producción sin entregar tráfico y pruébalo con una revisión etiquetada en producción.
- 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 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
, debes 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
Ve a Knative serving en la consola de Google Cloud:
Ubica el servicio en la lista de servicios y haz clic en él:
Selecciona la revisión etiquetada a la que deseas enviar tráfico:
Hacer clic en Administrar tráfico.
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:
- 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.
- Haz clic en Guardar.
- 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.
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 Knative serving.
Realiza los cambios de configuración deseados en el servicio como se describe en las distintas páginas de configuración.
Debajo del atributo
spec
, ubica y actualiza el atributotraffic
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. Reemplazar
- 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
Reemplaza el servicio por la configuración nueva mediante el comando siguiente:
gcloud run services replace service.yaml