Compartir a través de


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. Cuando 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. Ignore indica que el servidor quita el certificado de cliente al reenviar. Accept indica que el servidor reenvía el certificado de cliente, pero no requiere un certificado de cliente. Require 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 a la que escucha la aplicación contenedora para las solicitudes entrantes. Establezca este valor en el número de puerto que usa la aplicación contenedora. 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. auto (valor predeterminado) detecta HTTP/1 o HTTP/2, http para HTTP/1, http2 para HTTP/2, tcp para TCP. No

Detección automática de puertos

Si la aplicación contenedora tiene habilitada la entrada HTTP y no establece un puerto de destino, Azure Container Apps detecta automáticamente el puerto de destino examinando todos los puertos de escucha del contenedor. Si solo se detecta un puerto, ese puerto se establece como puerto de destino para la aplicación contenedora. Si se detecta más de un puerto, la aplicación contenedora no establece automáticamente el puerto de destino y debe establecer el puerto de destino manualmente.

  • La detección automática de puertos solo funciona para el tráfico HTTP, no para el tráfico TCP.
  • Si tiene sondeos de estado HTTP que escuchan en los puertos 80 o 443, esta configuración puede interferir con la detección automática de puertos. La configuración de entrada predeterminada usa sondeos de estado TCP. Para más información, consulte Sondeos de estado.

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.

El az containerapp ingress enable comando 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 transporte 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).
  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.

  • Establezca la external propiedad en true para la entrada externa o false para la entrada interna.
  • 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.

Captura de pantalla de la deshabilitación de la entrada de la aplicación de contenedor.

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

Uso de otros puertos TCP

Puede exponer puertos TCP adicionales desde la aplicación. Para obtener más información, consulte el artículo sobre el concepto de acceso.

Nota:

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

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>

En el ejemplo siguiente se muestra un archivo YAML 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

Captura de pantalla de la adición de puertos TCP adicionales para la entrada de Container Apps a través del portal.

  1. Expanda la sección Puertos TCP adicionales en el panel Entrada.
  2. Agregue puertos TCP adicionales en los que la aplicación acepta tráfico en el campo Puerto de destino . Si deja el puerto expuesto vacío, usa el mismo valor que puerto de destino.
  3. Cambie el campo Tráfico de entrada según sea necesario. Este campo configura dónde se limita el tráfico de entrada a para cada puerto.
  4. Cuando termine, haga clic en Guardar.

La siguiente plantilla de ARM proporciona un ejemplo de cómo puede agregar puertos adicionales a las aplicaciones de contenedor. Agregue cada puerto adicional bajo additionalPortMappings dentro de la sección ingress para configuration dentro de properties de la aplicación de contenedor. En el ejemplo siguiente se muestra cómo agregar puertos adicionales:

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

Pasos siguientes