Sdílet prostřednictvím


Použití směrování založeného na pravidlech se službou Azure Container Apps

V tomto článku se dozvíte, jak používat směrování založené na pravidlech se službou Azure Container Apps. Pomocí směrování založeného na pravidlech vytvoříte plně kvalifikovaný název domény (FQDN) v prostředí kontejnerových aplikací. Potom použijete pravidla ke směrování požadavků pro tento plně kvalifikovaný název domény do různých kontejnerových aplikací v závislosti na cestě jednotlivých požadavků.

Požadavky

Nastavení

  1. Spusťte následující příkaz, abyste se přihlásili k Azure z rozhraní příkazového řádku.

    az login
    
  2. Pokud chcete zajistit, že používáte nejnovější verzi rozhraní příkazového řádku, spusťte příkaz upgrade.

    az upgrade
    

    Ignorujte všechna upozornění na aktuálně používané moduly.

  3. Teď, když je nainstalováno aktuální rozšíření nebo modul, zaregistrujte obory názvů Microsoft.App a Microsoft.OperationalInsights.

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

Vytvořte proměnné prostředí

Vytvořte následující proměnné prostředí.

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"

Vytváření kontejnerových aplikací

  1. Spuštěním následujícího příkazu vytvořte první aplikaci kontejneru. Tato aplikace kontejneru používá image rychlého startu pro 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
    
  2. Spuštěním následujícího příkazu vytvořte druhou aplikaci kontejneru. Tato aplikace kontejneru používá image rychlého startu 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. Vytvořte konfiguraci trasy HTTP.

    Vytvořte následující soubor a uložte ho jako 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
    

    Tato konfigurace definuje dvě pravidla směrování pro provoz HTTP.

    Poznámka:

    Záleží na pořadí pravidel směrování.

    Konkrétnější předpony musí být před méně konkrétními předponami.

    Pokud například první pravidlo odpovídá předponě /api, použije se i v případě, že druhé pravidlo používá předponu /api/v1.

    Vlastnictví Popis
    description Popisek pro pravidlo čitelný pro člověka
    routes.match.prefix Předpona cesty url, která se má shodovat. Například: /api.
    routes.action.prefixRewrite Čím nahradit shodnou předponu před předáním.
    targets.containerApp Název aplikace kontejneru, ve které se odešle odpovídající požadavek na trasu.

    Tato pravidla umožňují různým cestám ve vaší doméně směrovat do různých kontejnerových aplikací a zároveň upravit cestu požadavku před dosažením cílové aplikace.

    Mezi další vlastnosti, které nejsou uvedené, které by mohly ovlivnit vaše trasy, patří následující.

    Vlastnictví Popis
    route.match.path Přesná shoda definice cesty.
    route.match.pathSeparatedPrefix Porovnává trasy na hranicích znaků '/' místo jakéhokoli jiného textu. Pokud například nastavíte hodnotu na /product, bude se shodovat s /product/1, ale ne s /product1.
    route.match.caseSensitive Určuje, zda vzory tras odpovídají citlivosti na malá a velká písmena.
    target.label Směrování na konkrétní označenou revizi v rámci kontejnerové aplikace
    target.revision Směrování k určité revizi uvnitř kontejnerové aplikace
  4. Spuštěním následujícího příkazu vytvořte konfiguraci trasy 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
    

    Plně kvalifikovaný název domény (FQDN) vaší konfigurace trasy HTTP vypadá takto: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io

  1. Ujistěte se, že obě aplikace typu kontejner už existují.

  2. Vytvořte následující soubor Bicep a uložte ho jako 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. Nasaďte soubor Bicep pomocí následujícího příkazu:

    az deployment group create `
      --name $ROUTE_CONFIG_NAME `
      --resource-group $RESOURCE_GROUP `
      --template-file routing.bicep
    
  4. Ve výstupu najděte outputs, který obsahuje plně kvalifikovaný název domény (FQDN) konfigurace trasy HTTP. Například:

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

Ověření konfigurace trasy HTTP

  1. Přistupte k FQDN konfigurace vaší HTTP trasy s cestou /app1.

    Například: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.

    Zobrazí se obraz rychlého startu Container Apps.

  2. Přistupte k FQDN konfigurace vaší HTTP trasy s cestou /app2.

    Například: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.

    Zobrazí se obrázek rychlého startu ASP.NET.

Čištění zdrojů

Pokud tuto aplikaci nebudete dál používat, spuštěním následujícího příkazu odstraňte skupinu prostředků spolu se všemi prostředky vytvořenými v tomto rychlém startu.

Upozornění

Následující příkaz odstraní zadanou skupinu prostředků a všechny prostředky obsažené v ní. Pokud prostředky mimo rozsah tohoto rychlého startu existují v zadané skupině prostředků, odstraní se také.

az group delete --name my-container-apps