Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
SE APLICA A: Desarrollador | Premium
En este artículo se proporcionan los pasos para implementar el componente de puerta de enlace autohospedado de Azure API Management en Azure Container Apps.
Implemente una puerta de enlace autohospedada en una aplicación contenedora para acceder a las API hospedadas en el mismo entorno de Azure Container Apps.
Prerrequisitos
Complete el siguiente inicio rápido: Creación de una instancia de Azure API Management.
Para la CLI de Azure:
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefieres ejecutar comandos de referencia CLI localmente, instala la CLI de Azure. Si estás utilizando Windows o macOS, considera ejecutar Azure CLI en un contenedor Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si estás utilizando una instalación local, inicia sesión en Azure CLI utilizando el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
Nota:
Los ejemplos de comandos de la CLI de Azure de este artículo requieren la extensión CLI de Azure
containerapp. Si no ha usadoaz containerappcomandos, la extensión se instala dinámicamente al ejecutar el primeraz containerappcomando. Obtenga más información sobre las extensiones de la CLI de Azure.
Provisionar la puerta de enlace en tu instancia de Azure API Management
Antes de implementar una puerta de enlace autohospedada, aprovisione un recurso de puerta de enlace en la instancia de Azure API Management. Para conocer los pasos, consulte Aprovisionar una puerta de enlace autohospedada. En los ejemplos de este artículo, la puerta de enlace se denomina my-gateway.
Obtener la configuración de implementación de puerta de enlace de API Management
Para implementar la puerta de enlace, necesita los valores del Token y del punto de conexión de configuración de la puerta de enlace. Puede encontrarlos en Azure Portal:
- Inicie sesión en Azure Portal y vaya a la instancia de Azure API Management.
- En el menú izquierdo, en Implementación e infraestructura, seleccione Puertas de enlace autohospedados.
- Seleccione el recurso de puerta de enlace que aprovisionó y seleccione Implementación de configuración>.
- Copie los valores del Token y del punto de conexión de configuración.
Implementación de la puerta de enlace autohospedada en una aplicación de contenedor
Puede implementar la imagen de contenedor de la puerta de enlace autohospedada en una aplicación de contenedor con Azure Portal, la CLI de Azure u otras herramientas. En este artículo se muestran los pasos mediante la CLI de Azure.
Creación de un entorno de aplicaciones de contenedor
En primer lugar, cree un entorno de aplicaciones de contenedor mediante el comando az containerapp env create :
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Este comando crea:
- Un entorno de aplicación de contenedor denominado
my-environmentque se usa para agrupar aplicaciones de contenedor. - Un área de trabajo de Log Analytics
Creación de una aplicación contenedora para la puerta de enlace autohospedada
Para implementar la puerta de enlace autohospedada en una aplicación contenedora en el entorno, ejecute el comando az containerapp create .
Primero, establezca las variables para los valores del Token y del punto de conexión de configuración del recurso de puerta de enlace de Azure API Management.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Cree la aplicación contenedora con el az containerapp create comando :
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.9.2" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Este comando crea:
Una aplicación contenedora denominada
my-gatewayen el grupo demyResourceGrouprecursos. En este ejemplo, la aplicación contenedora usa lamcr.microsoft.com/azure-api-management/gateway:2.9.2imagen. Para más información sobre la puerta de enlace autohospedada, consulte imágenes de contenedor.Compatibilidad con la entrada externa a la aplicación contenedora en el puerto 8080.
Un mínimo de 1 y un máximo de 3 réplicas de la aplicación contenedora.
Una conexión desde la puerta de enlace autohospedada a la instancia de Azure API Management pasando valores de configuración en variables de entorno. Para obtener más detalles, consulte los valores de configuración del contenedor de la puerta de enlace autohospedada.
Nota:
La entrada de Azure Container Apps reenvía las solicitudes HTTPS a la aplicación contenedora de la puerta de enlace autohospedada como HTTP. Aquí, la
net.server.http.forwarded.proto.enabledvariable de entorno se establece entruepara que la puerta de enlace autohospedada use elX-Forwarded-Protoencabezado para determinar el protocolo original de la solicitud.
Confirmación de que la aplicación contenedora se está ejecutando
Inicie sesión en Azure Portal y vaya a la aplicación contenedora.
En la página Información general de la aplicación contenedora, compruebe que el estado es En ejecución.
Envíe una solicitud de prueba al endpoint de estado en
/status-012345678990abcdef. Por ejemplo, use uncurlcomando similar al siguiente.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdefUna solicitud correcta devuelve una
200 OKrespuesta.
Sugerencia
Con la CLI, también puede ejecutar el comando az containerapp show para comprobar el estado de la aplicación contenedora.
Confirmación de que la puerta de enlace está en buen estado
Inicie sesión en Azure Portal y vaya a la instancia de Azure API Management.
En el menú izquierdo, en Implementación e infraestructura, seleccione Puertas de enlace autohospedados.
En la página Información general , compruebe el estado de la puerta de enlace. Si la puerta de enlace está en buen estado, notifica latidos de puerta de enlace normales.
Escenario de ejemplo
En el ejemplo siguiente se muestra cómo puede usar la puerta de enlace autohospedada para acceder a una API hospedada en una aplicación contenedora en el mismo entorno. Como se muestra en el diagrama siguiente, se puede acceder a la puerta de enlace autohospedada desde Internet, mientras que la API solo es accesible dentro del entorno de aplicaciones de contenedor.
- Implemente una aplicación contenedora que hospeda una API en el mismo entorno que la puerta de enlace autohospedada.
- Agregue la API a la instancia de Azure API Management.
- Utilice la API a través de la pasarela autohospedada.
Implementación de una aplicación contenedora que hospeda una API en el mismo entorno que la puerta de enlace autohospedada
En este ejemplo, implementará una API de álbum de música de ejemplo en una aplicación contenedora. Para acceder a la API más adelante mediante la puerta de enlace autohospedada, implemente la API en el mismo entorno que la puerta de enlace autohospedada. Para obtener pasos detallados e información sobre los recursos usados en este ejemplo, consulte Inicio rápido: Compilación e implementación desde código fuente local en Azure Container Apps. Siga los pasos abreviados:
Descargue el código fuente de Python en la máquina local. Si lo prefiere, descargue el código fuente en otro idioma de su elección.
Extraiga el código fuente en una carpeta local y cambie a la carpeta containerapps-albumapi-python-main/src .
Ejecute el siguiente comando az containerapp up para implementar la API en una aplicación contenedora en el mismo entorno que la puerta de enlace autohospedada. Tenga en cuenta el
.al final del comando, que especifica la carpeta actual como origen de la aplicación en contenedor.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .Confirme que la aplicación de contenedor está ejecutándose y es accesible externamente en el FQDN proporcionado en la salida del comando. De forma predeterminada, la API es accesible en el
/albumspunto de conexión. Ejemplo:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums.
Configuración de la API para la entrada interna
Ahora, actualice la aplicación contenedora que hospeda la API de ejemplo para habilitar la entrada solo en el entorno de contenedor. Esta configuración restringe el acceso a la API solo desde la puerta de enlace autohospedada que implementó.
- Inicie sesión en Azure Portal y vaya a la aplicación contenedora.
- En el menú izquierdo, seleccione Redes>Ingreso.
- Establezca Ingreso en Habilitado.
- En Tráfico de entrada, seleccione Limitado al entorno de aplicaciones en contenedores.
- Revise la configuración restante y seleccione Guardar.
Adición de la API a la instancia de Azure API Management
En los pasos siguientes se muestra cómo agregar una API a la instancia de Azure API Management y configurar un back-end de API. Para más información, consulte Incorporación de una API a Azure API Management.
Adición de la API a la instancia de API Management
- En el Azure Portal, vaya a la instancia de API Management donde configuró la puerta de enlace autohospedada.
- En el menú de la izquierda, seleccione API>API>+ Agregar API.
- Seleccione HTTP y seleccione Completo. Escriba la siguiente configuración:
- Nombre para mostrar: escriba un nombre descriptivo. Ejemplo: API de álbumes.
-
Dirección URL del servicio web: escriba el FQDN interno de la aplicación contenedora que hospeda la API. Ejemplo:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io. - Esquema de dirección URL: seleccione HTTP(S).
- Sufijo de dirección URL de API: escriba un sufijo de su elección. Ejemplo: albumapi.
- Puertas de enlace: seleccione la puerta de enlace autohospedada que ha aprovisionado. Ejemplo: my-gateway.
- Configure otras opciones de API según su escenario. Selecciona Crear.
Adición de una operación de API
- En el menú de la izquierda, seleccione API>Albums API.
- Seleccione + Agregar operación.
- Escriba la configuración de la operación:
- Nombre para mostrar: escriba un nombre descriptivo para la operación. Ejemplo: Obtener álbumes.
-
Dirección URL: seleccione Obtener y escriba
/albumspara el punto de conexión. - Haga clic en Guardar.
Llamada a la API a través de la puerta de enlace autohospedada
Llame a la API mediante el FQDN de la puerta de enlace autohospedada que se ejecuta en la aplicación contenedora. Busque el FQDN en la página Información general de la aplicación contenedora en Azure Portal o ejecute el siguiente az containerapp show comando.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Por ejemplo, ejecute el siguiente curl comando para llamar a la API en el /albumapi/albums punto de conexión. Si la API requiere una clave de suscripción, pase una clave de suscripción válida para la instancia de API Management como encabezado en la solicitud:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
Cuando la prueba se realiza correctamente, el back-end responde con un código de respuesta HTTP correcto y algunos datos.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Sugerencia
Si habilita el registro de la API en Application Insights, puede consultar los registros para ver las solicitudes y respuestas.
Limitaciones
Las instancias de puerta de enlace autohospedada se basan en el protocolo UDP para las comunicaciones de latido y límite de frecuencia. Dado que Azure Container Apps no admite actualmente el protocolo UDP, ni para la entrada ni para el tráfico interno, la rate-limit directiva no puede sincronizar su contador entre instancias. Por lo tanto, mantener tres réplicas de una aplicación contenedora de puerta de enlace autohospedada con límite X podría dar lugar a tres veces el tráfico hasta que se alcance el límite X.
Azure Container Apps distribuye las solicitudes linealmente entre cada réplica disponible y correcta. Para implementar la limitación de velocidad, puede dividir el límite deseado por el número de réplicas que desea ejecutar y establecer el valor resultante en la configuración. Este enfoque tiene sus propias desventajas, ya que es posible que no pueda tener en cuenta los contadores ajustados si se escalan las aplicaciones de contenedores.