Configurar a entrada para seu aplicativo em Aplicativos de Contêiner do Azure

Este artigo mostra-lhe como ativar funcionalidades de ingress para a sua aplicação de contentor. Ingress é uma configuração que abrange todo o aplicativo. As alterações nas configurações de entrada aplicam-se a todas as revisões simultaneamente e não geram novas revisões.

Configurações de ingresso

Você pode definir as seguintes propriedades do modelo de ingresso:

Propriedade Descrição Valores Necessário
allowInsecure Permite tráfego inseguro para seu aplicativo de contêiner. Quando definido como true, as solicitações HTTP para a porta 80 não são redirecionadas automaticamente para a porta 443 usando HTTPS, permitindo conexões inseguras. false (padrão), true permite conexões inseguras Não
clientCertificateMode Modo de certificado de cliente para autenticação mTLS. Ignore indica que o servidor descarta o certificado do cliente no encaminhamento. Accept indica que o servidor encaminha o certificado do cliente, mas não requer um certificado do cliente. Require indica que o servidor requer um certificado de cliente. Required, Accept, Ignore (padrão) Não
customDomains Vinculações de domínio personalizadas para os nomes de anfitrião das Container Apps. Consulte Domínios e certificados personalizados Uma matriz de ligações Não
exposedPort (Somente ingresso TCP) A porta TCP escuta. Se external for true, o valor tem de ser único no ambiente de Aplicações de Contentor. Um número de porta entre 1 e 65535. (não pode ser 80 ou 443) Não
external Permita o tráfego de entrada para a sua aplicação a partir do exterior do respetivo ambiente do Container Apps. true ou false(padrão) Sim
ipSecurityRestrictions Restrições de acesso por IP. Consulte Configurar restrições de entrada de IP Uma série de regras Não
stickySessions.affinity Permite afinidade da sessão. none (padrão), sticky Não
targetPort A porta que seu aplicativo de contêiner escuta para solicitações de entrada. Defina esse valor como o número da porta que seu aplicativo de contêiner usa. No caso da entrada HTTP, o endpoint de ingresso da sua aplicação está sempre exposto na porta 443. Sim
traffic Pesos de divisão de tráfego repartidos entre revisões. Uma série de regras Não
transport O tipo de protocolo de transporte. auto (padrão) deteta HTTP/1 ou HTTP/2, http para HTTP/1, http2 para HTTP/2, tcp para TCP. Não

Deteção automática de portas

Se o seu aplicativo de contêiner tiver a entrada HTTP habilitada e você não definir uma porta de destino, os Aplicativos de Contêiner do Azure detetarão automaticamente a porta de destino verificando todas as portas de escuta em seu contêiner. Se houver apenas uma porta detetada, essa porta será definida como a porta de destino para seu aplicativo de contêiner. Se houver mais de uma porta detetada, o aplicativo de contêiner não define automaticamente a porta de destino e você precisa definir a porta de destino manualmente.

  • A deteção automática de portas só funciona para tráfego HTTP, não tráfego TCP.
  • Se você tiver testes de integridade HTTP escutando nas portas 80 ou 443, essa configuração poderá interferir na deteção automática de portas. A configuração de entrada padrão usa testes de integridade TCP. Para obter mais informações, consulte sondas de saúde.

Ativar a entrada

Você pode configurar a entrada para seu aplicativo de contêiner usando a CLI do Azure, um modelo ARM ou o portal do Azure.

O az containerapp ingress enable comando habilita a entrada para seu aplicativo de contêiner. Você deve especificar a porta de destino e, opcionalmente, pode definir a porta exposta se o tipo de transporte for tcp.

az containerapp ingress enable \
    --name <app-name> \
    --resource-group <resource-group> \
    --target-port <target-port> \
    --exposed-port <tcp-exposed-port> \
    --transport <transport> \
    --type <external>
    --allow-insecure

az containerapp ingress enable argumentos de entrada:

Opção Propriedade Descrição Valores Necessário
--type externo Permita a entrada em seu aplicativo de qualquer lugar ou limite a entrada em seu ambiente interno de Aplicativos de Contêiner. external ou internal Sim
--allow-insecure permitirInsecure Permita conexões HTTP ao seu aplicativo. Não
--target-port Porto-alvo A porta que seu contêiner escuta para solicitações de entrada. Defina esse valor como o número da porta que o contêiner usa. A extremidade de ingresso da aplicação está sempre exposta na porta 443. Sim
--exposed-port porta exposta (Somente ingresso TCP) Uma porta para entrada TCP. Se external estiver definido como true, o valor tem de ser único no ambiente do Container Apps se o ingress for externo. Um número de porta entre 1 e 65535. (não pode ser 80 ou 443) Não
--transport Transportes O tipo de protocolo de transporte. auto (padrão) deteta HTTP/1 ou HTTP/2, http para HTTP/1, http2 para HTTP/2, tcp para TCP. Não

Nota

Num ambiente interno, --type external não expõe a sua aplicação à internet pública, porque o ambiente não tem um endpoint público. Torna a aplicação acessível a partir da sua rede virtual através do balanceador de carga interno do ambiente. O uso --type internal limita a aplicação a outras aplicações container no mesmo ambiente, e clientes noutras partes da sua rede virtual recebem uma resposta HTTP 404. Para mais informações, veja Como a visibilidade de entrada interage com o tipo de ambiente.

Habilite a entrada para seu aplicativo de contêiner usando o portal.

Você pode habilitar a entrada ao criar seu aplicativo de contêiner ou pode habilitar a entrada para um aplicativo de contêiner existente.

  • Para configurar o Ingress ao criar a sua aplicação de contentor, selecione Ingress no separador Configuração da Aplicação do assistente de criação da aplicação de contentor.
  • Para configurar a entrada para um aplicativo de contêiner existente, selecione Ingresso no menu Configurações da página de recursos do aplicativo de contêiner.

Habilitando a entrada para seu aplicativo de contêiner

Pode configurar o ingress quando criar a sua aplicação de contentor utilizando o portal do Azure.

  1. Defina Ingress como Enabled.

  2. Configure as configurações de entrada para seu aplicativo de contêiner.

  3. Selecione Limitado ao Ambiente de Aplicativos de Contêiner para entrada interna ou Aceitando tráfego de qualquer lugar para entrada externa.

    Num ambiente interno, aceitar tráfego de qualquer lugar não expõe a sua aplicação à internet pública. Torna a aplicação acessível a partir da sua rede virtual através do balanceador de carga interno do ambiente. Para mais informações, veja Como a visibilidade de entrada interage com o tipo de ambiente.

  4. Selecione o Tipo de entrada: HTTP ou TCP (a entrada TCP só está disponível em ambientes configurados com uma rede virtual).

  5. Se HTTP estiver selecionado para o Tipo de Ingresso, selecione Transporte: Automático, HTTP/1 ou HTTP/2.

  6. Selecione Conexões inseguras se quiser permitir conexões HTTP com seu aplicativo.

  7. Insira a porta de destino para seu aplicativo de contêiner.

  8. Se selecionou TCP para a opção Transporte, introduza a porta exposta da sua aplicação de contentor. O número da porta exposta pode ser 1 para 65535. (não pode ser 80 ou 443)

A página Configurações de entrada para seu aplicativo de contêiner também permite que você configure restrições de IP. Para obter informações sobre como configurar a restrição de IP, consulte Restrições de IP.

Ative o ingresso para a sua aplicação de contentor utilizando a propriedade de configuração ingress. Defina a external propriedade como true, e defina suas transport e targetPort propriedades.

  • Defina a external propriedade como true para entrada externa ou false para entrada interna.
  • Defina o transport como auto para detetar HTTP/1 ou HTTP/2, http para HTTP/1, http2 para HTTP/2 ou tcp para TCP.
  • Defina o targetPort para o número da porta que seu contêiner usa. A extremidade de ingresso da aplicação está sempre exposta na porta 443.
  • Defina a propriedade exposedPort como uma porta, se o tipo de transporte for tcp, para tráfego de entrada TCP. O valor deve ser exclusivo no ambiente de Aplicativos de Contêiner se a entrada for externa. Um número de porta entre 1 e 65535. (não pode ser 80 ou 443)
{
  ...
  "configuration": {
    "ingress": {
        "external": true,
        "transport": "tcp",
        "targetPort": 80,
        "exposedPort": 8080,
    },
  }
}

Desativar ingresso

Desative o ingress da sua aplicação de contentor utilizando o comando az containerapp ingress.

az containerapp ingress disable \
    --name <app-name> \
    --resource-group <resource-group> \

Você pode desabilitar a entrada para seu aplicativo de contêiner usando o portal.

  1. Selecione Ingress no menu Configurações da página do aplicativo de contêiner.
  2. Desmarque a definição IngressAtivada.
  3. Selecione Guardar.

Captura de ecrã da desativação do ingresso da aplicação em contentor.

Desative o ingress da sua aplicação de contentor, omitindo por completo a propriedade de configuração ingress de properties.configuration.

Usar outras portas TCP

Você pode expor portas TCP extras do seu aplicativo. Para obter mais informações, consulte o artigo de conceito de ingresso.

Nota

Para usar esse recurso, você precisa da extensão CLI de aplicativos de contêiner. Execute az extension add -n containerapp para instalar a versão mais recente da extensão CLI de aplicativos de contêiner.

Você pode adicionar portas TCP extras através da CLI fazendo referência a um arquivo YAML com suas configurações de porta TCP.

az containerapp create \
    --name <app-name> \
    --resource-group <resource-group> \
    --yaml <your-yaml-file>

O exemplo a seguir mostra um arquivo YAML que você pode referenciar no comando anterior da CLI. A configuração para as portas TCP extras está em additionalPortMappings.

location: northcentralus
name: multiport-example
properties:
  configuration:
    activeRevisionsMode: Single
    ingress:
      additionalPortMappings:
      - exposedPort: 21025
        external: false
        targetPort: 1025
      allowInsecure: false
      external: true
      targetPort: 1080
      traffic:
      - latestRevision: true
        weight: 100
      transport: http
  managedEnvironmentId: <env id>
  template:
    containers:
    - image: maildev/maildev
      name: maildev
      resources:
        cpu: 0.25
        memory: 0.5Gi
    scale:
      maxReplicas: 1
      minReplicas: 1
  workloadProfileName: Consumption
type: Microsoft.App/containerApps

Captura de ecrã a mostrar a adição de portas TCP adicionais para a entrada de Aplicações de Contentor através do portal.

  1. Expanda a secção Portas TCP adicionais no blade Ingress.
  2. Adicione portas TCP extras nas quais seu aplicativo aceita tráfego no campo Porta de destino . Se você deixar a porta exposta vazia, ela usará o mesmo valor que a porta de destino.
  3. Altere o campo Tráfego de entrada conforme necessário. Este campo configura onde o tráfego de entrada é limitado para cada porta.
  4. Quando terminar, clique em Guardar.

O modelo ARM a seguir fornece um exemplo de como você pode adicionar portas extras aos seus aplicativos de contêiner. Adicione cada porta extra em additionalPortMappings dentro da seção ingress de configuration dentro de properties para o aplicativo de contêiner. O exemplo a seguir mostra como adicionar portas extras:

{
  ...
  "properties": {
    ...
    "configuration": {
      "ingress": {
        ...
        "additionalPortMappings": [
          {
            "external": false
            "targetPort": 80
            "exposedPort": 12000
          }
        ]
      }
    }
  ...
}

Próximos passos