Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из этой статьи вы узнаете, как использовать маршрутизацию на основе правил с приложениями контейнеров Azure. При маршрутизации на основе правил вы создаете полное доменное имя (FQDN) в среде приложений контейнеров. Затем вы используете правила для маршрутизации запросов для этого полного доменного имени в разные приложения-контейнеры в зависимости от пути каждого запроса.
Предпосылки
Учетная запись Azure с активной подпиской.
- Если у вас нет учетной записи, вы можете создать ее бесплатно.
Установите интерфейс командной строки Azure.
Настройка
Выполните следующую команду, чтобы войти в Azure с помощью интерфейса командной строки.
az loginЧтобы убедиться, что вы используете последнюю версию интерфейса командной строки, выполните команду обновления.
az upgradeИгнорируйте предупреждения об используемых модулях.
Теперь, когда установлено текущее расширение или модуль, зарегистрируйте пространства имен
Microsoft.AppиMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Создание переменной среды
Создайте следующие переменные среды.
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"
Создание приложений-контейнеров
Выполните следующую команду, чтобы создать первое приложение контейнера. Это контейнерное приложение использует стартовый образ для контейнерных приложений.
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Выполните следующую команду, чтобы создать второе приложение контейнера. Это контейнерное приложение использует образ 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Создайте конфигурацию HTTP-маршрута.
Создайте следующий файл и сохраните его как
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Эта конфигурация определяет два правила маршрутизации для трафика HTTP.
Замечание
Порядок правил маршрутизации имеет значение.
Более конкретные префиксы должны быть перед менее конкретными префиксами.
Например, если первое правило соответствует префиксу /api, оно будет использоваться, даже если второе правило использует префикс /api/v1.
Недвижимость Описание descriptionЧеловеко-читаемая метка для правила routes.match.prefixПрефикс пути URL для сопоставления. Например: /api.routes.action.prefixRewriteНа что заменить совпавший префикс перед пересылкой. targets.containerAppИмя приложения-контейнера, в котором отправляется соответствующий запрос маршрута. Эти правила позволяют разным путям в домене направляться к разным приложениям-контейнерам, а также изменять путь запроса до того, как он достигнет конечного приложения.
Другие, не перечисленные свойства, которые могут повлиять на ваши маршруты, включают следующее.
Недвижимость Описание route.match.pathТочное определение пути сопоставления. route.match.pathSeparatedPrefixСопоставляет маршруты по границам "/" вместо текста. Например, если задано значение /product, оно будет соответствовать/product/1, но не/product1.route.match.caseSensitiveОпределяет, соответствуют ли шаблоны маршрутов конфиденциальности регистра. target.labelМаршрут к определенной помеченной ревизии в контейнерном приложении. target.revisionМаршрут к конкретной версии в контейнерном приложении. Выполните следующую команду, чтобы создать конфигурацию маршрута 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Полное доменное имя конфигурации HTTP-маршрута (FQDN) выглядит следующим образом:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Убедитесь, что оба приложения-контейнера уже существуют.
Создайте следующий файл Bicep и сохраните его как
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Разверните Bicep-файл с помощью следующей команды:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepВ выходных данных найдите
outputs, которое содержит полное доменное имя (FQDN) вашей конфигурации маршрута HTTP. Рассмотрим пример."outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Проверка конфигурации HTTP-маршрута
Перейдите по полному доменному имени (FQDN) конфигурации HTTP-маршрута с помощью пути
/app1.Например:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Вы видите образ Container Apps для быстрого запуска.
Перейдите по полному доменному имени (FQDN) конфигурации HTTP-маршрута с помощью пути
/app2.Например:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.Вы видите изображение краткого руководства ASP.NET.
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, выполните приведенную ниже команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в ходе работы с этим кратким руководством.
Осторожность
Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если в указанной группе ресурсов существуют ресурсы, не входящие в область этого краткого руководства, они также будут удалены.
az group delete --name my-container-apps