Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você aprenderá a usar o roteamento baseado em regras com os Aplicativos de Contêiner do Azure. Com o roteamento baseado em regra, você cria um FQDN (nome de domínio totalmente qualificado) em seu ambiente de aplicativos de contêiner. Em seguida, você usa regras para rotear solicitações para esse FQDN para diferentes aplicativos de contêiner, dependendo do caminho de cada solicitação.
Modelo de roteamento e autorização
As configurações de rotas HTTP (httpRouteConfigs) operam no nível do ambiente de Aplicações de Contêineres. Uma rota pode direcionar qualquer app container no mesmo ambiente, independentemente da configuração individual de entrada do app de destino. Como o FQDN da rota é publicado sob o domínio do ambiente, uma rota pode fornecer um ponto de entrada público que encaminha requisições para um aplicativo contêineres que usa entrada interna (external: false). Esse comportamento permite a composição de múltiplos aplicativos sob um único host.
As permissões para configurações de rotas HTTP são direcionadas para o ambiente gerenciado, em vez de para aplicativos individuais de contêiner. Criar, atualizar ou excluir uma rota requer a Microsoft.App/managedEnvironments/httpRouteConfigs/write permissão do ambiente. Não é necessária permissão extra no app de contêiner-alvo. Esse comportamento é consistente com o ambiente ser uma fronteira de confiança compartilhada, onde todos os apps de contêineres em um ambiente pertencem ao mesmo cliente. Qualquer principal com um papel com escopo de ambiente que inclua httpRouteConfigs/write permissão, como o Contribuidor no ambiente, pode criar rotas que mirem qualquer aplicativo container nesse ambiente.
Importante
Uma configuração de rota HTTP pode expor um aplicativo de contêiner que usa entrada interna (external: false) se você configurar o app como destino de rota. A external: false configuração controla a visibilidade do próprio FQDN do app. Ao usar essa configuração, o ambiente não impede que o app receba tráfego por uma rota em nível ambiental. Para manter um app container inacessível de fora do ambiente, não o mencione como alvo em nenhuma configuração de rota HTTP. Em vez disso, coloque o aplicativo em um ambiente separado que não tenha rotas públicas, ou use controles em nível de rede para restringir o tráfego de entrada.
Pré-requisitos
Conta do Azure com uma assinatura ativa.
- Se não tiver uma, poderá criar uma gratuitamente.
Instale a CLI do Azure.
Configuração
Execute o comando a seguir para entrar no Azure por meio da CLI.
az loginPara garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.
az upgradeIgnore quaisquer avisos sobre módulos em uso no momento.
Agora que a extensão ou módulo atual está instalado, registre os namespaces
Microsoft.AppeMicrosoft.OperationalInsights.az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights
Criar variáveis de ambiente
Crie as variáveis de ambiente a seguir.
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"
Criar aplicativos de contêiner
Execute o comando a seguir para criar seu primeiro aplicativo de contêiner. Este aplicativo de contêiner usa a imagem Quickstart dos 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.fqdnExecute o comando a seguir para criar seu segundo aplicativo de contêiner. Este aplicativo de contêiner usa a imagem de início rápido 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.fqdnCrie a configuração da rota HTTP.
Crie o arquivo a seguir e salve-o como
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-2Essa configuração define duas regras de roteamento para tráfego HTTP.
Observação
A ordem das regras de roteamento importa.
Prefixos mais específicos precisam ser antes de prefixos menos específicos.
Por exemplo, se a primeira regra corresponder ao prefixo /api, isso será usado mesmo se a segunda regra usar o prefixo /api/v1.
Propriedade Descrição descriptionRótulo legível por humanos para a regra routes.match.prefixPrefixo de caminho de URL para correspondência. Por exemplo, /api.routes.action.prefixRewriteConteúdo que substituirá o prefixo correspondente antes do encaminhamento. targets.containerAppO nome do aplicativo de contêiner para onde a solicitação de rota correspondente é enviada. Essas regras permitem que caminhos diferentes em seu domínio roteiem para aplicativos de contêiner diferentes, modificando também o caminho da solicitação antes de chegar ao aplicativo de destino.
Outras propriedades não listadas que podem afetar suas rotas incluem o seguinte.
Propriedade Descrição route.match.pathDefinição do caminho de correspondência exata. route.match.pathSeparatedPrefixCorresponde a rotas em limites '/' em vez de qualquer texto. Por exemplo, se você definir o valor como /product, ele corresponderá/product/1, mas não/product1.route.match.caseSensitiveControla se os padrões de rota correspondem à diferenciação de maiúsculas e minúsculas. target.labelRoteie-a para uma revisão rotulada específica em um aplicativo de contêiner. target.revisionRedirecionar para uma revisão específica em um aplicativo de contêiner. Execute o comando a seguir para criar a configuração de rota 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.fqdnO FQDN (nome de domínio totalmente qualificado) da configuração de rota HTTP é semelhante a este exemplo:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io
Verifique se os dois aplicativos de contêiner já existem.
Crie o arquivo Bicep a seguir e salve-o como
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.fqdnImplante o arquivo Bicep com o seguinte comando:
az deployment group create ` --name $ROUTE_CONFIG_NAME ` --resource-group $RESOURCE_GROUP ` --template-file routing.bicepNa saída, localize
outputs, que contém o FQDN (nome de domínio totalmente qualificado) da configuração de rota HTTP. Por exemplo:"outputs": { "fqdn": { "type": "String", "value": "my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io" } },
Verificar a configuração da rota HTTP
Navegue até o FQDN da configuração da rota HTTP com o caminho
/app1.Por exemplo:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app1.Você verá a imagem de início rápido de Aplicativos de Contêiner.
Navegue até o FQDN da configuração da rota HTTP com o caminho
/app2.Por exemplo:
my-route-config.ambitiouspebble-11ba6155.eastus.azurecontainerapps.io/app2.Você verá a imagem de início rápido do ASP.NET.
Limpar os recursos
Caso não pretenda continuar usando este aplicativo, execute o comando a seguir para excluir o grupo de recursos junto com todos os recursos criados neste guia de início rápido.
Cuidado
O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se houver recursos fora do escopo desse início rápido no grupo de recursos especificado, eles também serão excluídos.
az group delete --name my-container-apps