Compartir a través de


Uso de un dominio personalizado con enrutamiento basado en reglas en Azure Container Apps (versión preliminar)

Las configuraciones de ruta HTTP admiten dominios personalizados, lo que le permite enrutar el tráfico desde sus propios nombres de dominio a las aplicaciones de contenedor.

Prerrequisitos

  • Un entorno de Azure Container Apps existente
  • Un dominio personalizado que tú posees
  • Certificado SSL para el dominio (a menos que use certificados automáticos)
  • Aplicaciones de contenedores implementadas en tu entorno

Configuración de dominio personalizada

Con el proveedor DNS que hospeda el dominio, cree los registros DNS adecuados para su dominio personalizado.

  • Si usa el dominio raíz (por ejemplo, contoso.com), cree los siguientes registros DNS:

    Tipo de registro Anfitrión Importancia
    A @ La dirección IP del entorno de Container Apps.
    TXT asuid El código de verificación de dominio.
  • Si usa un subdominio (por ejemplo, www.contoso.com), cree los siguientes registros DNS:

    Tipo de registro Anfitrión Importancia
    A El subdominio (por ejemplo, www) La dirección IP del entorno de Container Apps.
    TXT asuid.{subdomain} (por ejemplo, asuid.www) El código de verificación de dominio.

Nota:

La dirección IP del entorno de Container Apps y el código de verificación del dominio se pueden encontrar en la configuración de sufijo DNS personalizado del entorno de Container Apps.

No enlace el dominio personalizado al entorno de Container Apps ni a una aplicación de contenedor. Los dominios solo están enlazados a una aplicación, ruta o entorno.

Configuración de la ruta

Actualice el archivo YAML de Container Apps para incluir una customDomains sección. Incluya un bindingType y un certificateId, según los criterios siguientes.

valor bindingType Descripción
Deshabilitado No se proporciona ningún certificado. El dominio solo está disponible a través de HTTP y HTTPS no está disponible.
Coche Un certificado es opcional. Si ya se ha creado un certificado administrado para este dominio, se agrega automáticamente a la ruta. De lo contrario, el dominio solo está disponible inicialmente a través de HTTP. Para crear un certificado administrado para este dominio, cree un nuevo certificado administrado una vez que se haya creado la ruta. Una vez creado el certificado, se agrega automáticamente a la ruta.
SniEnabled Se requiere un certificado.
Tipo de certificado formato certificateId
Ninguno Dejar en blanco.
Administrado /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/managedCertificates/{CertificateFriendlyName}
No administrado /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/managedEnvironments/{ContainerAppEnvironmentName}/certificates/{CertificateFriendlyName}

Nota:

Para agregar un certificado a su entorno, use uno de los métodos siguientes:

No enlace el certificado a una aplicación contenedora.

En el ejemplo siguiente se muestra cómo configurar la configuración de ruta.

customDomains:
  - name: "<CUSTOM_DOMAIN_ENDPOINT>" 
    certificateId: "<CERTIFICATE_ID>"
    bindingType: "SniEnabled" # Can also be "Disabled", "Auto"
rules:
  - description: "Routing to App1"
    routes:
      - match:
          prefix: "/1"
        action:
          prefixRewrite: "/"
    targets:
      - containerApp: "<APP1_CONTAINER_APP_NAME>"
  - description: "Routing to App2"
    routes:
      - match:
          prefix: "/2"
        action:
          prefixRewrite: "/"
      - match:
          prefix: "/"
    targets:
      - containerApp: "<APP2_CONTAINER_APP_NAME>"

Esta configuración define dos reglas de enrutamiento para el tráfico HTTP.

Propiedad Descripción
customDomains.name Nombre de dominio que desea usar (ejemplo: "app.contoso.com")
customDomains.certificateId Id. de recurso del certificado (no necesario con bindingType: "Auto")
customDomains.bindingType Cómo se controla SSL: "SniEnabled" (indicación de nombre de servidor), "Deshabilitado" (solo HTTP) o "Automático" (certificado automático)
description Etiqueta legible para la regla
routes.match.prefix Prefijo de ruta de dirección URL que debe coincidir. Por ejemplo: /api.
routes.action.prefixRewrite Con qué reemplazar el prefijo coincidente antes de reenviar.
targets.containerApp Nombre de la aplicación contenedora donde se envía la solicitud de ruta coincidente.

Estas reglas permiten rutas de acceso diferentes en el dominio personalizado para enrutar a diferentes aplicaciones de contenedor, al mismo tiempo que modifican la ruta de acceso de la solicitud antes de llegar a la aplicación de destino.

Otras propiedades no enumeradas que pueden afectar a las rutas incluyen lo siguiente.

Propiedad Descripción
route.match.path Definición de ruta de coincidencia exacta.
route.match.pathSeparatedPrefix Coincide con las rutas en los límites "/" en lugar de cualquier texto. Por ejemplo, si establece el valor en /product, coincidirá con /product/1, pero no con /product1.
route.match.caseSensitive Controla si los patrones de ruta coinciden o no con mayúsculas y minúsculas.
target.label Enrutar a una revisión etiquetada específica dentro de una aplicación contenedora.
target.revision Enrutar a una revisión específica dentro de una aplicación contenedora.

Trabaja con la configuración de ruta

Use los siguientes comandos para administrar la configuración de ruta.

Antes de ejecutar los siguientes comandos, asegúrese de reemplazar los marcadores de posición rodeados por <> por sus propios valores.

Creación de una nueva configuración de ruta

Use az containerapp env http-route-config create para crear una nueva configuración de ruta.

az containerapp env http-route-config create \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME> \
    --yaml <CONTAINER_APPS_CONFIG_FILE>

Enumerar configuraciones de ruta

Use az containerapp env http-route-config list para enumerar todas las configuraciones de ruta definidas.

az containerapp env http-route-config list \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME>

Actualización de una configuración de ruta

Use az containerapp env http-route-config update para actualizar una configuración de ruta existente.

az containerapp env http-route-config update \
  --resource-group <RESOURCE_GROUP_NAME> \
  --name <ENVIRONMENT_NAME> \
  --http-route-config-name <CONFIGURATION_NAME> \
  --yaml <CONTAINER_APPS_CONFIG_FILE>

Mostrar una configuración de ruta específica

Use az containerapp env http-route-config show para ver los detalles de una configuración de ruta.

az containerapp env http-route-config show \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Eliminación de una configuración de ruta

Use az containerapp env http-route-config delete para eliminar una configuración de ruta.

az containerapp env http-route-config delete \
    --resource-group <RESOURCE_GROUP_NAME> \
    --name <ENVIRONMENT_NAME> \
    --http-route-config-name <CONFIGURATION_NAME>

Comprobación del enrutamiento HTTP

Después de configurar el dominio personalizado con enrutamiento basado en reglas:

  1. Vaya al dominio personalizado en un explorador. Por ejemplo: https://app.contoso.com/1.

  2. Compruebe que la solicitud se enruta a la primera aplicación contenedora.

  3. Cambie la ruta de acceso a /2. Por ejemplo: https://app.contoso.com/2.

  4. Compruebe que la solicitud ahora se ha enrutado a la segunda aplicación de contenedores.

Sugerencia

¿Tiene problemas? Háganoslo saber en GitHub abriendo un problema en el repositorio de Azure Container Apps.