Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leert u hoe u routering op basis van regels gebruikt met Azure Container Apps. Met regelgebaseerde routering maakt u een FQDN (Fully Qualified Domain Name) in uw container-apps-omgeving. Vervolgens gebruikt u regels om aanvragen voor deze FQDN naar verschillende container-apps te routeren, afhankelijk van het pad van elke aanvraag.
Routing- en autorisatiemodel
HTTP-routeconfiguraties (httpRouteConfigs) opereren op het Container Apps-omgevingsniveau. Een route kan elke container-app in dezelfde omgeving targeten, ongeacht de individuele ingangsinstelling van de doel-app. Aangezien de FQDN van de route wordt gepubliceerd onder het domein van de omgeving, kan een route een openbaar toegangspunt bieden dat verzoeken doorstuurt naar een container-app die interne ingang gebruikt (external: false). Dit gedrag maakt het mogelijk om meerdere apps onder één host samen te stellen.
Rechten voor HTTP-routeconfiguraties zijn beperkt tot de beheerde omgeving in plaats van tot individuele container-apps. Het aanmaken, bijwerken of verwijderen van een route vereist toestemming Microsoft.App/managedEnvironments/httpRouteConfigs/write van de omgeving. Er is geen extra toestemming vereist in de target container-app. Dit gedrag is consistent met de omgeving als gedeelde vertrouwensgrens, waarbij alle container-apps in een omgeving aan dezelfde klant behoren. Elke principal met een environment-scoped rol die toestemming bevat httpRouteConfigs/write , zoals Contributor on the environment, kan routes maken die elke container-app in die omgeving targeten.
Important
Een HTTP-routeconfiguratie kan een container-app blootstellen die interne ingress (external: false) gebruikt als je de app als routedoel configureert. De external: false instelling bepaalt de zichtbaarheid van de eigen FQDN van de app. Door deze configuratie te gebruiken, voorkomt de omgeving niet dat de app verkeer ontvangt via een omgevingsroute. Om een container-app onbereikbaar te houden van buiten de omgeving, verwijs je er niet naar als doel in een HTTP-routeconfiguratie. Plaats in plaats daarvan de app in een aparte omgeving zonder openbare routes, of gebruik netwerkniveau-controles om inkomend verkeer te beperken.
Vereiste voorwaarden
Azure-account met een actief abonnement.
- Als u geen account hebt, kunt u er gratis een maken.
Installeer de Azure CLI.
Configuratie
Voer de volgende opdracht uit, dus meld u aan bij Azure vanuit de CLI.
az loginVoer de upgradeopdracht uit om ervoor te zorgen dat u de nieuwste versie van de CLI uitvoert.
az upgradeNegeer eventuele waarschuwingen over modules die momenteel in gebruik zijn.
Nu de huidige extensie of module is geïnstalleerd, registreert u de
Microsoft.AppenMicrosoft.OperationalInsightsnaamruimten.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Omgevingsvariabelen maken
Maak de volgende omgevingsvariabelen.
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"
Container-apps maken
Voer de volgende opdracht uit om uw eerste container-app te maken. Deze container-app maakt gebruik van de Container Apps quickstart-image.
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.fqdnVoer de volgende opdracht uit om uw tweede container-app te maken. Deze container-app maakt gebruik van de ASP.NET quickstart-image.
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.fqdnHttp-routeconfiguratie maken.
Maak het volgende bestand en sla het op als
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-2Deze configuratie definieert twee routeringsregels voor HTTP-verkeer.
Opmerking
De volgorde van de routeringsregels is van belang.
Specifiekere voorvoegsels moeten vóór minder specifieke voorvoegsels staan.
Als de eerste regel bijvoorbeeld overeenkomt met het voorvoegsel /api, dat wordt gebruikt, zelfs als de tweede regel het voorvoegsel /api/v1 gebruikt.
Vastgoed Beschrijving descriptionMenselijk leesbaar label voor de regel routes.match.prefixURL-padvoorvoegsel dat moet overeenkomen. Bijvoorbeeld: /api.routes.action.prefixRewriteMet welk voorvoegsel het overeenkomende voorvoegsel moet worden vervangen voordat u het doorstuurt. targets.containerAppDe naam van de container-app waar overeenkomende routeaanvraag wordt verzonden. Met deze regels kunnen verschillende paden in uw domein worden gerouteerd naar verschillende container-apps terwijl ook het aanvraagpad wordt gewijzigd voordat het de doel-app bereikt.
Andere eigenschappen die niet worden vermeld die van invloed kunnen zijn op uw routes, zijn onder andere het volgende.
Vastgoed Beschrijving route.match.pathExacte overeenkomstpaddefinitie. route.match.pathSeparatedPrefixKomt overeen met routes bij '/' grenzen in plaats van willekeurige tekst. Als u bijvoorbeeld de waarde instelt op /product, dan komt deze overeen met/product/1, maar niet met/product1.route.match.caseSensitiveHiermee bepaalt u of routepatronen overeenkomen met hoofdlettergevoeligheid. target.labelRoute naar een specifieke gelabelde revisie in een container-app. target.revisionRoute naar een specifieke revisie binnen een container-app. Voer de volgende opdracht uit om de HTTP-routeconfiguratie te maken.
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.fqdnDe FQDN (Fully Qualified Domain Name) van uw HTTP-routeconfiguratie ziet er als volgt uit:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Zorg ervoor dat beide container-apps al bestaan.
Maak het volgende Bicep-bestand en sla het op als
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.fqdnImplementeer het Bicep-bestand met de volgende opdracht:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepZoek in de uitvoer
outputs, die de FQDN (Fully Qualified Domain Name) van uw HTTP-routeconfiguratie bevat. Voorbeeld:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
HTTP-routeconfiguratie controleren
Navigeer naar de FQDN van je HTTP-routeconfiguratie met het pad
/app1.Voorbeeld:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.U ziet de quickstart-afbeelding van Container Apps.
Navigeer naar de FQDN van je HTTP-routeconfiguratie met het pad
/app2.Voorbeeld:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.U ziet de snelstartafbeelding van ASP.NET.
Hulpmiddelen opruimen
Als u deze toepassing niet wilt blijven gebruiken, voert u de volgende opdracht uit om de resourcegroep te verwijderen, samen met alle resources die in deze quickstart zijn gemaakt.
Waarschuwing
Met de volgende opdracht verwijdert u de opgegeven resourcegroep en alle resources erin. Als resources buiten het bereik van deze quickstart aanwezig zijn in de opgegeven resourcegroep, worden ze ook verwijderd.
az group delete --name my-container-apps