Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Container Apps proporciona detección y enrutamiento de servicios integrados para que las aplicaciones de contenedor puedan comunicarse entre sí sin administrar la infraestructura. Al implementar varias aplicaciones de contenedor en el mismo entorno, la plataforma controla automáticamente la resolución DNS, el equilibrio de carga y el enrutamiento de tráfico seguro.
Si la entrada está habilitada, cada aplicación contenedora obtiene un nombre de dominio. Puede hacer que ese punto de conexión esté disponible públicamente o restringirlo a otras aplicaciones de contenedor en el mismo entorno.
Las aplicaciones de contenedor pueden comunicarse entre sí a través de cualquiera de estos métodos:
- Nombre de dominio completo (FQDN): el dominio generado predeterminado
-
Nombre de la aplicación: una dirección de forma
http://<APP_NAME>abreviada para llamadas internas - Invocación del servicio Dapr: un enfoque basado en sidecar con reintentos integrados y observabilidad
- Dominio personalizado: su propio nombre de dominio con un certificado administrado
Nota:
Cuando se llama a otra aplicación contenedora en el mismo entorno mediante el nombre de aplicación o FQDN, el tráfico de red nunca deja el entorno.
¿Por qué es importante?
En una arquitectura de microservicios, los servicios deben llamarse entre sí de forma confiable. Azure Container Apps elimina la carga operativa de configurar la detección de servicios, administrar registros DNS y configurar servidores proxy inversos.
Esto es lo que gestiona la plataforma para ti:
- Registro DNS automático: cada aplicación contenedora obtiene un nombre de host que se puede resolver en cuanto se implementa.
- Enrutamiento administrado por proxy: todo el tráfico entre aplicaciones fluye a través de una capa de proxy de Envoy integrada que controla la terminación TLS, la división del tráfico y el equilibrio de carga.
- Aislamiento delimitado por entorno: los endpoints internos solo son accesibles desde dentro del mismo entorno, lo que crea un límite de seguridad natural.
- Flexibilidad del protocolo: comunicación a través de HTTP/1.1, HTTP/2 (para gRPC) o TCP sin procesar en función de las necesidades de la carga de trabajo.
Estas funcionalidades significan que puede centrarse en la lógica de la aplicación en lugar de en la fontanería de red.
Ubicación de la aplicación contenedor (FQDN)
El nombre de dominio completo de cada aplicación contenedor se compone del nombre de la aplicación, un identificador de entorno único y la región. Todos estos fragmentos de dominio se encuentran en el dominio de azurecontainerapps.io nivel superior.
FQDN externos e internos
La configuración de visibilidad de entrada controla si la aplicación es accesible desde fuera del entorno:
| Visibilidad | Patrón FQDN | Accesible desde |
|---|---|---|
| Externo | <APP_NAME>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Cualquier lugar (internet público) |
| Interno | <APP_NAME>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Solo en el mismo entorno |
Al establecer la entrada en interna, el FQDN incluye un .internal. segmento. Otras aplicaciones de contenedor del mismo entorno todavía pueden llegar a la aplicación mediante esta dirección, pero las solicitudes desde fuera del entorno reciben una 404 respuesta del proxy del entorno. El nombre DNS se resuelve en la dirección IP compartida del entorno, pero el proxy rechaza la solicitud porque la aplicación es solo interna.
Obtención de un nombre de dominio completo
El comando az containerapp show devuelve el nombre de dominio completo de una aplicación contenedora.
az containerapp show \
--resource-group <RESOURCE_GROUP_NAME> \
--name <CONTAINER_APP_NAME> \
--query properties.configuration.ingress.fqdn
En este ejemplo, reemplace los marcadores de posición rodeados por <> por sus valores.
El valor devuelto por este comando es similar a un nombre de dominio como el del ejemplo siguiente:
myapp.happyhill-70162bb9.canadacentral.azurecontainerapps.io
Etiquetas de revisión de FQDNs
Al asignar etiquetas a revisiones específicas, cada etiqueta obtiene su propio FQDN único mediante un separador de tres guiones:
<APP_NAME>---<LABEL>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
En el caso de las aplicaciones internas, el patrón incluye el .internal. segmento:
<APP_NAME>---<LABEL>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
Los FQDN de etiqueta permiten enviar tráfico directamente a una revisión específica. Esta práctica es útil para probar nuevas versiones, ejecutar experimentos A/B o proporcionar puntos de conexión estables para implementaciones de revisiones específicas.
Llame a una app contenedor por su nombre
La manera más sencilla de llamar a otra aplicación contenedora desde el mismo entorno es por su nombre. Envíe una solicitud a http://<CONTAINER_APP_NAME>y el DNS integrado del entorno resuelve automáticamente el nombre.
http://my-backend-api
Funcionamiento de la resolución DNS
En segundo plano, Azure Container Apps usa una configuración DNS personalizada que traduce los nombres de aplicación de contenedor en direcciones enrutables. Cuando la aplicación realiza una solicitud al nombre o el FQDN de otra aplicación:
- El servidor DNS del entorno resuelve el nombre de host en la dirección del servicio proxy de Envoy.
- El proxy de Envoy identifica la aplicación de destino del nombre de host original.
- El proxy enruta la solicitud a las revisiones correctas en función de la configuración del tráfico.
Esta arquitectura significa que las aplicaciones de contenedor nunca se comunican directamente con los pods de los demás. Todo el tráfico pasa a través de la capa de proxy, que proporciona terminación TLS, equilibrio de carga y división de tráfico.
Sugerencia
Use el nombre corto de la aplicación (http://<APP_NAME>) para las llamadas entre aplicaciones de contenedor en el mismo entorno. Es más sencillo que el FQDN completo y funciona de la misma manera, ya que DNS resuelve ambos patrones a través del mismo proxy.
Protocolos de transporte
Las aplicaciones de contenedor admiten tres modos de transporte para la entrada, configurados a través de la transport propiedad :
| Transporte | Caso de uso | Detalles |
|---|---|---|
| Automático (valor predeterminado) | API web estándar y servicios | Negocia http/1.1 y HTTP/2 automáticamente |
| HTTP/2 | Servicios gRPC | Habilita HTTP/2 de un extremo a otro, necesario para gRPC |
| TCP | Protocolos no HTTP (bases de datos, protocolos personalizados) | Conexiones TCP crudas con asignación de puertos |
Nota:
La entrada TCP externa requiere una red virtual personalizada. Si intenta crear una aplicación TCP externa sin una red virtual personalizada, recibirá un ContainerAppTcpRequiresVnet error. La entrada TCP interna funciona sin una red virtual personalizada.
Al usar el transporte TCP, también puede exponer puertos adicionales más allá del puerto de entrada principal. Cada puerto adicional crea un punto de conexión TCP independiente al que otras aplicaciones del entorno se pueden conectar.
División de tráfico y enrutamiento de revisiones
Azure Container Apps admite tres modos de revisión que afectan a cómo se distribuye el tráfico entre aplicaciones de contenedor:
| Modo | Comportamiento |
|---|---|
| único | Todo el tráfico va a la revisión activa más reciente. |
| Varios | El tráfico se divide entre revisiones por porcentaje, en función de las reglas de tráfico. |
| Etiquetas | Cada revisión etiquetada obtiene un FQDN único para el acceso directo. |
En varios modos, cuando otra aplicación contenedora llama al FQDN de la aplicación, el proxy distribuye automáticamente las solicitudes entre revisiones según los pesos configurados. En el modo de etiquetas , los autores de llamadas pueden tener como destino una revisión específica mediante su FQDN de etiqueta.
Para obtener más información, consulte Revisiones en Azure Container Apps.
Invocación del servicio Dapr
Dapr (Distributed Application Runtime) proporciona un enfoque basado en sidecar para la comunicación entre aplicaciones. Al habilitar Dapr, las aplicaciones de contenedor obtienen invocación de servicio integrada con TLS mutua, reintentos automáticos y seguimiento distribuido a través de Aplicación de Azure Insights.
Funcionamiento de la invocación de Dapr
Cada aplicación contenedora habilitada para Dapr ejecuta un proceso "sidecar" junto a su aplicación. Para llamar a otra aplicación habilitada para Dapr, realice una solicitud HTTP local al sidecar de Dapr, que controla la detección y el enrutamiento del servicio:
http://localhost:3500/v1.0/invoke/<DAPR_APP_ID>/method/<METHOD_NAME>
Por ejemplo, para llamar al método catalog en una aplicación con un ID de aplicación Dapr de order-processor:
http://localhost:3500/v1.0/invoke/order-processor/method/catalog
Sidecar resuelve la aplicación de destino a través de un dominio DNS dedicado y enruta la solicitud a través de la capa de proxy de Envoy. Esta es la misma infraestructura que controla el enrutamiento basado en FQDN.
Nota:
Dapr usa su propia ruta de acceso de resolución DNS (el dominio .dapr) independiente de la resolución de FQDN estándar. Ambas rutas de acceso se enrutan a través de la infraestructura de proxy del entorno.
Id. de aplicación de Dapr
El id. de aplicación de Dapr es la identidad que usan otras aplicaciones para invocar el servicio. Si no establece un identificador de aplicación explícito, el entorno de ejecución de Dapr tiene como valor predeterminado el nombre de la aplicación contenedora. La API de ARM muestra appId: null cuando no configura un identificador personalizado, pero el tiempo de ejecución aplica automáticamente el nombre de la aplicación. Establezca un identificador de aplicación personalizado en la configuración de Dapr si necesita un identificador diferente.
Los identificadores de aplicación dapr deben ser únicos dentro de un entorno. Si intenta implementar una aplicación contenedora con un identificador de aplicación de Dapr que ya está en uso por otra aplicación, se crea el recurso de aplicación contenedor, pero su revisión no se puede aprovisionar (provisioningState: Failed). El mensaje de error identifica el identificador de aplicación en conflicto y la aplicación que la posee.
Aplicaciones solo Dapr (sin entrada HTTP)
Puede habilitar Dapr en una aplicación contenedora sin configurar la entrada HTTP. En este caso, la aplicación no es accesible a través de un nombre de aplicación o FQDN, pero otras aplicaciones habilitadas para Dapr todavía pueden invocarla a través de la invocación del servicio Dapr. Este patrón es útil para trabajos en segundo plano o procesadores de eventos que solo necesitan recibir llamadas de otros servicios de la malla.
Sugerencia
Al crear una aplicación sin entrada con el CLI de Azure, omita las marcas --ingress y --target-port. Incluir --target-port sin --ingress devuelve un error de uso.
Configuración de sidecar de Dapr
Configure el sidecar de Dapr a través de las propiedades de la aplicación contenedora. Entre las opciones de configuración clave se incluyen:
| Configuración | Descripción |
|---|---|
appId |
Id. de aplicación de Dapr (el valor predeterminado es el nombre de la aplicación contenedora) |
appPort |
El puerto en el que escucha la aplicación (retrocede al puerto de destino de entrada) |
appProtocol |
Protocolo para la comunicación de Dapr a aplicación (por ejemplo, http, grpc) |
logLevel |
Verbosidad del registro del sidecar de Dapr |
enableApiLogging |
Indica si se deben registrar llamadas API de Dapr |
httpMaxRequestSize |
Tamaño máximo del cuerpo de la solicitud en MB para el servidor HTTP de Dapr |
httpReadBufferSize |
Tamaño máximo del búfer de lectura HTTP en KB |
Para obtener más información sobre cómo configurar Dapr con Azure Container Apps, consulte Dapr integration with Azure Container Apps.
Seguridad para la comunicación entre aplicaciones
Azure Container Apps incluye varias características de seguridad que afectan a cómo se comunican las aplicaciones de contenedor:
-
TLS de forma predeterminada: todo el tráfico entre las aplicaciones de contenedor se enruta a través del proxy de Envoy, que controla la terminación TLS. Establézcalo
allowInsecureenfalse(valor predeterminado) para aplicar redirecciones HTTPS. -
Modo de certificado de cliente (mTLS): Configure el TLS mutuo estableciendo el modo de certificado de cliente en
require,acceptoignore. - Restricciones de IP: defina reglas de permiso o denegación para restringir qué direcciones IP pueden llegar a la aplicación.
- Directivas de CORS: configure reglas de uso compartido de recursos entre orígenes para clientes basados en explorador que llaman a las aplicaciones de contenedor.
Nota:
Cuando utilizas la invocación de servicios de Dapr, los sidecars de Dapr aseguran automáticamente la comunicación con TLS mutua entre servicios. No es necesario configurar mTLS por separado para las llamadas de Dapr a Dapr.
Para obtener más información, consulte Ingress en Azure Container Apps.
Dominios personalizados
Puede asignar sus propios nombres de dominio a una aplicación contenedora configurando dominios personalizados en la configuración de entrada. Cada dominio personalizado puede hacer referencia a un certificado TLS administrado o cargado.
Los dominios personalizados se registran junto con el FQDN predeterminado, por lo que la aplicación responde a ambas direcciones. Cuando otras aplicaciones de contenedor del entorno necesitan llegar a la aplicación, pueden usar el FQDN predeterminado, el nombre de la aplicación o el dominio personalizado.
Para obtener más información, consulte Dominios personalizados en Azure Container Apps.
Solución de ejemplo
Un ejemplo que muestra cómo llamar entre contenedores mediante el FQDN y Dapr está disponible en Azure Samples.
Conceptos relacionados
Comprender la comunicación entre aplicaciones en Azure Container Apps se conecta a varios temas relacionados:
- Entornos en Azure Container Apps: el límite compartido en el que las aplicaciones de contenedores detectan y se comunican entre sí.
- Ingress en Azure Container Apps: Configuración de puntos de conexión externos e internos, TLS y reglas de enrutamiento
- integración de Dapr con Azure Container Apps: Cobertura más profunda de componentes de Dapr, pub/sub y administración de estado junto con la invocación de servicio
- Networking en Azure Container Apps: integración de red virtual, puntos de conexión privados y seguridad de red para su entorno
- Revisions en Azure Container Apps : Cómo afectan los modos de revisión y la división del tráfico al enrutamiento entre aplicaciones