Szabályalapú útválasztás használata az Azure Container Appsszel

Ebből a cikkből megtudhatja, hogyan használhat szabályalapú útválasztást az Azure Container Apps használatával. A szabályalapú útválasztás segítségével egy teljes tartománynevet (FQDN) hozhat létre a tárolóalkalmazások környezetében. Ezután szabályokkal irányíthatja a teljes tartománynévre vonatkozó kéréseket különböző tárolóalkalmazásokba az egyes kérések elérési útjától függően.

Előfeltételek

Beállítás

  1. Futtassa a következő parancsot, hogy jelentkezzen be az Azure-ba a parancssori felületről.

    az login
    
  2. A parancssori felület legújabb verziójának futtatásához futtassa a frissítési parancsot.

    az upgrade
    

    A jelenleg használt modulokra vonatkozó figyelmeztetések figyelmen kívül hagyása.

  3. Most, hogy az aktuális bővítmény vagy modul telepítve van, regisztrálja a Microsoft.App és Microsoft.OperationalInsights névtereket.

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

Környezeti változók létrehozása

Hozza létre a következő környezeti változókat.

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"

Tárolóalkalmazások létrehozása

  1. Futtassa az alábbi parancsot az első tárolóalkalmazás létrehozásához. Ez a tárolóalkalmazás a Container Apps gyorsindítás képfájlát használja.

    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. Futtassa a következő parancsot a második tárolóalkalmazás létrehozásához. Ez a konténer alkalmazás az ASP.NET gyorsindítású lemezképét használja.

    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. HTTP-útvonalkonfiguráció létrehozása.

    Hozza létre a következő fájlt, és mentse a fájlként 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
    

    Ez a konfiguráció két útválasztási szabályt határoz meg a HTTP-forgalomhoz.

    Megjegyzés:

    Az útválasztási szabályok sorrendje számít.

    A pontosabb előtagokat a kevésbé specifikus előtagok előtt kell megadni.

    Ha például az első szabály egyezik az /api előtaggal, akkor is használható lesz, ha a második szabály az /api/v1 előtagot használja.

    Ingatlan Leírás
    description A szabály emberi olvasásra alkalmas címkéje
    routes.match.prefix A megegyező URL-elérési út előtagja. Például: /api.
    routes.action.prefixRewrite Mire cserélje le a megfeleltethető előtagot a továbbítás előtt?
    targets.containerApp Annak a tárolóalkalmazásnak a neve, amelyben a rendszer elküldi az egyező útvonalkérést.

    Ezek a szabályok lehetővé teszik, hogy a tartomány különböző elérési útjai különböző tárolóalkalmazásokhoz irányozzanak, miközben a kérelem elérési útját is módosítják, mielőtt elérik a célalkalmazást.

    A listán nem szereplő egyéb tulajdonságok, amelyek hatással lehetnek az útvonalakra, a következők.

    Ingatlan Leírás
    route.match.path Az elérési út pontos definíciója.
    route.match.pathSeparatedPrefix A szöveg helyett a "/" határvonalon lévő útvonalakat felelteti meg. Ha például az értéket a következőre /product állítja be, akkor az egyezik /product/1 értékkel, de nem /product1 értékkel.
    route.match.caseSensitive Meghatározza, hogy az útvonalminták megfelelnek-e a kis- és nagybetűk érzékenységének.
    target.label Útvonal egy adott címkével ellátott változathoz egy tárolóalkalmazáson belül.
    target.revision Egy specifikus verzió útvonala egy tárolóalkalmazáson belül.
  4. Futtassa a következő parancsot a HTTP-útvonal konfigurációjának létrehozásához.

    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
    

    A HTTP-útvonal konfigurációjának teljes tartományneve (FQDN) a következő példához hasonlóan néz ki: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io

  1. Győződjön meg arról, hogy mindkét tárolóalkalmazás már létezik.

  2. Hozza létre a következő Bicep-fájlt, és mentse el routing.bicepnéven.

    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. Telepítse a Bicep-fájlt a következő paranccsal:

    az deployment group create `
      --name $ROUTE_CONFIG_NAME `
      --resource-group $RESOURCE_GROUP `
      --template-file routing.bicep
    
  4. A kimenetben keresse meg a outputs, amely tartalmazza a HTTP-útvonal konfigurációjának teljes tartománynevét (FQDN). Például:

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

HTTP-útvonal konfigurációjának ellenőrzése

  1. Nyissa meg a HTTP útvonalkonfiguráció FQDN-jét a /app1elérési úttal.

    Például: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.

    Megjelenik a Container Apps rövid útmutató képe.

  2. Nyissa meg a HTTP útvonalkonfiguráció FQDN-jét a /app2elérési úttal.

    Például: my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.

    Láthatod az ASP.NET rövid útmutató képét.

Erőforrások tisztítása

Ha nem folytatja az alkalmazás használatát, futtassa az alábbi parancsot az erőforráscsoport és az ebben a rövid útmutatóban létrehozott összes erőforrás törléséhez.

Figyelmeztetés

Az alábbi parancs törli a megadott erőforráscsoportot és a benne lévő összes erőforrást. Ha a rövid útmutató hatókörén kívül eső erőforrások szerepelnek a megadott erőforráscsoportban, akkor azok is törlődnek.

az group delete --name my-container-apps