División del tráfico en Azure Container Apps
De forma predeterminada, cuando la entrada está habilitada, todo el tráfico se enruta a la revisión implementada más reciente. Al habilitar varios modos de revisión en la aplicación contenedora, puede dividir el tráfico entrante entre revisiones activas.
La división de tráfico es útil para probar las actualizaciones de la aplicación contenedora. Puede usar la división de tráfico para realizar gradualmente una nueva revisión en implementaciones azul-verde o en pruebas A/B.
La división de tráfico se basa en el peso (porcentaje) del tráfico que se enruta a cada revisión. El peso combinado de todas las reglas de división de tráfico debe ser igual al 100 %. Puede especificar la revisión por nombre de revisión o etiqueta de revisión.
En este artículo se muestra cómo configurar reglas de división de tráfico para la aplicación contenedora. Para ejecutar los ejemplos siguientes, necesita una aplicación contenedora con varias revisiones.
Configuración de la división de tráfico
Configure la división de tráfico entre revisiones mediante el az containerapp ingress traffic set
comando . Puede especificar las revisiones por nombre con el parámetro o por etiqueta --revision-weight
de revisión con el --label-weight
parámetro .
El siguiente comando establece el peso del tráfico de cada revisión en 50 %:
az containerapp ingress traffic set \
--name <APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--revision-weight <REVISION_1>=50 <REVISION_2>=50
Asegúrese de reemplazar los valores de marcador de posición rodeados por <>
sus propios valores.
Este comando establece el peso del tráfico de la revisión <LABEL_1> en un 80 % y el LABEL_2> de revisión <en 20 %:
az containerapp ingress traffic set \
--name <APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--label-weight <LABEL_1>=80 <LABEL_2>=20
- Vaya a la aplicación contenedora en Azure Portal.
- Seleccione Administración de revisiones en el menú izquierdo.
- Si el modo de revisión es Single, establezca el modo en múltiplo.
- Seleccione Elegir modo de revisión.
- Seleccione Múltiple: varias revisiones activas simultáneamente.
- Seleccione Aplicar.
- Espere a que el modo de revisión se actualice a múltiplo.
- Seleccione Mostrar revisiones inactivas.
- Si no tiene varias revisiones, puede crear una nueva revisión.
- Seleccione Crear nueva revisión.
- Puede usar la configuración predeterminada o personalizar la revisión.
- Escriba un nombre o sufijo para la revisión.
- Seleccione Crear.
- Espere a que se implemente la revisión.
- Seleccione Activo para las revisiones a las que desea enrutar el tráfico.
- Escriba el porcentaje de tráfico que desea enrutar a cada revisión de la columna Tráfico . El porcentaje combinado de todo el tráfico debe ser igual al 100 %.
- Seleccione Guardar.
Habilite la división de tráfico agregando las configuration.ingress.traffic
propiedades a la sección de la ingress
plantilla de aplicación de contenedor. Puede especificar las revisiones por nombre con la revisionName
propiedad o por etiqueta de revisión con la label
propiedad .
En el ejemplo siguiente se establece el 100 % del tráfico en la revisión implementada más reciente:
{
...
"configuration": {
"ingress": {
"external": true,
"targetPort": 80,
"allowInsecure": false,
"traffic": [
{
"latestRevision": true,
"weight": 100
}
]
},
},
En el ejemplo siguiente se muestra la división de tráfico entre dos revisiones por nombre:
{
...
"configuration": {
"ingress": {
"external": true,
"targetPort": 80,
"allowInsecure": false,
"traffic": [
{
"revisionName": "my-example-app--5g3ty20",
"weight": 50
},
{
"revisionName": "my-example-app--qcfkbsv",
"weight": 50
}
],
},
},
En el ejemplo siguiente se muestra la división del tráfico entre dos revisiones por etiqueta:
{
...
"configuration": {
"ingress": {
"external": true,
"targetPort": 80,
"allowInsecure": false,
"traffic": [
{
"weight": 50,
"label": "v-2"
},
{
"weight": 50,
"label": "v-1"
}
],
},
},
Casos de uso
En los siguientes escenarios se describen las opciones de configuración para casos de uso comunes. Los ejemplos se muestran en formato JSON, pero también puede usar Azure Portal o la CLI de Azure para configurar la división de tráfico.
Iteración rápida
En situaciones en las que suele iterar el desarrollo de la aplicación de contenedor, puede establecer reglas de tráfico para siempre cambiar todo el tráfico a la revisión implementada más reciente.
La plantilla de ejemplo siguiente enruta todo el tráfico a la revisión implementada más reciente:
"ingress": {
"traffic": [
{
"latestRevision": true,
"weight": 100
}
]
}
Una vez que esté satisfecho con la revisión más reciente, puede bloquear el tráfico a esa revisión mediante la actualización de la configuración ingress
a:
"ingress": {
"traffic": [
{
"latestRevision": false, // optional
"revisionName": "myapp--knowngoodrevision",
"weight": 100
}
]
}
Actualización de la revisión existente
Considere una situación en la que tiene una buena revisión conocida que atiende el 100 % del tráfico, pero quiere emitir una actualización en la aplicación. Puede implementar y probar nuevas revisiones mediante sus puntos de conexión directos sin afectar a la revisión principal que sirve a la aplicación.
Una vez que esté satisfecho con la revisión actualizada, puede cambiar una parte del tráfico a la nueva revisión para pruebas y comprobación.
La plantilla siguiente mueve el 20 % del tráfico a la revisión actualizada:
"ingress": {
"traffic": [
{
"revisionName": "myapp--knowngoodrevision",
"weight": 80
},
{
"revisionName": "myapp--newerrevision",
"weight": 20
}
]
}
Almacenamiento provisional de microservicios
Al compilar microservicios, es posible que quiera mantener los puntos de conexión de producción y almacenamiento provisional para la misma aplicación. Use etiquetas para asegurarse de que el tráfico no cambie entre diferentes revisiones.
La plantilla de ejemplo siguiente aplica etiquetas a diferentes revisiones.
"ingress": {
"traffic": [
{
"revisionName": "myapp--knowngoodrevision",
"weight": 100
},
{
"revisionName": "myapp--98fdgt",
"weight": 0,
"label": "staging"
}
]
}