Entrada de Azure Container Apps
Azure Container Apps permite exponer la aplicación contenedora a la web pública, la red virtual (VNET) y otras aplicaciones de contenedor dentro de su entorno habilitando la entrada. La configuración de entrada se aplica a través de un conjunto de reglas que controlan el enrutamiento del tráfico externo e interno a la aplicación contenedora. Al habilitar la entrada, no es necesario crear una instancia de Azure Load Balancer, una dirección IP pública ni ningún otro recurso de Azure para habilitar las solicitudes HTTP entrantes o el tráfico TCP.
La entrada admite:
- Entrada externa e interna
- Tipos de entrada HTTP y TCP
- Nombres de dominio
- Restricciones de IP
- Autenticación
- División del tráfico entre revisiones
- Afinidad de sesión
Configuración de entrada de ejemplo que muestra la división de entrada entre dos revisiones:
Para obtener más información sobre la configuración, consulte Configuración de la entrada.
Entrada externa e interna
Al habilitar la entrada, puede elegir entre dos tipos de entrada:
- Externa: Acepta el tráfico de la red pública de Internet y del entorno interno de la aplicación contenedora.
- Interno: Solo permite el acceso interno desde el entorno de la aplicación contenedora.
Cada aplicación contenedora dentro de un entorno se puede configurar con diferentes opciones de entrada. Por ejemplo, en un escenario con varias aplicaciones de microservicios, para aumentar la seguridad puede tener una sola aplicación contenedora que reciba solicitudes públicas y las pase a un servicio en segundo plano. En este escenario, configuraría la aplicación contenedora orientada al público con entrada externa y la aplicación contenedora orientada al interior con entrada interna.
Tipos de protocolo
Container Apps admite dos protocolos de entrada: HTTP y TCP.
HTTP
Con la entrada HTTP habilitada, la aplicación contenedora tiene:
- Compatibilidad con la terminación TLS
- Compatibilidad con HTTP/1.1 y HTTP/2
- Compatibilidad con WebSocket y gRPC
- Los puntos de conexión HTTPS que siempre usan TLS 1.2 o 1.3, finalizados en el punto de entrada
- Los puntos de conexión que exponen los puertos 80 (para HTTP) y 443 (para HTTPS)
- De manera predeterminada, las solicitudes HTTP al puerto 80 se redirigen automáticamente a HTTPS en 443
- Un nombre de dominio completo (FQDN)
- El tiempo de espera de la solicitud es de 240 segundos
Encabezados HTTP
La entrada HTTP agrega encabezados para pasar metadatos sobre la solicitud de cliente a la aplicación contenedora. Por ejemplo, el encabezado X-Forwarded-Proto
se usa para identificar el protocolo que el cliente usó para conectarse con el servicio Container Apps. En la tabla siguiente se enumeran los encabezados HTTP que son relevantes para la entrada en Container Apps:
Encabezado | Descripción | Valores |
---|---|---|
X-Forwarded-Proto |
Protocolo usado por el cliente para conectarse con el servicio Container Apps. | http o https |
X-Forwarded-For |
Dirección IP del cliente que envió la solicitud. | |
X-Forwarded-Host |
Nombre de host que el cliente usó para conectarse con el servicio Container Apps. | |
X-Forwarded-Client-Cert |
El certificado de cliente si se establece clientCertificateMode . |
Lista separada por punto y coma de hash, certificado y cadena. Por ejemplo: Hash=....;Cert="...";Chain="..."; |
TCP
Container Apps admite protocolos basados en TCP distintos de HTTP o HTTPS. Por ejemplo, puede usar la entrada TCP para exponer una aplicación contenedora que usa el protocolo Redis.
Nota:
La entrada TCP externa solo se admite para entornos de Container Apps que usan una red virtual personalizada. No se admite la entrada TCP para las aplicaciones que aceptan tráfico entrante a través de un punto de conexión privado.
Con la entrada TCP habilitada, la aplicación contenedora:
- Es accesible para otras aplicaciones de contenedor en el mismo entorno a través de su nombre (definido por la propiedad
name
en el recurso Container Apps) y el número de puerto expuesto. - Es accesible externamente a través de su nombre de dominio completo (FQDN) y el número de puerto expuesto si la entrada está establecida en
external
.
Puertos TCP adicionales
Además del puerto HTTP/TCP principal para las aplicaciones de contenedor, puede exponer puertos TCP adicionales para habilitar las aplicaciones que aceptan conexiones TCP en varios puertos.
Nota:
Para usar esta característica, debe tener la extensión de la CLI de aplicaciones contenedoras. Ejecute az extension add -n containerapp
para instalar la versión más reciente de la extensión de la CLI de aplicaciones contenedoras.
Lo siguiente se aplica a puertos TCP adicionales:
- Los puertos TCP adicionales solo pueden ser externos si la propia aplicación se establece como externa y la aplicación contenedora usa una red virtual personalizada.
- Cualquier puerto TCP adicional expuesto externamente debe ser único en todo el entorno de Container Apps. Esto incluye todos los puertos TCP adicionales externos, los puertos TCP principales externos y los puertos 80/443 usados por la entrada HTTP integrada. Si los puertos adicionales son internos, varias aplicaciones pueden compartir el mismo puerto.
- Si no se proporciona un puerto expuesto, el puerto expuesto coincidirá de forma predeterminada con el puerto de destino.
- Cada puerto de destino debe ser único y el mismo puerto de destino no se puede exponer en puertos expuestos diferentes.
- Hay un máximo de cinco puertos adicionales por aplicación. Si se requieren puertos adicionales, abra una solicitud de soporte técnico.
- Solo el puerto de entrada principal admite características HTTP integradas, como CORS y afinidad de sesión. Al ejecutar HTTP encima de los puertos TCP adicionales, no se admiten estas características integradas.
Visite el artículo sobre la entrada para obtener más información sobre cómo habilitar puertos adicionales para las aplicaciones de contenedor.
Nombres de dominio
Puede acceder a la aplicación de las siguientes maneras:
- Nombre de dominio completo (FQDN) predeterminado: a cada aplicación de un entorno de Container Apps se le asigna automáticamente un FQDN basado en el sufijo DNS del entorno. Para personalizar el sufijo DNS de un entorno, consulte Sufijo DNS del entorno personalizado.
- Un nombre de dominio personalizado: puede configurar un dominio DNS personalizado para el entorno de Container Apps. Para obtener más información, consulte Certificados y nombres de dominio personalizados.
- El nombre de la aplicación: puede usar el nombre de la aplicación para la comunicación entre aplicaciones en el mismo entorno.
Para obtener el FQDN de la aplicación, consulta Ubicación.
Restricciones de IP
Container Apps admite restricciones de IP para la entrada. Puede crear reglas para configurar las direcciones IP a las que se permite o deniega el acceso a su aplicación contenedora. Para obtener más información, consulte Configurar restricciones de IP.
Autenticación
Azure Container Apps proporciona características integradas de autenticación y autorización para proteger la aplicación de contenedor externa habilitada para la entrada. Para obtener más información, consulte Autenticación y autorización en Azure Container Apps.
Puede configurar la aplicación para admitir certificados de cliente (mTLS) para la autenticación y el cifrado del tráfico. Para obtener más información, consulte Configurar certificados de cliente.
Para obtener más información sobre cómo usar el cifrado de red de nivel de entorno punto a punto, consulte Introducción a las redes.
División del tráfico
Containers Apps permite dividir el tráfico entrante entre revisiones activas. Cuando se define una regla de división, se asigna el porcentaje de tráfico entrante que debe ir a diferentes revisiones. Para más información, consulte División del tráfico.
Afinidad de sesión
La afinidad de sesión, también conocida como sesiones permanentes, es una característica que permite enrutar todas las solicitudes HTTP de un cliente a la misma réplica de aplicación de contenedor. Esta característica es útil para las aplicaciones con estado que requieren una conexión coherente a la misma réplica. Para más información, consulte Enable Session Affinity.
Uso compartido de recursos entre orígenes (CORS)
De forma predeterminada, se bloquean las solicitudes realizadas a través del explorador desde una página a un dominio que no coincide con el dominio de origen de la página. Para evitar esta restricción en los servicios implementados en Container Apps, puede habilitar el uso compartido de recursos entre orígenes (CORS).
Para obtener más información, consulte Configurar CORS en Azure Container Apps.