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 loginPara asegurarse de que ejecuta la versión más reciente de la CLI, ejecute el comando de actualización.
az upgradeOmita las advertencias sobre los módulos que están actualmente en uso.
Ahora que está instalada la extensión o el módulo actual, registre los espacios de nombres
Microsoft.AppyMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz 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.fqdnEjecute 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.fqdnCree 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-2Esta configuración define dos reglas de enrutamiento para el tráfico HTTP.
Propiedad Descripción descriptionEtiqueta legible para la regla routes.match.prefixPrefijo de ruta de dirección URL que debe coincidir. Por ejemplo: /api.routes.action.prefixRewriteCon qué reemplazar el prefijo coincidente antes de reenviarlo. targets.containerAppNombre 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.pathDefinición de ruta de coincidencia exacta. route.match.pathSeparatedPrefixCoincide 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.caseSensitiveControla si los patrones de ruta coinciden o no con mayúsculas y minúsculas. target.labelEnrutar a una revisión etiquetada específica dentro de una aplicación contenedora. target.revisionEnrutar 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.fqdnEl 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.fqdnImplemente el archivo de Bicep con el comando siguiente:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepEn 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