Dela via


Använda regelbaserad routning med Azure Container Apps (förhandsversion)

I den här artikeln får du lära dig hur du använder regelbaserad routning med Azure Container Apps. Med regelbaserad routning skapar du ett fullständigt domännamn (FQDN) i containerappmiljön. Sedan använder du regler för att dirigera begäranden för det här fullständiga domännamnet till olika containerappar, beroende på sökvägen för varje begäran.

Förutsättningar

Inställningar

  1. Kör följande kommando så logga in på Azure från CLI.

    az login
    
  2. Kör uppgraderingskommandot för att säkerställa att du kör den senaste versionen av CLI.

    az upgrade
    

    Ignorera eventuella varningar om moduler som för närvarande används.

    Installera eller uppdatera Azure Container Apps-tillägget för CLI.

    Om du får fel om saknade parametrar när du kör az containerapp kommandon i Azure CLI eller cmdlets från modulen Az.App i PowerShell, kontrollera att den senaste versionen av Azure Container Apps-tillägget är installerad.

    az extension add --name containerapp --upgrade
    

    Anmärkning

    Från och med maj 2024 aktiverar Azure CLI-tillägg inte längre förhandsversionsfunktioner som standard. Om du vill komma åt förhandsversionsfunktioner för Container Apps installerar du containerapptillägget med --allow-preview true.

    az extension add --name containerapp --upgrade --allow-preview true
    
  3. Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App namnrymderna och Microsoft.OperationalInsights .

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    

Skapa miljövariabler

Skapa följande miljövariabler.

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"

Skapa containerappar

  1. Kör följande kommando för att skapa din första containerapp. Den här containerappen använder Container Apps quickstart-avbildningen.

    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
    
  2. Kör följande kommando för att skapa din andra containerapp. Den här containerappen använder snabbstartsavbildningen 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
    
  3. Skapa HTTP-vägkonfiguration.

    Skapa följande fil och spara den som 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
    

    Den här konfigurationen definierar två routningsregler för HTTP-trafik.

    Fastighet Beskrivning
    description Etikett som kan läsas av människor för regeln
    routes.match.prefix URL-sökvägsprefix som ska matchas. Till exempel /api.
    routes.action.prefixRewrite Vad du ska ersätta det matchade prefixet med innan du vidarebefordrar.
    targets.containerApp Namnet på containerappen där matchande routningsbegäran skickas.

    Dessa regler tillåter att olika sökvägar i domänen dirigeras till olika containerappar samtidigt som sökvägen för begäran ändras innan den når målappen.

    Andra faktorer som inte är listade som kan påverka dina rutter är följande.

    Fastighet Beskrivning
    route.match.path Exakt matchningssökvägsdefinition.
    route.match.pathSeparatedPrefix Matchar rutter vid '/'-gränser i stället för vid någon text. Om du till exempel anger värdet till /productmatchar det på /product/1, men inte /product1.
    route.match.caseSensitive Styr om routningsmönster matchar skiftlägeskänsligheten eller inte.
    target.label Dirigera till en specifik märkt revision i en containerapp.
    target.revision Dirigera till en specifik revision i en containerapp.
  4. Kör följande kommando för att skapa HTTP-routningskonfigurationen.

    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
    

    Http-routningskonfigurationens fullständigt kvalificerade domännamn (FQDN) ser ut så här: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io

  1. Kontrollera att båda containerapparna redan finns.

  2. Skapa följande Bicep-fil och spara den som 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
    
  3. Distribuera Bicep-filen med följande kommando:

    az deployment group create `
      --name $ROUTE_CONFIG_NAME `
      --resource-group $RESOURCE_GROUP `
      --template-file routing.bicep
    
  4. I utdata letar du upp outputs, som innehåller http-routningskonfigurationens fullständigt kvalificerade domännamn (FQDN). Till exempel:

        "outputs": {
          "fqdn": {
            "type": "String",
            "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io"
          }
        },
    

Verifiera konfiguration av HTTP-rutt

  1. Navigera till http-routningskonfigurationens FQDN med sökvägen /app1.

    Till exempel: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.

    Du ser Container Apps snabbstartsavbildning.

  2. Navigera till http-routningskonfigurationens FQDN med sökvägen /app2.

    Till exempel: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.

    Du ser ASP.NET snabbstartsbild.

Rensa resurser

Om du inte fortsätter att använda det här programmet kör du följande kommando för att ta bort resursgruppen tillsammans med alla resurser som skapats i den här snabbstarten.

Försiktighet

Följande kommando tar bort den angivna resursgruppen och alla resurser som ingår i den. Om det finns resurser utanför omfånget för den här snabbstarten i den angivna resursgruppen tas de också bort.

az group delete --name my-container-apps