Compartir vía


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

  1. Vaya a la aplicación de contenedor en Azure Portal.
  2. Seleccione Administración de revisiones en el menú lateral izquierdo.
  3. Si el modo de revisión es único, establezca el modo en múltiple.
    1. Seleccione Elegir el modo de revisión.
    2. Seleccione Múltiple: varias revisiones activas simultáneamente.
    3. Seleccione Aplicar.
    4. Espere a que el modo de revisión se actualice a múltiple. Captura de pantalla de la configuración del modo de revisión de administración de revisiones.
  4. Seleccione Mostrar revisiones inactivas.
  5. Si no tiene revisiones múltiples, puede crear una nueva revisión.
    1. Seleccione Crear nueva revisión.
    2. Puede usar la configuración predeterminada o personalizar la revisión.
    3. Escriba un nombre o sufijo para la revisión.
    4. Seleccione Crear. Captura de pantalla de Creación e implementación de una nueva revisión.
    5. Espere a que se implemente la revisión.
  6. Seleccione Activa para las revisiones a las que desea enrutar el tráfico.
  7. 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 %.
  8. Seleccione Guardar. Captura de pantalla de la división del tráfico en la administración de revisiones.

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"
    }
  ]
}

Pasos siguientes