Compartilhar via


Usar um domínio personalizado com roteamento baseado em regra nos Aplicativos de Contêiner do Azure

As configurações de rota HTTP dão suporte a domínios personalizados, permitindo rotear o tráfego de seus próprios nomes de domínio para seus aplicativos de contêiner.

Pré-requisitos

  • Um ambiente existente dos Aplicativos de Contêiner do Azure
  • Um domínio personalizado que você possui
  • Certificado SSL para seu domínio (a menos que use certificados automáticos)
  • Aplicativos de contêiner implantados em seu ambiente

Configuração de domínio personalizado

Usando o provedor DNS que hospeda seu domínio, crie os registros DNS apropriados para seu domínio personalizado.

  • Se você estiver usando o domínio raiz (por exemplo), contoso.comcrie os seguintes registros DNS:

    Tipo de registro Anfitrião Valor
    A @ O endereço IP do ambiente dos Aplicativos de Contêiner.
    TXT asuid O código de verificação do domínio.
  • Se você estiver usando um subdomínio (por exemplo, www.contoso.com), crie os seguintes registros DNS:

    Tipo de registro Anfitrião Valor
    A O subdomínio (por exemplo, www) O endereço IP do ambiente dos Aplicativos de Contêiner.
    TXT asuid.{subdomain} (por exemplo, asuid.www) O código de verificação do domínio.

Observação

O endereço IP do seu ambiente de Aplicativos de Contêiner e o código de verificação de domínio podem ser encontrados nas configurações de sufixo DNS personalizado do seu ambiente de Aplicativos de Contêiner.

Não associe o domínio personalizado ao seu ambiente de Aplicativos de Contêiner ou a um aplicativo de contêiner. Os domínios são associados apenas a um aplicativo, rota ou ambiente.

Configuração de rota

Atualize o arquivo YAML dos Aplicativos de Contêiner para incluir uma seção customDomains. Inclua um bindingType e certificateId, com base nos seguintes critérios:

Valor de bindingType Descrição
Desabilitado Nenhum certificado é fornecido. O domínio só está disponível por HTTP e HTTPS não está disponível.
Carro Um certificado é opcional. Se um certificado gerenciado já estiver criado para esse domínio, ele será adicionado à rota automaticamente. Caso contrário, o domínio estará inicialmente disponível apenas por HTTP. Para criar um certificado gerenciado para esse domínio, crie um novo certificado gerenciado após a criação da rota. Depois que o certificado é criado, ele é adicionado automaticamente à rota.
SniEnabled Um certificado é necessário.
Tipo de certificado Formato de certificateId
Nenhum Deixar em branco
Gerenciado /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName}
Não gerenciado /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName}

Observação

Para adicionar um certificado ao seu ambiente, use um dos seguintes métodos:

Não associe o certificado a um aplicativo de contêiner.

O exemplo a seguir demonstra como configurar a configuração de rota.

customDomains:
  - name: "<CUSTOM_DOMAIN_ENDPOINT>" 
    certificateId: "<CERTIFICATE_ID>"
    bindingType: "SniEnabled" # Can also be "Disabled", "Auto"
rules:
  - description: "Routing to App1"
    routes:
      - match:
          prefix: "/1"
        action:
          prefixRewrite: "/"
    targets:
      - containerApp: "<APP1_CONTAINER_APP_NAME>"
  - description: "Routing to App2"
    routes:
      - match:
          prefix: "/2"
        action:
          prefixRewrite: "/"
      - match:
          prefix: "/"
    targets:
      - containerApp: "<APP2_CONTAINER_APP_NAME>"

Essa configuração define duas regras de roteamento para tráfego HTTP.

Propriedade Descrição
customDomains.name O nome de domínio que você deseja usar (exemplo: "app.contoso.com")
customDomains.certificateId ID do recurso do seu certificado (não necessário com bindingType: "Auto")
customDomains.bindingType Como o SSL é tratado: "SniEnabled" (Indicação de Nome do Servidor), "Desabilitado" (somente HTTP) ou "Automático" (certificado automático)
description Rótulo legível por humanos para a regra
routes.match.prefix Prefixo de caminho de URL para correspondência. Por exemplo, /api.
routes.action.prefixRewrite Conteúdo que substituirá o prefixo correspondente antes do encaminhamento.
targets.containerApp O 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 personalizado roteiem para diferentes aplicativos de contêiner e, ao mesmo tempo, modifiquem 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.path Definição do caminho de correspondência exata.
route.match.pathSeparatedPrefix Corresponde 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.caseSensitive Controla se os padrões de rota correspondem à diferenciação de maiúsculas e minúsculas.
target.label Roteie-a para uma revisão rotulada específica em um aplicativo de contêiner.
target.revision Redirecionar para uma revisão específica em um aplicativo de contêiner.

Trabalhar com a configuração da rota

Use os comandos a seguir para gerenciar a configuração de rota.

Antes de executar os comandos a seguir, substitua os espaços reservados cercados por <> com seus próprios valores.

Criar uma nova configuração de rota

Use az containerapp env http-route-config create para criar uma nova configuração de rota.

az containerapp env http-route-config create \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME> \
    --yaml <CONTAINER_APPS_CONFIG_FILE>

Listar configurações de rota

Use az containerapp env http-route-config list para listar todas as configurações de rota definidas.

az containerapp env http-route-config list \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME>

Atualizar uma configuração de rota

Use az containerapp env http-route-config update para atualizar uma configuração de rota existente.

az containerapp env http-route-config update \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <ENVIRONMENT_NAME> \
  --http-route-config-name <CONFIGURATION_NAME> \
  --yaml <CONTAINER_APPS_CONFIG_FILE>

Mostrar uma configuração de rota específica

Use az containerapp env http-route-config show para exibir detalhes de uma configuração de rota.

az containerapp env http-route-config show \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Excluir uma configuração de rota

Use az containerapp env http-route-config delete para remover uma configuração de rota.

az containerapp env http-route-config delete \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Verificar o roteamento HTTP

Depois de configurar seu domínio personalizado com roteamento baseado em regra:

  1. Navegue até seu domínio personalizado em um navegador. Por exemplo, https://app.contoso.com/1.

  2. Verifique se a solicitação é roteada para o primeiro aplicativo de contêiner.

  3. Altere o caminho para /2. Por exemplo, https://app.contoso.com/2.

  4. Verifique se a solicitação agora é roteada para o segundo aplicativo de contêiner.

Dica

Está enfrentando problemas? Informe-nos no GitHub abrindo uma issue no repositório Aplicativos de Contêiner do Azure.