Compartir a través de


Migración de Azure Spring Apps a Azure Kubernetes Service

Nota:

Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.

Este artículo se aplica a: Enterprise ✅ Básico/Estándar ✅

En este artículo se proporciona información general sobre la migración de Azure Spring Apps a Azure Kubernetes Service (AKS).

Azure Spring Apps es una solución de plataforma como servicio (PaaS) diseñada específicamente para aplicaciones de Spring Boot. Facilita la implementación, ejecución y administración de estas aplicaciones. Azure Spring Apps se encarga de la infraestructura, el escalado y la supervisión, de modo que los desarrolladores puedan centrarse en el código.

AKS es una oferta de infraestructura como servicio (IaaS) que proporciona un entorno de Kubernetes totalmente administrado. AKS proporciona más control sobre cómo se implementan y administran las aplicaciones. Admite una amplia gama de aplicaciones en contenedores y permite la personalización para satisfacer necesidades específicas.

La migración de aplicaciones de Azure Spring Apps a AKS significa pasar de un entorno administrado a uno que le ofrezca más flexibilidad. Este proceso requiere la adopción de nuevas herramientas y prácticas para lograr los mismos resultados en AKS que tenía con Azure Spring Apps.

Asignación de conceptos

Dado que Azure Spring Apps y AKS son diferentes tipos de ofertas de servicios en la nube, no es totalmente preciso asignar conceptos de Azure Spring Apps directamente a AKS. Además, Azure Spring Apps depende de muchos componentes internos cuando se usan en entornos de producción, que no se enumeran aquí. En el diagrama y la tabla siguientes se proporciona una asignación sencilla de conceptos de Azure Spring Apps a AKS para ayudarle a comprender los conceptos básicos. En un entorno de producción real, debe considerar soluciones más seguras y de confianza.

Diagrama de la asignación de concepto entre Azure Spring Apps y Azure Kubernetes Service.

Servicio Azure Spring Apps Azure Kubernetes Service
Una instancia de servicio hospeda y protege un límite para las aplicaciones y otros recursos, y admite una red virtual personalizada. Un clúster es la unidad básica de implementación. Dentro de un clúster, un espacio de nombres es una subdivisión virtual que se usa para organizar y aislar recursos. Comparte la misma infraestructura de red subyacente definida por la red virtual del clúster. Elegir entre un clúster dedicado o un clúster compartido con espacios de nombres depende de sus necesidades empresariales.
Una aplicación es una aplicación empresarial que actúa como recurso secundario dentro de una instancia de servicio. Una aplicación empresarial es un concepto virtual en Azure Spring Apps y se compone de varios recursos en AKS. Entrada controla el acceso externo a los servicios y establece reglas para enrutar el tráfico a diferentes servicios. Un Servicio abstrae el acceso a un conjunto de pods. Para realizar un modificador de implementación azul-verde, actualice un servicio de modo que apunte a una versión diferente de una implementación mediante etiquetas.
Una implementación es la versión de una aplicación. Una aplicación puede tener una implementación de producción y una implementación de almacenamiento provisional. Una Implementación administra el lanzamiento y el ciclo de vida de una aplicación o servicio específicos. También permite actualizaciones graduales y reversiones, lo que permite cambios controlados y de aplicación de conexión directa sin tiempo de inactividad.
Una instancia de aplicación es la unidad de runtime mínima administrada por el servicio. Un pod representa uno o varios contenedores estrechamente acoplados y hospeda una sola instancia de una aplicación o carga de trabajo en ejecución.

Consideraciones sobre la red

Antes de aprovisionar un clúster de AKS, es importante tener en cuenta cuidadosamente la configuración de red. Estas decisiones pueden afectar significativamente al rendimiento, la escalabilidad y la seguridad de las aplicaciones.

AKS se basa en complementos de Container Networking Interface (CNI) para administrar las redes dentro de sus clústeres. Estos complementos controlan tareas críticas, como asignar direcciones IP a pods, enrutar el tráfico entre ellos y habilitar la comunicación a través de Kubernetes Services. AKS admite varios complementos de CNI adaptados a diferentes necesidades de red, lo que proporciona flexibilidad en el diseño del clúster.

AKS ofrece dos modelos de redes principales: redes superpuestas y redes planas. Las redes superpuestas asignan direcciones IP privadas a pods, independientes de la subred de Azure Virtual Network de los nodos de AKS. Este modelo es escalable y conserva las direcciones IP de red virtual, pero usa traducción de direcciones de red (NAT) para el tráfico que sale del clúster. En cambio, las redes planas asignan direcciones IP de pod directamente desde la misma subred de Azure Virtual Network que los nodos, lo que permite que los servicios externos accedan a pods sin NAT. Aunque las redes planas permiten la comunicación directa con pods, requieren un espacio de direcciones IP de red virtual más extenso.

El planeamiento de IP adecuado es esencial para una operación fluida de AKS. Con el fin de evitar problemas de conectividad e interrupciones, es importante asegurarse de que las subredes tienen suficientes direcciones IP para todos los recursos, evitar intervalos superpuestos y dejar espacio para el crecimiento futuro. Para obtener más información, consulte Introducción a las redes de CNI de Azure Kubernetes Service.

Para controlar el tráfico entrante en AKS, puede usar equilibradores de carga o controladores de entrada. Los equilibradores de carga funcionan en la capa 4, distribuyendo el tráfico basado en protocolos y puertos, mientras que los controladores de entrada funcionan en el nivel 7, ofreciendo funciones avanzadas como el enrutamiento basado en direcciones URL y la terminación TLS/SSL. Los controladores de entrada reducen la necesidad de varias direcciones IP públicas mediante la administración del tráfico a varias aplicaciones a través de una única dirección IP. En el caso de las aplicaciones web, se prefieren los controladores de entrada, ya que proporcionan una mejor administración del tráfico e integración con los recursos de Kubernetes. Para obtener más información, consulte Entrada NGINX administrada con el complemento de enrutamiento de aplicaciones.

Para proteger el tráfico en AKS, use firewalls de aplicaciones web (WAF), como Azure Application Gateway, para protegerse frente a ataques como scripting entre sitios y intoxicación por cookies, al tiempo que administra el enrutamiento del tráfico y la terminación TLS/SSL. Además, implemente directivas de red para controlar la comunicación de pod a pod mediante la definición de reglas en manifiestos de YAML, basadas en etiquetas, espacios de nombres o puertos. Estas directivas, que solo están disponibles para los nodos basados en Linux, garantizan un mejor control de tráfico y seguridad dentro del clúster. Para más información, consulte Protección del tráfico entre pods mediante directivas de red en AKS.

Aprovisionamiento

Para aprovisionar un clúster de AKS, puede usar Azure Portal, la CLI de Azure o las plantillas de ARM. Normalmente, el proceso implica seleccionar la región deseada, definir el tamaño y el tipo del grupo de nodos y elegir el modelo de red: Azure CNI o Kubenet. También debe configurar las opciones de autenticación, como la integración de Microsoft Entra ID para el control de acceso de usuarios. Para la supervisión y el escalado, puede habilitar Azure Monitor y configurar el escalado automático en función del uso de recursos. Después del aprovisionamiento, puede administrar el clúster mediante kubectl o la CLI de Azure. Para obtener instrucciones detalladas sobre el aprovisionamiento de AKS, visite Creación de un clúster de AKS.

Acceso e identidad

AKS ofrece varias maneras de administrar la autenticación, la autorización y el control de acceso para clústeres de Kubernetes. Puede usar el control de acceso basado en rol (RBAC) de Kubernetes para conceder a los usuarios, grupos y cuentas de servicio acceso solo a los recursos que necesitan. Para obtener más información, consulte Uso de la autorización de RBAC. AKS también admite Microsoft Entra ID y RBAC de Azure para mejorar la seguridad y el control, lo que le permite asignar y administrar permisos de forma más simplificada.

Para obtener la mejor seguridad, se recomienda integrar AKS con Microsoft Entra ID. Esta integración usa los protocolos OpenID Connect y OAuth 2.0 para la autenticación. Los usuarios se autentican mediante credenciales de Microsoft Entra al interactuar con el clúster de AKS, con sus permisos de acceso regidos por el administrador del clúster. Para obtener más información, consulte Habilitación de la autenticación de Azure Managed Identity para clústeres de Kubernetes con kubelogin

Id. de carga de trabajo de Microsoft Entra integra las características nativas de Kubernetes con proveedores de identidades externos a través de la federación de OpenID Connect (OIDC). Usa pproyección de volumen de token de cuenta de servicio para asignar identidades de Kubernetes a pods a través de cuentas de servicio anotadas. Con estos tokens, las aplicaciones de Kubernetes pueden autenticarse y acceder a los recursos de Azure de forma segura mediante Microsoft Entra ID. Esta configuración funciona sin problemas con bibliotecas como bibliotecas cliente de Azure Identity (Azure.Identity) o la Biblioteca de autenticación de Microsoft (MSAL) para simplificar la autenticación de las cargas de trabajo. Para obtener información sobre cómo configurar un clúster y el pod de la aplicación con cargas de trabajo, consulte Implementación y configuración de la identidad de carga de trabajo.

Contenedorización de aplicaciones

La contenedorización de aplicaciones en imágenes de contenedor es esencial para la implementación en AKS. Garantiza que las implementaciones sean coherentes, portables y escalables. El uso de imágenes de contenedor proporciona flexibilidad para administrar diferentes versiones de aplicaciones. Facilita las actualizaciones y reversiones y mejora la eficacia de los recursos al permitir que varios contenedores se ejecuten en un único host.

Azure Spring Apps ayuda a los usuarios a crear imágenes de contenedor e implementar aplicaciones de diferentes maneras. Puede implementar desde código fuente, desde artefactos compilados como archivos JAR o WAR, o directamente desde una imagen de contenedor. Para obtener información sobre cómo realizar la implementación desde un archivo JAR o WAR, consulte Build a container image from a JAR or WAR (Compilación de una imagen de contenedor a partir de un archivo JAR o WAR). Para obtener información sobre cómo realizar la implementación desde código fuente, consulte Containerize an application by using Paketo Buildpacks.

Para supervisar el rendimiento de las aplicaciones implementadas en AKS, puede integrar el agente de Application Performance Monitoring (APM) durante el proceso de contenedorización. Para obtener más información, consulte Integrate application performance monitoring into container images (Integración de APM en imágenes de contenedor).

Implementación de aplicaciones y componentes de Spring Cloud

Para implementar aplicaciones en AKS, puede usar Implementaciones, que usa Azure Spring Apps o StatefulSets, en función de las necesidades de la aplicación. En el caso de las aplicaciones sin estado, como los microservicios, normalmente usaría una implementación, que administra las réplicas de la aplicación y garantiza que se ejecuten sin problemas. Azure Spring Apps usa este tipo. Por otro lado, StatefulSets es ideal para aplicaciones que requieren almacenamiento persistente o identidades estables, como bases de datos o servicios con necesidades con estado.

Junto con la implementación de la aplicación, también debe definir un Servicio para exponer los pods de back-end. Un servicio es una abstracción que permite definir un conjunto lógico de pods y permite el acceso de red a ellos. Esta funcionalidad es fundamental para el equilibrio de carga y la comunicación entre pods.

Al implementar componentes de Spring Cloud, como Spring Cloud Config o Spring Cloud Gateway, normalmente usaría implementaciones para servicios sin estado. En el caso de los servicios back-end que necesitan almacenamiento estable o estado, puede elegir StatefulSets.

Los vínculos siguientes proporcionan ejemplos de referencia de imágenes de contenedor y archivos de manifiesto para Spring Cloud Components:

Supervisión

La supervisión es una parte fundamental de la administración de aplicaciones implementadas en AKS. AKS proporciona una serie de herramientas para supervisar y analizar el estado del clúster y las cargas de trabajo, incluidas soluciones integradas como Azure Monitor, Azure Log Analytics y Prometheus. Vea los siguientes artículos para más información:

Además de Azure Monitor y Prometheus, también puede usar otras soluciones de supervisión como Datadog, New Relic o Elastic Stack (ELK). Puede integrar estas herramientas en AKS para recopilar registros, métricas y seguimientos, lo que ofrece diversas conclusiones sobre el rendimiento del clúster.

Tutorial

Proporcionamos un tutorial para demostrar la experiencia de un extremo a otro de ejecutar la aplicación de la tienda ACME Fitness en AKS. Para más información, consulte acme-fitness-store/azure-kubernetes-service. En este tutorial se proporcionan instrucciones prácticas y está diseñado para que lo pueda consultar. AKS es muy flexible, por lo que debe elegir configuraciones y personalizaciones en función de sus requisitos específicos.