Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie regelbasiertes Routing mit Azure-Container-Apps verwenden. Mit regelbasiertem Routing erstellen Sie einen vollqualifizierten Domänennamen (FQDN) in Ihrer Container-Apps-Umgebung. Anschließend verwenden Sie Regeln, um Anforderungen für diesen FQDN abhängig vom Pfad jeder Anforderung an verschiedene Container-Apps weiterzuleiten.
Voraussetzungen
Azure-Konto mit einem aktiven Abonnement.
- Falls Sie keins haben, können Sie kostenlos eins erstellen.
Installieren Sie die Azure CLI.
Konfiguration
Führen Sie den folgenden Befehl aus, damit Sie sich über die CLI bei Azure anmelden.
az loginVerwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.
az upgradeIgnorieren Sie alle Warnungen zu derzeit verwendeten Modulen.
Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces
Microsoft.AppundMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Erstellen von Umgebungsvariablen
Erstellen Sie die folgenden Umgebungsvariablen.
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"
Erstellen von Container-Apps
Führen Sie den folgenden Befehl aus, um Ihre erste Container-App zu erstellen. Diese Container-App verwendet das Schnellstartbild „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.fqdnFühren Sie den folgenden Befehl aus, um Ihre zweite Container-App zu erstellen. Diese Container-App verwendet das ASP.NET Schnellstartimage.
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.fqdnErstellen Sie die HTTP-Routenkonfiguration.
Erstellen Sie die folgende Datei, und speichern Sie sie unter
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-2Diese Konfiguration definiert zwei Routingregeln für HTTP-Datenverkehr.
Eigentum BESCHREIBUNG descriptionLesbare Bezeichnung für die Regel routes.match.prefixURL-Pfadpräfix, das übereinstimmen soll. Beispiel: /api.routes.action.prefixRewriteWodurch das übereinstimmende Präfix vor der Weiterleitung ersetzt werden soll. targets.containerAppDer Name der Container-App, in der übereinstimmende Routenanforderungen gesendet werden. Mit diesen Regeln können unterschiedliche Pfade in Ihrer Domäne an verschiedene Container-Apps weitergeleitet werden, und der Anfragepfad kann gleichzeitig geändert werden, bevor er die Ziel-App erreicht.
Andere nicht aufgeführte Eigenschaften, die sich auf Ihre Routen auswirken können, umfassen Folgendes.
Eigentum BESCHREIBUNG route.match.pathGenaue Übereinstimmungspfaddefinition. route.match.pathSeparatedPrefixEntspricht Routen an „/“-Begrenzungen anstelle von Text. Wenn Sie z. B. den Wert auf /product" festlegen, wird er mit/product/1, aber nicht/product1übereinstimmen.route.match.caseSensitiveSteuert, ob Routenmuster mit Berücksichtigung der Groß- und Kleinschreibung übereinstimmen. target.labelLeiten Sie an eine bestimmte beschriftete Revision in einer Containeranwendung weiter. target.revisionLeiten Sie an eine bestimmte Revision in einer Containeranwendung weiter. Führen Sie den folgenden Befehl aus, um die HTTP-Routenkonfiguration zu erstellen.
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.fqdnDer vollqualifizierte Domänenname (FQDN) Ihrer HTTP-Routenkonfiguration sieht wie im folgenden Beispiel aus:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Stellen Sie sicher, dass beide Container-Apps bereits vorhanden sind.
Erstellen Sie die folgende Bicep-Datei, und speichern Sie sie unter
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.fqdnStellen Sie die Bicep-Datei mit dem folgenden Befehl bereit:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepSuchen Sie
outputsin der Ausgabe, die den vollqualifizierten Domänennamen (FQDN) Ihrer HTTP-Routenkonfiguration enthält. Beispiel:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Überprüfen der HTTP-Routenkonfiguration
Navigieren Sie mit dem Pfad
/app1zum FQDN der HTTP-Routenkonfiguration.Beispiel:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Das Schnellstartbild „Container Apps“ wird angezeigt.
Navigieren Sie mit dem Pfad
/app2zum FQDN der HTTP-Routenkonfiguration.Beispiel:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.Das Schnellstartbild ASP.NET wird angezeigt.
Bereinigen von Ressourcen
Wenn Sie diese Anwendung nicht weiter verwenden möchten, führen Sie den folgenden Befehl aus, um die Ressourcengruppe zusammen mit allen in dieser Schnellstartanleitung erstellten Ressourcen zu löschen.
Vorsicht
Mit dem folgenden Befehl werden die angegebene Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht. Wenn Ressourcen außerhalb des Bereichs dieser Schnellstartanleitung in der angegebenen Ressourcengruppe vorhanden sind, werden sie ebenfalls gelöscht.
az group delete --name my-container-apps