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 el modo de revisión múltiple 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.
Configurar la separación de tráfico
Configure la división del tráfico entre revisiones mediante el comando az containerapp ingress traffic set
. Puede especificar las revisiones por nombre con el parámetro --revision-weight
o por etiqueta de revisión con el parámetro --label-weight
.
El siguiente comando establece el peso del tráfico de cada revisión en un 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 del marcador de posición rodeados de <>
por los propios.
Este comando establece el peso del tráfico de la <LABEL_1> de revisión en un 80 % y la <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 de contenedor en Azure Portal.
- Seleccione Administración de revisiones en el menú lateral izquierdo.
- Si el modo de revisión es único, establezca el modo en múltiple.
- Seleccione Elegir el 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últiple.
- Seleccione Mostrar revisiones inactivas.
- Si no tiene revisiones múltiples, 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 Activa para las revisiones a las que desea enrutar el tráfico.
- Escriba el porcentaje de tráfico que desea enrutar a cada revisión en 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 propiedades de configuration.ingress.traffic
a la sección ingress
de la plantilla de aplicación contenedora. Puede especificar las revisiones por nombre con la propiedad revisionName
o por etiqueta de revisión con la propiedad label
.
En el ejemplo siguiente, se establece el 100 % del tráfico a la última revisión implementada:
{
...
"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 de 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.
En la siguiente plantilla de ejemplo, se enruta todo el tráfico a la última revisión implementada:
"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.
En la plantilla siguiente, se 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 desee 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.
En la siguiente plantilla de ejemplo, se aplican etiquetas a diferentes revisiones.
"ingress": {
"traffic": [
{
"revisionName": "myapp--knowngoodrevision",
"weight": 100
},
{
"revisionName": "myapp--98fdgt",
"weight": 0,
"label": "staging"
}
]
}