Entrada nos Aplicativos de Contêiner do Azure
Os Aplicativos de Contêiner do Azure permitem que você exponha seu aplicativo de contêiner à Web pública, à sua VNet (rede virtual) e a 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 a entrada, não é necessário criar um Azure Load Balancer, um endereço IP público ou qualquer outro recurso do Azure para habilitar solicitações HTTP ou tráfego TCP de entrada.
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:
- Externa: Aceita o tráfego da Internet pública e do ambiente interno do aplicativo de contêiner.
- Interno: Permite apenas o acesso interno de dentro do ambiente do aplicativo de contêiner.
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.
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 terminação TLS
- 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:
parâmetro | Descrição | Valores |
---|---|---|
X-Forwarded-Proto |
Protocolo usado pelo cliente para se conectar ao serviço Aplicativos de Contêiner. | http ou https |
X-Forwarded-For |
O endereço IP do cliente que enviou a solicitação. | |
X-Forwarded-Host |
O nome do host que o cliente usou para se conectar ao serviço Aplicativos de Contêiner. | |
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="..."; |
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 VNET personalizada. A entrada TCP não é compatível com aplicativos que aceitam tráfego de entrada por meio de um ponto de extremidade privado.
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
name
no 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:
- Portas TCP adicionais só poderão ser externas se o próprio aplicativo for definido como externo e o aplicativo de contêiner estiver usando uma VNet personalizada.
- Todas as portas TCP adicionais expostas externamente devem ser exclusivas em todo o ambiente dos Aplicativos de Contêiner. Isso inclui todas as portas TCP adicionais externas, portas TCP principais externas e portas 80/443 usadas pela entrada HTTP interna. Se as portas adicionais forem internas, a mesma porta poderá ser compartilhada por 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 adicionais, esses recursos internos não têm suporte.
Visite o artigo sobre como usar a entrada para obter mais informações sobre como habilitar portas adicionais para seus aplicativos de contêiner.
Nomes de domínios
Você pode acessar o seu aplicativo das seguintes maneiras:
- Nome de domínio totalmente qualificado (FQDN) padrão: cada aplicativo em um ambiente dos Aplicativos de Contêiner recebe automaticamente um FQDN com base no sufixo DNS do ambiente. 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 para o seu aplicativo, confira Local.
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
Os Aplicativos de Contêiner do Azure fornecem recursos internos de autenticação e autorização para proteger seu aplicativo de contêiner habilitado para entrada externa. Para obter mais informações, confira Autenticação e autorização nos 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 de ponto a ponto, confira a visão geral da 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, confira Configurar o CORS nos Aplicativos de Contêiner do Azure.