Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, aprenderá a usar el enrutamiento basado en reglas con Azure Container Apps. Con el enrutamiento basado en reglas, se crea un nombre de dominio completo (FQDN) en el entorno de aplicaciones de contenedor. Después, use reglas para enrutar las solicitudes de este FQDN a diferentes aplicaciones de contenedor, en función de la ruta de acceso de cada solicitud.
Prerrequisitos
Cuenta de Azure con una suscripción activa.
- Si no tiene ninguna, puede crear una gratis.
Instale la CLI de Azure.
Configuración
Ejecute el comando siguiente para iniciar sesión en Azure desde la CLI.
az login
Para asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando de actualización.
az upgrade
Omita las advertencias sobre los módulos que están actualmente en uso.
Instale o actualice la extensión azure Container Apps para la CLI.
Si recibe errores sobre los parámetros que faltan al ejecutar comandos
az containerapp
en la CLI de Azure o cmdlets desde el móduloAz.App
de PowerShell, asegúrese de que tiene instalada la versión más reciente de la extensión Azure Container Apps.az extension add --name containerapp --upgrade
Nota:
A partir de mayo de 2024, las extensiones de la CLI de Azure ya no habilitan las características en vista previa de forma predeterminada. Para acceder a las características de la versión preliminar de Container Apps, instale la extensión Container Apps con
--allow-preview true
.az extension add --name containerapp --upgrade --allow-preview true
Ahora que está instalada la extensión o el módulo actual, registre los espacios de nombres
Microsoft.App
yMicrosoft.OperationalInsights
.az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Creación de variables de entorno
Cree las siguientes variables de entorno.
CONTAINER_APP_1_NAME="my-container-app-1"
CONTAINER_APP_1_IMAGE="mcr.microsoft.com/k8se/quickstart:latest"
CONTAINER_APP_1_TARGET_PORT="80"
CONTAINER_APP_2_NAME="my-container-app-2"
CONTAINER_APP_2_IMAGE="mcr.microsoft.com/dotnet/samples:aspnetapp"
CONTAINER_APP_2_TARGET_PORT="8080"
LOCATION="eastus"
RESOURCE_GROUP="my-container-apps"
ENVIRONMENT_NAME="my-container-apps-env"
ROUTE_CONFIG_NAME="my-route-config"
Creación de aplicaciones de contenedor
Ejecute el siguiente comando para crear la primera aplicación contenedora. Esta aplicación contenedora usa la imagen de inicio rápido de Container Apps.
az containerapp up \ --name $CONTAINER_APP_1_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_1_IMAGE \ --target-port $CONTAINER_APP_1_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdn
Ejecute el siguiente comando para crear la segunda aplicación contenedora. Esta aplicación contenedora usa la imagen de inicio rápido de ASP.NET.
az containerapp up \ --name $CONTAINER_APP_2_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --environment $ENVIRONMENT_NAME \ --image $CONTAINER_APP_2_IMAGE \ --target-port $CONTAINER_APP_2_TARGET_PORT \ --ingress external \ --query properties.configuration.ingress.fqdn
Cree la configuración de ruta HTTP.
Cree el siguiente archivo y guárdelo como
routing.yml
.rules: - description: App 1 rule routes: - match: prefix: /app1 action: prefixRewrite: / targets: - containerApp: my-container-app-1 - description: App 2 rule routes: - match: path: /app2 action: prefixRewrite: / - match: path: / targets: - containerApp: my-container-app-2
Esta configuración define dos reglas de enrutamiento para el tráfico HTTP.
Propiedad Descripción description
Etiqueta legible para la regla routes.match.prefix
Prefijo de ruta de dirección URL que debe coincidir. Por ejemplo: /api
.routes.action.prefixRewrite
Con qué reemplazar el prefijo coincidente antes de reenviarlo. targets.containerApp
Nombre de la aplicación contenedora donde se envía la solicitud de ruta coincidente. Estas reglas permiten que diferentes rutas en tu dominio se enruten a diferentes aplicaciones de contenedor, al mismo tiempo que modifican la ruta de la solicitud antes de llegar a la aplicación de destino.
Otras propiedades no enumeradas que pueden afectar a las rutas incluyen lo siguiente.
Propiedad Descripción route.match.path
Definición de ruta de coincidencia exacta. route.match.pathSeparatedPrefix
Coincide con las rutas en los límites "/" en lugar de cualquier texto. Por ejemplo, si establece el valor en /product
, coincidirá con/product/1
, pero no con/product1
.route.match.caseSensitive
Controla si los patrones de ruta coinciden o no con mayúsculas y minúsculas. target.label
Enrutar a una revisión etiquetada específica dentro de una aplicación contenedora. target.revision
Enrutar a una revisión específica dentro de una aplicación contenedora. Ejecute el siguiente comando para crear la configuración de ruta HTTP.
az containerapp env http-route-config create \ --http-route-config-name $ROUTE_CONFIG_NAME \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --yaml routing.yml \ --query properties.fqdn
El nombre de dominio completo (FQDN) de la configuración de ruta HTTP tiene este aspecto:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Asegúrese de que ambas aplicaciones de contenedor ya existen.
Cree el siguiente archivo Bicep y guárdelo como
routing.bicep
.resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = { name: 'my-container-apps-env' location: 'eastus' tags: {} properties: { workloadProfiles: [ { workloadProfileType: 'Consumption' name: 'Consumption' } ] } } resource httpRouteConfig 'Microsoft.App/managedEnvironments/httpRouteConfigs@2024-10-02-preview' = { parent: containerAppsEnvironment name: 'my-route-config' location: 'eastus' properties: { rules: [ { description: 'App 1 rule' routes: [ { match: { prefix: '/app1' } action: { prefixRewrite: '/' } } ] targets: [ { containerApp: 'my-container-app-1' } ] } { description: 'App 2 rule' routes: [ { match: { path: '/app2' } action: { prefixRewrite: '/' } } { match: { path: '/' } } ] targets: [ { containerApp: 'my-container-app-2' } ] } ] } } output fqdn string = httpRouteConfig.properties.fqdn
Implemente el archivo de Bicep con el comando siguiente:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicep
En la salida, busque
outputs
, que contiene el nombre de dominio completo (FQDN) de la configuración de ruta HTTP. Por ejemplo:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Comprobación de la configuración de rutas HTTP
Vaya al FQDN de configuración de ruta HTTP con la ruta de acceso
/app1
.Por ejemplo:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1
.Verá la imagen de inicio rápido de Container Apps.
Vaya al FQDN de configuración de ruta HTTP con la ruta de acceso
/app2
.Por ejemplo:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2
.Verá la imagen de inicio rápido ASP.NET.
Limpieza de recursos
Si no va a seguir usando esta aplicación, ejecute el siguiente comando para eliminar el grupo de recursos junto con todos los recursos creados en el inicio rápido.
Precaución
El siguiente comando elimina el grupo de recursos especificado y todos los recursos contenidos en él. Si los recursos fuera del ámbito de este inicio rápido existen en el grupo de recursos especificado, también se eliminarán.
az group delete --name my-container-apps