Connexion / Inscription Account
Jump to section

Spring sur Kubernetes

Copier l'URL

Red Hat® OpenShift® est la plateforme idéale pour développer et exécuter des applications Spring et Spring Boot natives pour Kubernetes.

Le framework Spring est l'un des frameworks Java les plus utilisés pour la création d'applications basées sur une architecture de microservices distribuée. Le modèle de programmation et de configuration Spring pour les applications basées sur Java se charge de l'infrastructure. Les développeurs peuvent ainsi concentrer leurs efforts sur la logique métier des applications, sans être obligés de recourir à un environnement de déploiement spécifique. Spring Boot simplifie ensuite la mise en paquet et la configuration des applications sous la forme d'applications exécutables et indépendantes, qu'il est facile de déployer en tant que conteneurs sur Kubernetes.

Spring natif pour Kubernetes

À l'instar de plusieurs autres frameworks Java classiques, Spring ne « sait » pas qu'il s'exécute dans un conteneur sur une plateforme comme Kubernetes. Le framework Spring inclut de nombreux composants qui simplifient la création et le déploiement des applications distribuées, notamment Spring Boot, Spring Cloud et Spring Web, ainsi que divers autres outils pour la découverte de services, l'équilibrage de charge, le routage des requêtes, etc. Avec Kubernetes, nombre de ces tâches peuvent être déléguées à la plateforme de conteneurs sous-jacente pour produire une application qui s'intègre plus efficacement à la plateforme sur laquelle elle s'exécute. Pour exploiter le plein potentiel de l'association entre Spring et Kubernetes, il faut utiliser ces chemins de code optimisés pour créer des applications Spring.

Les applications Spring peuvent s'appuyer sur Kubernetes et les capacités qui y sont déployées pour fournir les services cloud dont les développeurs ont besoin pour travailler sur Kubernetes. Ces services incluent notamment les files d'attente de messages, les bases de données, le stockage persistant et la mise en cache.

Registre de services

Les architectures de microservices impliquent souvent la mise à l'échelle dynamique de services individuels dans un cloud privé, public ou hybride où le nombre d'hôtes et leur adresse ne peuvent pas toujours être déterminés à l'avance ni configurés de manière statique. Dans Kubernetes, la réplication et la mise à l'échelle des services sont des fonctions de base. Ainsi, le client n'a pas besoin d'avoir un cache et un compte en cas d'échec du registre de services lui-même. Par exemple, la bibliothèque Netflix Ribbon (souvent utilisée avec des applications Spring) peut être configurée de manière déclarative pour qu'elle utilise Kubernetes au lieu d'un registre de services et ce, sans modification du code.

Équilibrage de charge

Pour les appels clients aux services stateless dans les applications Spring, il est important d'assurer une haute disponibilité pour faciliter la recherche dans un registre de services, puis pour équilibrer la charge entre les instances disponibles. Kubernetes fournit une adresse unique pour chaque service, où les appels seront équilibrés et redirigés vers l'instance appropriée. Dans un cluster Kubernetes, la résolution du nom du service renvoie à l'adresse IP de ce cluster et permet de joindre l'équilibreur de charge. En cas d'appels de l'extérieur qui ne doivent pas passer par le routeur, il est possible de configurer une adresse IP externe pour le service.

Tolérance aux pannes

En raison de la nature distribuée des microservices, les appels distants ont plus de risques d'échouer à mesure que leur nombre augmente. Traditionnellement, il incombe aux développeurs de mettre en œuvre les mécanismes de tolérance aux pannes, tels que les « circuit breakers ». Toutefois, les projets tels qu'Istio qui mettent en place un Service Mesh peuvent alléger cette tâche et fournir un meilleur contrôle sur l'exploitation des services Spring qui s'exécutent dans le cluster.

Configuration externalisée

Les solutions de configuration externalisée peuvent remplacer efficacement la combinaison classique de fichiers de configuration, arguments en ligne de commandes et variables d'environnement utilisée pour augmenter la portabilité et la flexibilité des applications face aux changements extérieurs. Les ConfigMaps Kubernetes peuvent stocker des données très précises, telles que des propriétés individuelles, ou des informations plus brutes, telles que des fichiers de configuration entiers ou des blobs JSON. Ces objets fournissent des mécanismes pour injecter des données de configuration dans les conteneurs, ce qui permet de séparer les configurations des applications Spring tout en les maintenant accessibles à l'aide d'annotations telles que @ConfigProperty.

Traçage distribué et indicateurs de mesure pour les applications

Malgré tous ses avantages, une architecture de microservices peut être difficile à analyser et à corriger en cas de problème. Chaque requête métier génère plusieurs appels vers et entre les services individuels, à plusieurs niveaux. Le traçage distribué permet de relier tous les appels concernant un service particulier et de les associer à une requête métier par le biais d'un ID unique. Ensuite, les indicateurs de mesure permettent aux applications Spring d'exposer des données au niveau de l'application afin que l'état de l'application puisse être examiné avec précision. Les outils de traçage tels que Jaeger, associés à des systèmes de mesure comme Prometheus et Grafana, fournissent une base solide pour la surveillance des applications Spring sur Kubernetes et la résolution des problèmes.

Lorsque les applications Spring évoluent et deviennent des collections de services décentralisés, la gestion des communications et de la sécurité se complexifie. La solution Red Hat OpenShift associée à Red Hat Runtimes fournit aux développeurs Spring les outils, frameworks et intégrations Kubernetes natives requis pour créer et gérer les applications Spring à grande échelle sur la plateforme de conteneurs et de cloud hybride Kubernetes leader sur le marché.

Red Hat OpenShift présente de nombreux avantages pour les développeurs Spring, parmi lesquels :

En utilisant Spring Boot sur OpenShift, les développeurs profitent d'une expérience « Spring Boot sur Kubernetes » naturelle, que ce soit pour les applications Spring anciennes ou nouvelles.

  • Prise en charge de la création d'applications cloud-native avec Spring et Spring Boot
  • Intégration de fonctions Kubernetes qui remplacent les services de sauvegarde autonomes traditionnels
    • Configuration externalisée : ConfigMap Kubernetes et intégration de Spring Cloud Kubernetes
    • Découverte de services : services Kubernetes
    • Équilibrage de charge : contrôleur de réplication Kubernetes
    • Redémarrage automatique : Kubernetes Health Probes et intégration de Spring Actuator
    • Indicateurs de mesure : Prometheus, Grafana et intégration de Spring Cloud Sleuth
    • Traçage distribué avec Istio et Jaeger
  • Outils pour les développeurs avec Red Hat OpenShift et Red Hat CodeReady Studio afin de structurer rapidement de nouveaux projets Spring, d'accéder à des API Spring connues dans vos environnements de développement intégrés préférés et de déployer les applications sur Red Hat OpenShift

Utilisez des API Spring que vous connaissez et profitez de la plateforme et des services Kubernetes sous-jacents dans Red Hat OpenShift et Red Hat Application Services.

Utilisez vos connaissances liées à Spring pour développer des applications modernes à l'aide des technologies les plus récentes.

  • Applications Spring serverless avec Camel-K et Kafka
  • Utilisation des API Spring pour créer des applications Java natives pour les conteneurs avec Quarkus
  • Processus métier natifs pour Kubernetes avec Kogito
  • Utilisation des opérateurs Kubernetes pour créer et lier les applications Spring de façon naturelle à l'aide des API Kubernetes via Halkyon

En savoir plus

Mise en pratique

Scénario d'apprentissage

Suivez des formations pratiques pour développer des applications Spring et Spring Boot sur Kubernetes et OpenShift.

Documentation

Architecture de référence

Découvrez comment créer l'architecture d'une application Spring distribuée sur OpenShift.

Communauté

Open Source

Apprenez-en plus sur l'approche ouverte de Red Hat en matière de création et de prise en charge d'applications Spring cloud-native via le projet SnowDrop.

Les outils Kubernetes de base pour le développement d'applications modernes

Red Hat OpenShift

Red Hat OpenShift

Plateforme de conteneurs qui permet d'accélérer le déploiement d'applications cloud-native.

Red Hat OpenShift

Red Hat OpenShift Streams for Apache Kafka

Service cloud géré pour la création, le déploiement et la mise à l'échelle des applications.

Red Hat Runtimes

Red Hat Runtimes

Sélection d'environnements d'exécution et de frameworks pour le développement d'applications cloud-native.

Red Hat OpenShift

Red Hat OpenShift Data Foundation

Solution de stockage logiciel pour les conteneurs.

Illustration - mail

Ce type de contenu vous intéresse?

Inscrivez-vous à notre newsletter Red Hat Shares.