Migrer Azure Spring Apps vers Azure Kubernetes Service
Remarque
Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.
Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.
Cet article s’applique à :✅ Essentiel/Standard ✅ Entreprise
Cet article fournit une vue d’ensemble de la migration d’Azure Spring Apps vers Azure Kubernetes Service (AKS).
Azure Spring Apps est une solution PaaS (platform-as-a-service) conçue spécifiquement pour les applications Spring Boot. Il facilite le déploiement, l’exécution et la gestion de ces applications. Azure Spring Apps s’occupe de l’infrastructure, de la mise à l’échelle et de la surveillance, afin que les développeurs puissent se concentrer sur leur code.
AKS est une offre IaaS (Infrastructure as a Service) qui fournit un environnement Kubernetes entièrement managé. AKS vous permet de mieux contrôler la façon dont vos applications sont déployées et gérées. Il prend en charge un large éventail d’applications conteneurisées et permet la personnalisation pour répondre à des besoins spécifiques.
La migration d’applications d’Azure Spring Apps vers AKS signifie passer d’un environnement managé à un environnement qui vous offre plus de flexibilité. Ce processus nécessite l’adoption de nouveaux outils et nouvelles pratiques pour obtenir les mêmes résultats sur AKS que vous l’aviez avec Azure Spring Apps.
Mappage de concepts
Étant donné qu’Azure Spring Apps et AKS sont différents types d’offres de services cloud, mapper les concepts Azure Spring Apps directement à AKS n’est pas tout à fait correct. En outre, Azure Spring Apps dépend de nombreux composants internes lorsqu’ils sont utilisés dans des environnements de production, qui ne sont pas répertoriés ici. Le diagramme et le tableau suivants fournissent un mappage simple des concepts d’Azure Spring Apps à AKS pour vous aider à comprendre les concepts de base. Dans un environnement de production réel, vous devez envisager des solutions plus sécurisées et fiables.
Service Azure Spring Apps | Azure Kubernetes Service |
---|---|
Une instance de service héberge et sécurise une limite pour les applications et d’autres ressources, et prend en charge un réseau virtuel personnalisé. | Un cluster est l’unité de base du déploiement. Dans un cluster, un espace de noms est une sous-division virtuelle utilisée pour organiser et isoler les ressources. Il partage la même infrastructure réseau sous-jacente définie par le réseau virtuel du cluster. Le choix entre un cluster dédié ou un cluster partagé avec des espaces de noms dépend des besoins de votre entreprise. |
Une application est une application métier qui sert de ressource enfant dans une instance de service. | Une application métier est un concept virtuel dans Azure Spring Apps et se compose de plusieurs ressources dans AKS. L’entrée contrôle l’accès externe aux services et définit des règles de routage du trafic vers différents services. Un service extrait l’accès à un ensemble de pods. Vous pouvez effectuer une commutation de déploiement bleu-vert en mettant à jour un service pour pointer vers une autre version d’un déploiement à l’aide d’étiquettes. |
Un déploiement est la version d’une application. Une application peut avoir un déploiement de production et un déploiement intermédiaire. | Un déploiement gère le déploiement et le cycle de vie d’une application ou d’un service spécifique. Il permet également des mises à jour propagées et des restaurations, ce qui permet des modifications d’application contrôlées et transparentes sans temps d’arrêt. |
Une instance d’application est l’unité d’exécution minimale gérée par le service. | Un pod représente un ou plusieurs conteneurs étroitement couplés et héberge une instance unique d’une application ou d’une charge de travail en cours d’exécution. |
Considérations relatives au réseau
Avant d’approvisionner un cluster AKS, il est important d’examiner attentivement les paramètres réseau. Ces décisions peuvent affecter considérablement les performances, l’extensibilité et la sécurité de vos applications.
AKS s’appuie sur les plug-ins CNI (Container Networking Interface) pour gérer la mise en réseau au sein de ses clusters. Ces plug-ins gèrent des tâches critiques telles que l’attribution d’adresses IP à des pods, le routage du trafic entre eux et l’activation de la communication via Kubernetes Services. AKS prend en charge plusieurs plug-ins CNI adaptés à différents besoins en réseau, ce qui offre une flexibilité dans la conception du cluster.
AKS offre deux modèles de mise en réseau principaux : les réseaux superposés et les réseaux plats. Les réseaux superposés attribuent des adresses IP privées à des pods, séparées du sous-réseau de réseau virtuel Azure des nœuds AKS. Ce modèle est évolutif et conserve les adresses IP de réseau virtuel, mais utilise la traduction d’adresses réseau (NAT) pour le trafic sortant du cluster. En revanche, les réseaux plats attribuent des adresses IP de pod directement à partir du même sous-réseau de réseau virtuel Azure que les nœuds, ce qui permet aux services externes d’accéder aux pods sans NAT. Bien que les réseaux plats permettent la communication directe des pods, ils nécessitent un espace d’adressage IP de réseau virtuel plus étendu.
Une planification IP appropriée est essentielle pour une opération AKS fluide. Il est important de s’assurer que les sous-réseaux disposent de suffisamment d’adresses IP pour toutes les ressources, d’éviter les plages qui se chevauchent et de laisser place à une croissance future pour éviter les problèmes de connectivité et les interruptions. Pour plus d’informations, consultez Vue d’ensemble de la mise en réseau CNI d’Azure Kubernetes Service.
Pour gérer le trafic entrant dans AKS, vous pouvez utiliser des équilibreurs de charge ou des contrôleurs d’entrée. Les équilibreurs de charge fonctionnent sur la couche 4, distribuant le trafic en fonction des protocoles et des ports, tandis que les contrôleurs d’entrée fonctionnent au niveau de la couche 7, offrant des fonctionnalités avancées telles que le routage basé sur les URL et la terminaison TLS/SSL. Les contrôleurs d’entrée réduisent le besoin de plusieurs adresses IP publiques en gérant le trafic vers plusieurs applications via une seule adresse IP. Pour les applications web, les contrôleurs d’entrée sont préférés, car ils fournissent une meilleure gestion du trafic et une intégration avec des ressources Kubernetes. Pour obtenir plus d’informations, consultez Entrée NGINX managée avec le module complémentaire de routage d’applications.
Pour sécuriser le trafic réseau dans AKS, utilisez des pare-feu d’applications web (WAF) comme Azure Application Gateway pour vous protéger contre les attaques telles que les scripts intersites et l’empoisonnement des cookies, tout en gérant le routage du trafic et l’arrêt TLS/SSL. En outre, implémentez des stratégies réseau pour contrôler la communication pod-à-pod en définissant des règles dans les manifestes YAML, en fonction des étiquettes, des espaces de noms ou des ports. Ces stratégies, qui sont disponibles uniquement pour les nœuds Linux, garantissent un meilleur contrôle et une meilleure sécurité du trafic au sein du cluster. Pour plus d’informations, consultez Sécuriser le trafic entre les pods en utilisant des politiques réseau dans AKS.
Approvisionner
Pour approvisionner un cluster AKS, vous pouvez utiliser le portail Azure, Azure CLI ou les modèles ARM. Le processus implique généralement de sélectionner la région souhaitée, de définir la taille et le type du pool de nœuds, et de choisir le modèle réseau (Azure CNI ou Kubenet). Vous devez également configurer des options d’authentification, telles que l’intégration de Microsoft Entra ID pour le contrôle d’accès utilisateur. Pour la surveillance et la mise à l’échelle, vous pouvez activer Azure Monitor et configurer la mise à l’échelle automatique en fonction de l’utilisation des ressources. Après l’approvisionnement, vous pouvez gérer le cluster à l’aide de kubectl ou d’Azure CLI. Pour obtenir des instructions détaillées sur l’approvisionnement d’AKS, consultez Créer un cluster AKS.
Accès et identité
AKS offre plusieurs façons de gérer l’authentification, l’autorisation et le contrôle d’accès pour les clusters Kubernetes. Vous pouvez utiliser le contrôle d’accès en fonction du rôle (RBAC) Kubernetes pour accorder aux utilisateurs ou aux groupes l’accès aux seules ressources dont ils ont besoin. Pour plus d’informations, consultez Utilisation de l’autorisation RBAC. AKS prend également en charge Microsoft Entra ID et Azure RBAC pour améliorer la sécurité et le contrôle, ce qui vous permet d’attribuer et de gérer les autorisations de manière plus simplifiée.
Pour une sécurité optimale, nous vous recommandons d’intégrer AKS à Microsoft Entra ID. Cette intégration utilise les protocoles OpenID Connect et OAuth 2.0 pour l’authentification. Les utilisateurs s’authentifient à l’aide des informations d’identification Microsoft Entra lors de l’interaction avec le cluster AKS, avec leurs autorisations d’accès gouvernées par l’administrateur du cluster. Pour plus d’informations, consultez Activer l’authentification d’identité managée Azure pour des clusters Kubernetes avec kubelogin
L’ID de charge de travail Microsoft Entra intègre les fonctionnalités natives de Kubernetes avec des fournisseurs d’identité externes via la fédération OpenID Connect (OIDC). Elle utilise la Projection de volume du jeton du compte de service pour affecter des identités Kubernetes aux pods via des comptes de service annotés. Avec ces jetons, les applications Kubernetes peuvent authentifier et accéder aux ressources Azure en toute sécurité à l’aide de Microsoft Entra ID. Cette configuration fonctionne en toute transparence avec des bibliothèques telles que les bibliothèques clientes Azure Identity (Azure.Identity
) ou la bibliothèque d’authentification Microsoft (MSAL) pour simplifier l’authentification pour vos charges de travail. Pour savoir comment configurer un cluster et configurer votre pod d’application avec des charges de travail, consultez Déployer et configurer l’identité de la charge de travail.
Conteneuriser des applications
La conteneurisation d’applications dans des images conteneur est essentielle pour le déploiement sur AKS. Il garantit que les déploiements sont cohérents, portables et évolutifs. L’utilisation d’images conteneur offre une flexibilité pour gérer différentes versions d’applications. Il facilite les mises à jour et les restaurations et améliore l’efficacité des ressources en permettant à plusieurs conteneurs de s’exécuter sur un seul hôte.
Azure Spring Apps permet aux utilisateurs de créer des images conteneur et de déployer des applications de différentes façons. Vous pouvez effectuer le déploiement à partir du code source, à partir d’artefacts générés tels que des fichiers JAR ou WAR, ou directement à partir d’une image conteneur. Pour savoir comment déployer à partir d’un fichier JAR ou WAR, consultez Générer une image conteneur à partir d’un fichier JAR ou WAR. Pour savoir comment déployer à partir du code source, consultez Conteneuriser une application à l’aide de Paketo Buildpacks.
Pour surveiller les performances des applications déployées sur AKS, vous pouvez intégrer l’agent APM (Application Performance Monitoring) pendant le processus de conteneurisation. Pour plus d’informations, consultez Intégrer l’analyse des performances des applications dans des images conteneur.
Déployer des applications et des composants Spring Cloud
Pour déployer des applications sur AKS, vous pouvez utiliser Déploiements, qui sont utilisés par Azure Spring Apps ou StatefulSets, en fonction des besoins de votre application. Pour les applications sans état, telles que les microservices, vous utilisez généralement un Déploiement, qui gère les réplicas de votre application et garantit qu’ils s’exécutent en douceur. Ce type est utilisé par Azure Spring Apps. En revanche, les StatefulSets sont idéaux pour les applications nécessitant un stockage persistant ou des identités stables, telles que des bases de données ou des services ayant des besoins avec état.
Outre le déploiement de l’application, vous devez également définir un Service pour exposer vos pods principaux. Un service est une abstraction qui vous permet de définir un ensemble logique de pods et d’y accéder. Cette fonctionnalité est essentielle pour l’équilibrage de charge et la communication entre les pods.
Lors du déploiement de composants Spring Cloud, tels que Spring Cloud Config ou Spring Cloud Gateway, vous utilisez généralement des déploiements pour les services sans état. Pour les services principaux qui ont besoin d’un stockage ou d’un état stable, vous pouvez choisir StatefulSets.
Les liens suivants fournissent des exemples de référence d’images conteneur et de fichiers manifestes pour Spring Cloud Components :
Monitor
La surveillance est essentielle à la gestion des applications déployées sur AKS. AKS fournit un éventail d’outils pour suivre et analyser l’état de votre cluster et de vos charges de travail, y compris les solutions intégrées telles qu’Azure Monitor, Azure Log Analytics et Prometheus. Pour plus d’informations, consultez les articles suivants :
- Prometheus managé pour la collecte de métriques.
- Container Insights pour des collections de journaux
- Azure Managed Grafana pour la visualisation
Outre Azure Monitor et Prometheus, vous pouvez également utiliser d’autres solutions de surveillance telles que Datadog, New Relic ou Elastic Stack (ELK). Vous pouvez intégrer ces outils à AKS pour collecter des journaux, des métriques et des traces, offrant différents insights sur les performances du cluster.
Didacticiel
Nous fournissons un didacticiel pour illustrer l’expérience de bout en bout de l’exécution de l’application de magasin ACME Fitness sur AKS. Pour plus d’informations, consultez acme-fitness-store/azure-kubernetes-service. Ce didacticiel fournit des conseils pratiques et est fourni à des fins de référence. AKS est très flexible. Vous devez donc choisir des configurations et des personnalisations en fonction de vos besoins spécifiques.