Editar

Compartir a través de


Automatización de la reconfiguración de la infraestructura mediante Azure

Azure Container Instances
Azure Application Gateway
Azure Functions
Azure Monitor

La contenedorización es un enfoque común para la modernización de aplicaciones. Puede considerar el uso de Azure Kubernetes Service para cargas de trabajo avanzadas o usar Azure Container Instances para cargas de trabajo de contenedor simples, como una aplicación web sencilla. Este artículo se centra en la implementación de la automatización sin servidor en el nivel de infraestructura de Container Instances cuando Application Gateway se usa como firewall.

Comenzaremos con un escenario habitual. Para proteger instancias de contenedores de Azure, puede usar grupos de contenedores de Azure Container Instances. Mediante el uso de grupos de contenedores, puede implementar instancias de contenedores de Azure en una red virtual para que los contenedores puedan acceder a otros recursos privados u otros servicios de Azure a través de un punto de conexión privado de Azure. Para los clientes que hospedan aplicaciones web, es una práctica habitual usar un firewall de aplicaciones web como Azure Application Gateway para afrontar el tráfico entrante mientras se usa Azure Container Instances como grupo de back-end. Este artículo es un excelente punto de partida: Exposición de una dirección IP estática para un grupo de contenedores.

Una posible dificultad para este enfoque es el uso de una dirección IP privada no estática como grupo de back-end. La dirección IP privada se puede rotar durante el mantenimiento, lo que requiere que el administrador de la nube vuelva a configurar manualmente el grupo de back-end. Si se agregan nuevos contenedores para el escalado, el administrador también tendría que realizar la reconfiguración para asegurarse de que el tráfico se enruta al grupo de back-end correcto. Y los sondeos de ejecución y los de preparación no se admiten en los grupos de contenedores, lo que dificulta la identificación del tiempo de inactividad de la carga de trabajo.

En este artículo se analizan las mejoras para abordar estos problemas comunes mediante la adopción de Application Insights y Azure Monitor para la supervisión, y el uso de Azure Functions para realizar la rotación automática de direcciones IP privadas. Este enfoque mejora la redundancia de la carga de trabajo.

Posibles casos de uso

Esta arquitectura es adecuada en los siguientes casos:

  • Implementación sin servidor.
  • Operación mínima para una carga de trabajo nativa de la nube con automatización.
  • Una carga de trabajo de contenedor simple que no requiere orquestación avanzada de contenedores.
  • Una carga de trabajo de acceso externo con alta redundancia y reconfiguración automatizada.
  • Una carga de trabajo de contenedor que requiere acceso a recursos privados, como los expuestos por los puntos de conexión privados de Azure.

Architecture

Diagrama de flujo que muestra un punto de conexión privado que accede a Azure Cosmos DB para Azure Container Instances. En primer lugar se encuentra Azure Application Gateway.

Descargue un archivo Visio de esta arquitectura.

Flujo de datos

Parte 1: Flujo de tráfico típico de aplicación web

1a. Application Gateway tiene funcionalidad de firewall de aplicaciones web, la cual resulta idónea para afrontar el tráfico con acceso público antes de que llegue a la carga de trabajo de back-end. Application Gateway expone la dirección IP pública, con lo que Azure DDoS Protection proporciona otra capa de protección.

1b. El grupo de back-end de Application Gateway se configura con la dirección IP privada de la instancia de contenedor de Azure de un grupo de contenedores. Las instancias de contenedores de Azure en grupos de contenedores no incluyen nombres de dominio completos (FQDN), por lo que se tiene que usar la dirección IP.

1c. Los contenedores de Azure Container Instances pueden utilizar recursos privados, como Azure Cosmos DB, por medio de vínculos privados.

Parte 2: Mejoras con automatización

2a. Application Gateway incluye una métrica de recuento de hosts con estado correcto que se puede usar como sondeo de ejecución para instancias de contenedor de Azure, ya que los grupos de contenedores de Container Instances no admiten sondeos de ejecución ni de preparación.

2b. Application Insights se usa en contenedores para recopilar otras métricas, como los latidos, que se pueden enviar a Application Insights para la supervisión mediante un subproceso personalizado.

2c. Puede configurar alertas basadas en los niveles de umbral definidos en los pasos 2a y 2b. Por ejemplo, suponga que el sistema tiene tres instancias de contenedor que se ejecutan como un grupo de back-end. Puede configurar una alerta para que se active si el recuento de hosts con estado correcto es menor que 3. En un grupo de acciones de reglas de alerta, puede usar una función de Azure como tipo de acción para desencadenar la acción personalizada.

2d. En la función de Azure, se usa un SDK de Azure para obtener la configuración de las instancias de contenedores existentes y volver a crear las mismas instancias. Esta función se desencadena mediante la alerta definida en el paso 2c. Esta función puede tardar mucho tiempo en ejecutarse, en función de la complejidad de la configuración. Se puede agotar el tiempo de espera de Azure Functions, por lo que tendrá que usar Azure Durable Functions para controlar procesos de larga duración y obtener actualizaciones de estado.

Componentes

Automatización

  • Azure Durable Functions: a diferencia de Azure Functions, Durable Functions es con estado y admite varios patrones de flujo de trabajo con estado. En este ejemplo, se usa el patrón de supervisión.
  • SDK de Azure: los SDK de Azure son colecciones de bibliotecas que puede usar para interactuar con los servicios de Azure en el lenguaje de programación que prefiera. Los SDK le ofrecen una mayor flexibilidad para integrar la lógica que realiza la automatización.

Supervisión

  • Métricas de Azure Monitor: esta característica de Azure Monitor recopila datos numéricos predefinidos de los servicios de Azure.
  • Grupos de acciones: un grupo de acciones es una colección de las preferencias de notificación que el propietario del recurso define. Puede definir canales y acciones de notificación basados en las alertas desencadenadas.

Funciones de red

  • Azure DDoS Protection: el nivel Básico de Azure DDoS Protection es gratuito y está habilitado en todas las IP públicas. La Protección de red contra DDoS de Azure proporciona más funcionalidades, como la ingesta de registros en otras ubicaciones y la posibilidad de interactuar con el equipo de respuesta rápida de DDoS Protection.
  • Azure Application Gateway: Azure Web Application Firewall proporciona protección para las aplicaciones de acceso público frente a vulnerabilidades de seguridad como los ataques por inyección de código SQL y los ataques XSS.
  • Azure Private Link: Azure Private Link proporciona acceso a los servicios PaaS de Azure a través de un punto de conexión privado en la red troncal de Microsoft para mejorar aún más la seguridad del acceso a la red.

Application

  • Azure Container Instances: Azure Container Instances ejecuta imágenes de contenedores de forma rápida y sencilla, y sin necesidad de configurar otra infraestructura. Considere la posibilidad de usar Azure Kubernetes Service (AKS) para la orquestación avanzada de contenedores.
  • Azure Cosmos DB: Azure Cosmos DB es una base de datos NoSQL totalmente administrada que admite varias plataformas, como SQL, Cassandra y MongoDB.
  • Azure Key Vault: como procedimiento recomendado de seguridad, los desarrolladores no almacenan las cadenas de conexión como texto sin formato en el código fuente de la aplicación. Azure Key Vault sirve como ubicación central para almacenar secretos con una seguridad mejorada. Las aplicaciones pueden recuperar las claves necesarias con una seguridad mejorada.

Alternativas

En el escenario anterior se actualiza un grupo de back-end para Application Gateway. Como alternativa, podría usar una zona DNS privada de Azure como back-end de destino para Application Gateway y usar Azure Functions para actualizar un registro en lugar de realizar cambios en Application Gateway. Esta alternativa reduciría el tiempo de implementación. Por otro lado, las métricas de Application Gateway no serían capaces de identificar el recuento de hosts porque DNS lo habría extraído. Por lo tanto, esta automatización tendría que desencadenarse a través de una solución de supervisión de aplicaciones como Application Insights o Azure Monitor directamente.

Azure proporciona varias opciones para hospedar cargas de trabajo basadas en contenedores, como Azure Kubernetes Service, Azure App Service y Azure Container Apps.

Azure Kubernetes Service proporciona funcionalidades avanzadas de red y orquestación de contenedores, como el recurso Service, que no está disponible en Container Instances. Esta arquitectura de referencia aborda este requisito.

App Service también puede hospedar cargas de trabajo de contenedores y App Service Environment permite a los desarrolladores implementar App Service en Azure Virtual Network. La estructura de precios de Container Instances, en comparación con App Service, hace que sea atractiva para cargas de trabajo pequeñas.

Azure Container Apps es una plataforma de contenedor sin servidor basada en Kubernetes. Permite a los desarrolladores compilar una aplicación de estilo kubernetes que no requiera acceso directo a todas las API nativas de Kubernetes y a la administración de clústeres. Azure Container Apps proporciona una experiencia totalmente administrada basada en los procedimientos recomendados.

Consideraciones

Disponibilidad

Dado que los sondeos de ejecución y preparación no se admiten en los grupos de contenedores, se recomienda usar las métricas de Azure Monitor y Azure Application Insights para la supervisión. El estado del contenedor y el tiempo de actividad no son enfoques deterministas para diagnosticar si un sistema funciona de un extremo a otro.

Operations

Azure Durable Functions se usa para volver a configurar la infraestructura si se produce un error en Container Instances o si cambia la dirección IP privada de un grupo de contenedores. Como se indica en la documentación, el proceso de aprovisionamiento tarda un poco más. Los usuarios pueden experimentar un tiempo de inactividad mínimo si los contenedores no están listos a tiempo.

Esta arquitectura agrega una capa de resistencia. Sin embargo, se recomienda configurar la supervisión en la aplicación y supervisar el estado de Azure en busca de errores de plataforma.

Escalabilidad

Los requisitos de CPU y memoria se definen cuando se crean contenedores, por lo que no podrá realizar el escalado vertical directamente. Puede agregar contenedores al grupo de contenedores para realizar un escalado horizontal. Pero tenga en cuenta que cada contenedor del grupo de contenedores consumirá una dirección IP privada, por lo que el límite sería el tamaño de subred aprovisionado.

Otra consideración importante para el escalado es el estado de la aplicación. La aplicación debe controlar el estado, ya sea localmente o mediante servicios externos como Azure Cache for Redis, para asegurarse de que el escalado a petición no crea pérdida de datos en la aplicación.

Seguridad

La capacidad de implementar PaaS en una red virtual (inserción de red virtual) no mejora la seguridad si la configuración no está configurada correctamente. La inserción de red virtual proporciona a los administradores más control de red, lo que ofrece ventajas como grupos de seguridad de red más estrictos y el uso de recursos no expuestos públicamente.

Private Link proyecta un punto de conexión privado en la red virtual, lo que permite que la aplicación acceda directamente a PaaS de Azure a través de una dirección IP privada. Al mismo tiempo, los administradores pueden controlar aún más quién puede acceder a la PaaS de Azure correspondiente.

Si almacena imágenes de contenedor en Azure Container Registry, puede habilitar Microsoft Defender para registros de contenedor para que realicen exámenes de vulnerabilidades de imágenes de contenedor.

Precios

Use la calculadora de precios de Azure para estimar los costos de los recursos de Azure.

Consulte este ejemplo de la implementación anterior.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

  • Marcus Tee | Estrategia técnica y plan de desarrollo

Pasos siguientes

Examine nuestras arquitecturas:

Instrucciones relacionadas: