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.
Aplicativos de Contêiner do Azure permite que você exponha seu aplicativo de contêiner para a Web pública, sua rede virtual (VNET) e outros aplicativos de contêiner em seu ambiente habilitando a entrada. As configurações de entrada são aplicadas por meio de um conjunto de regras que controlam o roteamento do tráfego externo e interno para o aplicativo de contêiner. Ao habilitar o ingress, você não precisa criar um Azure Load Balancer, endereço IP público ou qualquer outro recurso do Azure para habilitar solicitações HTTP de entrada ou tráfego TCP (Protocolo de Controle de Transmissão).
A entrada dá suporte a:
- Entrada externa e interna
- Tipos de entrada HTTP e TCP
- Nomes de domínio
- Restrições de IP
- Autenticação
- Divisão de tráfego entre revisões
- Afinidade de sessão
Exemplo de configuração de entrada mostrando a entrada dividida entre duas revisões:
Para obter detalhes de configuração, confira Configurar entrada.
Entrada externa e interna
Ao habilitar a entrada, você pode escolher entre dois tipos de entrada:
Externo: expõe o aplicativo por meio do endereço IP de entrada do ambiente de Aplicativos de Contêiner. Se o ambiente usar um IP de entrada público, o aplicativo poderá receber tráfego da Internet pública e também poderá ser acessado por outros aplicativos de contêiner no mesmo ambiente.
Interno: Torna o nome de domínio totalmente qualificado (FQDN) do próprio aplicativo acessível apenas de dentro do mesmo ambiente do Container Apps, por exemplo, de outros Container Apps. O FQDN do app não é diretamente acessível pela internet pública. No entanto, o aplicativo ainda pode receber tráfego externo se for referenciado como alvo em uma configuração de rota HTTP em nível ambiente. Para isolar totalmente um app do tráfego externo, certifique-se de que ele não esteja incluído como alvo em nenhuma configuração de rota HTTP ou coloque-o em um ambiente separado. Para mais informações, veja Use roteamento baseado em regras com Aplicativos de Contêiner do Azure.
Cada aplicativo de contêiner em um ambiente pode ser configurado com configurações de entrada diferentes. Por exemplo, em um cenário com vários aplicativos de microsserviço, para aumentar a segurança, você pode ter um único aplicativo de contêiner que recebe solicitações públicas e passa as solicitações para um serviço em segundo plano. Nesse cenário, você configuraria o aplicativo de contêiner público com entrada externa e o aplicativo de contêiner interno com entrada interna.
Como a visibilidade de entrada interage com o tipo de ambiente
Duas configurações separadas determinam quem pode acessar seu app container:
Nível de acessibilidade ao ambiente: Defina quando você cria o ambiente. Um ambiente interno (criado com
--internal-only) não possui nenhum endpoint público. Só é possível acessá-lo por meio de um balanceador de carga interno na sua rede virtual. Para mais informações, veja Nível de acessibilidade.Visibilidade de ingresso do aplicativo: a propriedade por aplicativo
external, definida com--type externalou--type internale mostrada no portal como Tráfego de entrada.
O nível de acessibilidade do ambiente define o limite externo da rede. A configuração de visibilidade de entrada do aplicativo determina se o aplicativo é publicado nessa fronteira ou mantido dentro do ambiente.
| Nível de acessibilidade ambiental | Entrada externa de aplicativos (Aceitando tráfego de qualquer lugar) |
Entrada interna do aplicativo (Limitado ao ambiente de aplicativos de contêiner) |
|---|---|---|
| Externo | Acessível pela internet pública e por outros aplicativos do ambiente. | Só pode ser alcançado por outros aplicativos no mesmo ambiente. |
| Interno | Acessível pela rede virtual através do balanceador de carga interno e de outros aplicativos no ambiente. Não está acessível pela internet pública. | Só pode ser alcançado por outros aplicativos no mesmo ambiente. Clientes em outras partes da rede virtual recebem uma resposta HTTP 404. |
Importante
As configurações de entrada do app descrevem a relação do app com o ambiente, não com a internet. Em um ambiente interno, aceitar tráfego de qualquer lugar não publica seu app na internet, porque o ambiente não tem um endpoint público. Em vez disso, ele publica o aplicativo no balanceador de carga interno do ambiente para que os clientes da sua rede virtual possam acessá-lo.
Selecionar Limitado ao Ambiente de Apps de Contêineres em um ambiente interno é mais restritivo do que você poderia esperar. Ele esconde o app do restante da sua rede virtual, assim como da internet.
Observação
Um aplicativo com entrada interna ainda pode receber tráfego de fora do ambiente se for referenciado como alvo em uma configuração de rota HTTP em nível ambiente. Para mais informações, veja Use roteamento baseado em regras com Aplicativos de Contêiner do Azure.
Restringa um aplicativo apenas ao acesso à rede virtual
Um requisito comum é um aplicativo que a internet pública não consiga acessar, mas que máquinas virtuais, endpoints privados, redes peered e redes on-premises conectadas via VPN ou Azure ExpressRoute possam alcançar. Essa configuração exige que você defina tanto o nível de acessibilidade do ambiente quanto a visibilidade de entrada do app.
Crie o ambiente como interno, de modo que o ambiente não tenha um ponto final público. O isolamento da internet vem dessa configuração, e você não pode mudá-lo depois de criar o ambiente. Para mais informações, consulte Use uma rede virtual com o Aplicativos de Contêiner do Azure.
az containerapp env create \ --name <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --infrastructure-subnet-resource-id <SUBNET_RESOURCE_ID> \ --internal-only trueConfigure a entrada do app como externa, para que o app seja publicado no balanceador de carga interno do ambiente e os clientes na rede virtual possam acessá-lo.
az containerapp ingress enable \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --target-port <PORT_NUMBER> \ --type external
Use o ingresso interno de aplicativo apenas para aplicativos chamados por outros aplicativos de contêiner no mesmo ambiente, como um serviço de back-end em um aplicativo de microsserviços.
Tipos de protocolo
Os Aplicativos de Contêiner dão suporte a dois protocolos de entrada: HTTP e TCP.
HTTP
Com a entrada HTTP habilitada, seu aplicativo de contêiner tem:
- Suporte para finalização de TLS (Transport Layer Security - Segurança da Camada de Transporte)
- Suporte para HTTP/1.1 e HTTP/2
- Suporte para WebSocket e gRPC
- Pontos de extremidade HTTPS que sempre usam o TLS 1.2 ou 1.3, encerrados no ponto de entrada
- Pontos de extremidade que expõem as portas 80 (para HTTP) e 443 (para HTTPS)
- Por padrão, as solicitações HTTP para a porta 80 são redirecionadas automaticamente para HTTPS em 443.
- Um FQDN (nome de domínio totalmente qualificado)
- O tempo limite da solicitação é de 240 segundos
Cabeçalhos HTTP
A entrada HTTP adiciona cabeçalhos para passar metadados sobre a solicitação do cliente ao seu aplicativo de contêiner. Por exemplo, o cabeçalho X-Forwarded-Proto é usado para identificar o protocolo que o cliente usou para se conectar com o serviço Aplicativos de Contêiner. A tabela a seguir lista os cabeçalhos HTTP relevantes para a entrada nos Aplicativos de Contêiner:
| Cabeçalho | Descrição | Valores |
|---|---|---|
X-Forwarded-Proto |
Protocolo usado pelo cliente para se conectar ao serviço Aplicativos de Contêiner. |
http ou https. Este valor será substituído se enviado pelo cliente. |
X-Forwarded-For |
Os endereços IP do cliente e/ou proxies intermediários que enviaram a solicitação. | Endereços IP dos remetentes. Se especificado na solicitação inicial, ele será acrescentado. Somente o IP mais à direita é fornecido por Aplicativos de Contêiner do Azure. Quaisquer outros valores devem ser validados pelo usuário para evitar falsificação de IP. |
X-Forwarded-Client-Cert |
O certificado do cliente se clientCertificateMode estiver definido. |
Lista separada por ponto e vírgula de hash, certificado e cadeia. Por exemplo: Hash=....;Cert="...";Chain="...";. Este valor será substituído se enviado pelo cliente. |
TCP
Os Aplicativos de Contêiner dão suporte a protocolos baseados em TCP que não sejam HTTP ou HTTPS. Por exemplo, você pode usar a entrada TCP para expor um aplicativo de contêiner que usa o protocolo Redis.
Observação
A entrada TCP externa só tem suporte para ambientes de Aplicativos de Contêiner que usam uma rede virtual.
Com a entrada TCP habilitada, seu aplicativo de contêiner:
- É acessível a outros aplicativos de contêiner no mesmo ambiente por meio de seu nome (definido pela propriedade
nameno recurso Aplicativos de Contêiner) e do número da porta exposto. - Ela é acessível externamente por meio do FQDN (nome de domínio totalmente qualificado) associado e do número de porta exposto quando a entrada está definida como
external.
Portas TCP adicionais
Além da porta HTTP/TCP principal para os seus aplicativos de contêiner, você pode expor portas TCP adicionais para habilitar aplicativos que aceitam conexões TCP em várias portas.
Observação
Para usar essa versão prévia do recurso, você precisa ter a extensão da CLI dos aplicativos de contêiner. Execute az extension add -n containerapp para instalar a versão mais recente da extensão da CLI dos aplicativos de contêiner.
O seguinte se aplica a portas TCP adicionais:
Mais portas TCP só poderão ser externas se o próprio aplicativo for definido como externo e o aplicativo de contêiner estiver usando uma rede virtual.
Todas as portas TCP extras expostas externamente devem ser exclusivas em todo o ambiente de Aplicativos de Contêiner. Isso inclui todas as portas TCP extras externas, portas TCP principais externas e portas 80/443 usadas pela entrada HTTP interna. Se as portas extras forem internas, você poderá compartilhar a mesma porta em vários aplicativos.
Se uma porta exposta não for fornecida, a porta exposta corresponderá à porta de destino por padrão.
Cada porta de destino deve ser exclusiva, e a mesma porta de destino não pode ser exposta em portas expostas diferentes.
Há um máximo de cinco portas adicionais por aplicativo. Se forem necessárias portas adicionais, abra uma solicitação de suporte.
Somente a porta de entrada principal dá suporte a recursos HTTP internos, como CORS e afinidade de sessão. Ao executar HTTP sobre as portas TCP extras, esses recursos internos não têm suporte.
O número
36985da porta é reservado para verificações de integridade internas e não está disponível para aplicativos TCP ou portas expostas extras em aplicativos HTTP.
Para obter mais informações sobre como habilitar portas extras, consulte Configurar a entrada para seu aplicativo.
Nomes de domínio
Você pode acessar o seu aplicativo das seguintes maneiras:
O FQDN (nome de domínio totalmente qualificado) padrão: cada aplicativo em um ambiente de Aplicativos de Contêiner recebe automaticamente um FQDN com base no sufixo DNS (Sistema de Nomes de Domínio) do ambiente. Esse sufixo é determinado pela variável de
CONTAINER_APP_ENV_DNS_SUFFIXambiente. Para personalizar o sufixo DNS de um ambiente, confira Sufixo DNS de ambiente personalizado.Nome de domínio personalizado: você pode configurar um domínio DNS personalizado para o seu ambiente dos Aplicativos de Contêiner. Para obter mais informações, confira Nomes e certificados de domínio personalizado.
Nome do aplicativo: você pode usar o nome do aplicativo para comunicação entre aplicativos no mesmo ambiente.
Para obter o FQDN do seu aplicativo, consulte localização do aplicativo de contêiner (FQDN).
Restrições de IP
Os Aplicativos de Contêiner dão suporte a restrições de IP para a entrada. Você pode criar regras para configurar endereços IP com permissão ou acesso negado ao seu aplicativo de contêiner. Para obter mais informações, confira Configurar restrições de IP.
Autenticação
Aplicativos de Contêiner do Azure fornece recursos internos de autenticação e autorização para proteger seu aplicativo de contêiner habilitado para entrada externa. Para obter mais informações, consulte Authentication and authorization in Aplicativos de Contêiner do Azure.
Você pode configurar o seu aplicativo para dar suporte a certificados do cliente (mTLS) para autenticação e criptografia de tráfego. Para obter mais informações, confira Configurar certificados de cliente.
Para obter detalhes sobre como usar a criptografia de rede no nível do ambiente ponto a ponto, consulte a configuração de rede.
Separação de tráfego
Os Aplicativos de Contêiner permitem dividir o tráfego de entrada entre revisões ativas. Ao definir uma regra de divisão, você atribui o percentual de tráfego de entrada para ir para revisões diferentes. Para obter mais informações, confira Divisão de tráfego.
Afinidade de sessão
A afinidade de sessão, também conhecida como sessões temporárias, é um recurso que permite rotear todas as solicitações HTTP de um cliente para a mesma réplica de aplicativo de contêiner. Esse recurso é útil para aplicativos com estado que exigem uma conexão consistente com a mesma réplica. Para obter mais informações, confira Afinidade de sessão.
CORS (compartilhamento de recursos entre origens)
Por padrão, todas as solicitações feitas por meio do navegador de uma página para um domínio que não corresponde ao domínio de origem da página são bloqueadas. Para evitar essa restrição de serviços implantados nos Aplicativos de Contêiner, você pode habilitar o compartilhamento de recursos entre origens (CORS).
Para obter mais informações, consulte Configure CORS no Aplicativos de Contêiner do Azure.