Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come usare il routing basato su regole con App Azure Container. Con il routing basato su regole, si crea un nome di dominio completo (FQDN) nell'ambiente delle app contenitore. Si usano quindi le regole per instradare le richieste per questo FQDN a app contenitore diverse, a seconda del percorso di ogni richiesta.
Modello di instradamento e autorizzazione
Le configurazioni di rotte HTTP (httpRouteConfigs) operano a livello di ambiente Container Apps. Un percorso può indirizzare qualsiasi app container nello stesso ambiente, indipendentemente dall'impostazione di ingresso individuale dell'app target. Poiché il FQDN della route è pubblicato sotto il dominio dell'ambiente, un percorso può fornire un punto di ingresso pubblico che inoltra le richieste a un'app container che utilizza ingress interno (external: false). Questo comportamento consente la composizione di più app sotto un unico host.
I permessi per le configurazioni di routing HTTP sono riportati all'ambiente gestito piuttosto che alle singole app container. Creare, aggiornare o cancellare una route richiede il Microsoft.App/managedEnvironments/httpRouteConfigs/write permesso sull'ambiente. Non è necessario alcun permesso aggiuntivo sull'app container target. Questo comportamento è coerente con il fatto che l'ambiente sia un confine di trust condiviso, dove tutte le app container in un ambiente appartengono allo stesso cliente. Qualsiasi principale con un ruolo con ambito ambientale che include httpRouteConfigs/write permessi, come Contributor sull'ambiente, può creare percorsi che mirano a qualsiasi app container in quell'ambiente.
Importante
Una configurazione di routing HTTP può esporre un'app container che utilizza ingress interni (external: false) se configuri l'app come route target. L'impostazione external: false controlla la visibilità del FQDN dell'app. Utilizzando questa configurazione, l'ambiente non impedisce all'app di ricevere traffico attraverso una rotta a livello di ambiente. Per mantenere un'app container irraggiungibile dall'esterno dell'ambiente, non farla riferimento come target in nessuna configurazione di routing HTTP. Invece, posiziona l'app in un ambiente separato senza percorsi pubblici, oppure usa controlli a livello di rete per limitare il traffico in entrata (enbound traffic).
Prerequisiti
Account Azure con una sottoscrizione attiva.
- Se non hai un account, puoi crearlo gratuitamente.
Installare l'interfaccia della riga di comando di Azure.
Configurazione
Eseguire il comando seguente per accedere ad Azure dall'interfaccia della riga di comando.
az loginPer assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando, eseguire il comando di upgrade.
az upgradeIgnorare eventuali avvisi sui moduli attualmente in uso.
Ora che l'estensione o il modulo corrente è installato, registrate gli spazi dei nomi
Microsoft.AppeMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Creare variabili di ambiente
Creare le variabili di ambiente seguenti.
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"
Creare app contenitore
Eseguire il comando seguente per creare la prima app contenitore. Questa app di container utilizza l'immagine di avvio rapido di 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.fqdnEseguire il comando seguente per creare la seconda app contenitore. Questa app contenitore usa l'immagine di avvio rapido 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.fqdnCreare la configurazione della route HTTP.
Creare il file seguente e salvarlo come
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-2Questa configurazione definisce due regole di routing per il traffico HTTP.
Annotazioni
L'ordine delle regole di routing è importante.
I prefissi più specifici devono essere prima di prefissi meno specifici.
Ad esempio, se la prima regola corrisponde al prefisso /api, verrà usata anche se la seconda regola usa il prefisso /api/v1.
Proprietà Descrizione descriptionEtichetta leggibile per la regola routes.match.prefixPrefisso del percorso URL da trovare. Ad esempio: /api.routes.action.prefixRewriteCosa sostituire il prefisso corrispondente con prima dell'inoltro. targets.containerAppNome dell'app contenitore in cui vengono inviate le richieste di percorsi corrispondenti. Queste regole consentono a percorsi diversi del tuo dominio di instradarsi verso diverse app container, anche modificando il percorso della richiesta prima che raggiunga l'app di destinazione.
Altre proprietà non elencate che possono influire sulle route includono quanto segue.
Proprietà Descrizione route.match.pathDefinizione esatta del percorso di corrispondenza. route.match.pathSeparatedPrefixTrovare le route sui limiti "/" anziché su qualsiasi testo. Ad esempio, se si imposta il valore su /product, il valore corrisponderà a/product/1, ma non/product1a .route.match.caseSensitiveControllare se i modelli di route corrispondono o meno alla distinzione tra maiuscole e minuscole. target.labelIndirizzare a una revisione etichettata specifica all'interno di un'app contenitore. target.revisionReindirizzare a una revisione specifica all'interno di un'applicazione container. Eseguire il comando seguente per creare la configurazione della route 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.fqdnIl nome di dominio completo (FQDN) della configurazione della route HTTP è simile all'esempio seguente:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Verificare che entrambe le app contenitore esistano già.
Creare il file Bicep seguente e salvarlo come
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.fqdnDistribuire il file Bicep con il comando seguente:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepNell'output, trovare
outputs, che contiene il nome di dominio completo (FQDN) della configurazione della route HTTP. Per esempio:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Verificare la configurazione della route HTTP
Passare al nome di dominio completo di configurazione del percorso HTTP con il percorso
/app1.Ad esempio:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Viene visualizzata l'immagine di avvio rapido app contenitore.
Passare al nome di dominio completo di configurazione del percorso HTTP con il percorso
/app2.Ad esempio:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.Viene visualizzata l'immagine di avvio rapido ASP.NET.
Pulire le risorse
Se non si intende continuare a usare questa applicazione, eseguire il comando seguente per eliminare il gruppo di risorse insieme a tutte le risorse create in questa guida introduttiva.
Attenzione
Nell'esempio seguente, il gruppo di risorse specificato e tutte le risorse al suo interno vengono eliminati. Se le risorse esterne all'ambito di questa guida introduttiva esistono nel gruppo di risorse specificato, verranno eliminate anche.
az group delete --name my-container-apps