Jump to section

Spring sur Kubernetes avec Red Hat OpenShift

Copier l'URL

Red Hat® OpenShift® vous permet de développer et d'exécuter des applications Spring et Spring Boot natives pour Kubernetes.

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, notamment :

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 de développement via Red Hat OpenShift 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

Pour aller plus loin

Article

Tout savoir sur les opérateurs Red Hat OpenShift

Red Hat OpenShift Operators automate the creation, configuration, and management of instances of Kubernetes-native applications.

Article

Pourquoi choisir le service Red Hat OpenShift Serverless ?

Red Hat OpenShift Serverless étend les capacités de Kubernetes pour le déploiement et la gestion des charges de travail severless.

Article

Pourquoi choisir Red Hat OpenShift Service Mesh ?

Avec la solution Red Hat OpenShift Service Mesh, vous disposez d'un outil unique pour connecter, gérer et surveiller vos applications basées sur des microservices.

En savoir plus sur OpenShift

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Système de stockage logiciel qui héberge les données de façon permanente en parallèle de la mise en route et de l'arrêt des conteneurs et entre plusieurs environnements.

Solution de sécurisation des conteneurs native pour Kubernetes et adaptée aux entreprises, qui permet de créer, de déployer et d'exécuter des applications cloud-native de manière sécurisée.

Console unique pour le contrôle des clusters et applications Kubernetes, avec des politiques de sécurité intégrées.

Ressources

Formations

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Développement d'applications cloud-native avec des architectures de microservices

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées