Configuración de la entrada para la aplicación en Azure Container Apps

En este artículo se muestra cómo habilitar la característica entrada para la aplicación contenedora. La entrada es una configuración para toda la aplicación. Los cambios en la configuración de entrada se aplican a todas las revisiones simultáneamente y no generan nuevas revisiones.

Configuración de entrada

Puede establecer las siguientes propiedades de plantilla de entrada:

Propiedad Descripción Valores Obligatorio
allowInsecure Permite el tráfico no seguro a la aplicación de contenedor. Si se establece en true, las solicitudes HTTP al puerto 80 no se redirigen automáticamente al puerto 443 mediante HTTPS, lo que permite conexiones no seguras. false (valor predeterminado), true habilita conexiones no seguras No
clientCertificateMode Modo de certificado de cliente para la autenticación mTLS. Omitir indica que el servidor quita el certificado de cliente al reenviar. Aceptar indica que el servidor reenvía el certificado de cliente, pero no requiere un certificado de cliente. Requerir indica que el servidor requiere un certificado de cliente. Required, Accept, Ignore (predeterminado) No
customDomains Enlaces de dominio personalizados para los nombres de host de Container Apps. Ver Dominios personalizados y certificados Una matriz de enlaces No
exposedPort (Solo entrada de TCP) El puerto TCP escucha. Si external es true, el valor debe ser único en el entorno de Container Apps. Número de puerto de 1 a 65535. (no puede ser 80 ni 443) No
external Permitir la entrada a la aplicación desde fuera de su entorno de Container Apps. true o false (predeterminado)
ipSecurityRestrictions Restricciones de entrada IP. Consulte Configuración de restricciones de entrada de IP Una matriz de reglas No
stickySessions.affinity Habilita afinidad de sesión. none (valor predeterminado), sticky No
targetPort El puerto en el que escucha el contenedor para las solicitudes entrantes. Establezca este valor en el número de puerto que usa el contenedor. Para la entrada HTTP, el punto de conexión de entrada de la aplicación siempre se expone en el puerto 443.
traffic Las ponderaciones de división de tráfico entre revisiones. Una matriz de reglas No
transport Tipo de protocolo de transporte. Automático (valor predeterminado) detecta HTTP/1 o HTTP/2, http para HTTP/1, http2 para HTTP/2, tcp para TCP. No

Habilitación de la entrada

Puede configurar la entrada para la aplicación contenedora mediante la CLI de Azure, una plantilla de ARM o Azure Portal.

Este comando az containerapp ingress enable habilita la entrada para la aplicación contenedora. Debe especificar el puerto de destino y, opcionalmente, puede establecer el puerto expuesto si el tipo de transporte es 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

Argumentos de entrada az containerapp ingress enable:

Opción Propiedad Descripción Valores Obligatorio
--type external Permitir la entrada a la aplicación desde cualquier lugar o limitar la entrada a su entorno interno de Container Apps. external o internal
--allow-insecure allowInsecure Permitir conexiones HTTP a la aplicación. No
--target-port targetPort El puerto en el que escucha el contenedor para las solicitudes entrantes. Establezca este valor en el número de puerto que usa el contenedor. El punto de conexión de entrada de la aplicación siempre se expone en el puerto 443.
--exposed-port exposedPort (solo entrada TCP) Un puerto para la entrada TCP. Si external es true, el valor debe ser único en el entorno de Container Apps si la entrada es externa. Número de puerto de 1 a 65535. (no puede ser 80 ni 443) No
--transport transport Tipo de protocolo de transporte. Automático (valor predeterminado) detecta HTTP/1 o HTTP/2, http para HTTP/1, http2 para HTTP/2, tcp para TCP. No

Habilite la entrada para la aplicación contenedora mediante el portal.

Puede habilitar la entrada al crear la aplicación de contenedor o habilitar la entrada para una aplicación de contenedor existente.

  • Para configurar la entrada al crear la aplicación contenedora, seleccione Entrada en la pestaña App Configuration del Asistente para creación de la aplicación contenedora.
  • Para configurar la entrada para una aplicación contenedora existente, seleccione Entrada en el menú Configuración de la página de recursos de la aplicación contenedora.

Habilitación de la entrada para la aplicación contenedora:

Puede configurar la entrada al crear la aplicación contenedora mediante Azure Portal.

  1. Establezca Entrada en Habilitado.
  2. Configure las opciones de entrada de la aplicación contenedora.
  3. Seleccione Limitado al entorno de Container Apps para la entrada interna o Aceptar tráfico desde cualquier lugar para la entrada externa.
  4. Seleccione el Tipo de entrada: HTTP o TCP (la entrada TCP solo está disponible en entornos configurados con una red virtual personalizada).
  5. Si HTTP está seleccionado para el tipo de entrada, seleccione el Transporte: Auto, HTTP/1 o HTTP/2.
  6. Seleccione Conexiones no seguras si quiere permitir conexiones HTTP a la aplicación.
  7. Escriba el puerto de destino para la aplicación contenedora.
  8. Si ha seleccionado TCP para la opción Transporte, escriba el puerto expuesto para la aplicación contenedora. El número de puerto expuesto puede estar entre 1 y 65535. (no puede ser 80 ni 443)

La página de configuración de entrada de la aplicación contenedora también le permite configurar restricciones de IP. Para obtener información sobre cómo configurar la restricción de IP, consulte restricciones de IP.

Habilite la entrada para la aplicación contenedora mediante la propiedad de configuración ingress. Establezca la propiedad external en true y establezca las propiedades transport y targetPort.
- La propiedad external se puede establecer en true para entradas externas y en false para entradas internas.

  • Establezca transport en auto para detectar HTTP/1 o HTTP/2, http para HTTP/1, http2 para HTTP/2 o tcp para TCP.
  • Establezca targetPort con el número de puerto que usa el contenedor. El punto de conexión de entrada de la aplicación siempre se expone en el puerto 443.
  • Establezca la propiedad exposedPort si el tipo de transporte es tcp en un puerto para la entrada TCP. El valor debe ser único en el entorno de Container Apps si la entrada es externa. Número de puerto de 1 a 65535. (no puede ser 80 ni 443)
{
  ...
  "configuration": {
    "ingress": {
        "external": true,
        "transport": "tcp",
        "targetPort": 80,
        "exposedPort": 8080,
    },
  }
}

Deshabilitar la entrada

Deshabilite la entrada para la aplicación contenedora mediante el comando az containerapp ingress.

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

Puede deshabilitar la entrada de la aplicación contenedora mediante el portal.

  1. Seleccione Entrada en el menú Configuración de la página de la aplicación contenedora.
  2. Anule la selección del valor EntradaHabilitado.
  3. Seleccione Guardar.

Sceenshot of disabling container app ingress.

Deshabilite la entrada de la aplicación contenedora omitiendo completamente la propiedad de configuración ingress de properties.configuration.

Uso de puertos TCP adicionales

Puede exponer puertos TCP adicionales desde la aplicación. Para más información, consulte el artículo Concepto de entrada.

Nota:

Para usar esta característica, debe tener la extensión de la CLI de aplicaciones de contenedor. Ejecute az extension add -n containerapp para instalar la versión más reciente de la extensión de la CLI de aplicaciones contenedoras.

Puede agregar puertos TCP adicionales a través de la CLI haciendo referencia a un archivo YAML con las configuraciones de puerto TCP.

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

A continuación se muestra un archivo YAML de ejemplo al que puede hacer referencia en el comando de la CLI anterior. La configuración de los puertos TCP adicionales está en 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

Esta característica no se admite en Azure Portal.

La siguiente plantilla de ARM proporciona un ejemplo de cómo puede agregar puertos adicionales a las aplicaciones contenedoras. Cada puerto adicional debe agregarse en additionalPortMappings dentro de la sección ingress para configuration dentro de properties para la aplicación contenedora. A continuación se muestra un ejemplo:

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

Pasos siguientes