Déploiement d'une application basée sur des microservices dans Kubernetes connectée à une instance Autonomous Database
En tant que développeur ou administrateur d'application, lorsque vous concevez et gérez des applications cloud natives, vous avez besoin d'une infrastructure facile à provisionner et à gérer, et vous permet de vous concentrer sur votre conception et vos objectifs commerciaux. OCI Kubernetes Engine (OKE) vous permet de déployer et d'exécuter des applications basées sur des microservices hautement disponibles et évolutives dans le cloud.
Architecture
Dans une architecture de microservices, chaque microservice effectue une tâche simple, et communique avec les clients ou d'autres microservices à l'aide de mécanismes légers tels que les demandes d'API REST.
Cette architecture de référence est destinée à une application de commerce électronique composée de plusieurs microservices polyglottes déployés en tant que conteneurs Docker dans un cluster Kubernetes. La persistance des données est assurée à l'aide d'une base de données Oracle Autonomous Transaction Processing. Les fichiers multimédias et d'image de l'application de commerce électronique sont stockés dans Oracle Cloud Infrastructure Object Storage.
Le diagramme suivant illustre l'architecture.
mushop-infrastructure-oracle.zip
L'architecture comprend les composants suivants :
- Région
Une région Oracle Cloud Infrastructure est une zone géographique localisée contenant des centres de données hébergeant des domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (entre les pays ou même les continents).
- Domaine de disponibilité
Les domaines de disponibilité sont des centres de données autonomes indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées de celles des autres, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent ni infrastructure (par exemple, alimentation, système de refroidissement), ni réseau de domaine de disponibilité interne. Par conséquent, une panne sur un domaine de disponibilité ne doit pas affecter les autres domaines de disponibilité de la région.
- Domaines de pannes
Un domaine de pannes est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité dispose de trois domaines de pannes avec du matériel et une alimentation indépendants. OCI Kubernetes Engine gère la distribution des noeuds dans le cluster sur plusieurs domaines de pannes. Votre application en conteneur est donc protégée contre les pannes physiques du serveur, la maintenance du système et les pannes de courant au sein d'un domaine de pannes.
- Réseau cloud virtuel (VCN) et sous-réseaux
Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent le contrôle sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.
- Passerelle de service
Une passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure du réseau Oracle et ne traverse pas Internet.
- Passerelle NAT
Une passerelle NAT permet aux ressources privées d'un VCN d'accéder aux hôtes sur Internet, sans exposer ces ressources aux connexions Internet entrantes.
- Passerelle Internet
Une passerelle Internet autorise le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing est un service de base de données doté de fonctions d'autopilotage, d'autosécurisation et d'autoréparation, optimisé pour les charges globales de traitement des transactions. Vous n'avez pas à configurer ni à gérer le matériel, ni à installer de logiciel. Oracle Cloud Infrastructure gère la création, la sauvegarde, l'application de patches, la mise à niveau et le réglage de la base de données.
- Object storage
OCI Object Storage permet d'accéder à de grandes quantités de données, structurées ou non, de tout type de contenu, y compris des sauvegardes de base de données, des données analytiques et du contenu enrichi tel que des images et des vidéos. Vous pouvez stocker les données directement à partir d'Internet ou de la plate-forme cloud, et ce, en toute sécurité. Vous pouvez redimensionner le stockage sans dégradation des performances ni de la fiabilité des services.
Dans cette architecture, les ressources multimédias de l'application sont stockées dans Oracle Cloud Infrastructure Object Storage dans un bucket de la classe de stockage standard.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul requises par vos applications et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur dans les clusters d'hôtes.
Le diagramme suivant présente les interactions entre les microservices en conteneur dans cette architecture :
mushop-infrastructure-expand-oracle.zip
Le trafic à partir du réseau Internet public est acheminé par le service DNS via un pare-feu d'application Web (WAF) vers l'équilibreur de charge, qui transmet les demandes entrantes à un microservice entrant (Nginx). Le microservice d'entrée envoie le trafic à un microservice de routeur (Traefik). Selon la nature des demandes, le microservice Routeur les achemine vers les microservices appropriés de l'application. En plus d'interagir avec d'autres microservices, de nombreux microservices interagissent également avec les services Oracle Cloud Infrastructure : OCI Object Storage, OCI API Gateway, OCI Functions, OCI Email Delivery, OCI Streaming et Oracle Autonomous Database.
Recommandations
- VCN
Lorsque vous créez un VCN, déterminez le nombre de blocs CIDR requis et la taille de chaque bloc en fonction du nombre de ressources que vous prévoyez d'attacher à des sous-réseaux dans le VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresse IP privée standard.
Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur site ou un autre fournisseur cloud) auquel vous avez l'intention de configurer des connexions privées.
Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.
Lorsque vous concevez les sous-réseaux, tenez compte du flux de trafic et des exigences de sécurité. Attachez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, qui peut servir de limite de sécurité.
Utiliser des sous-réseaux régionaux.
Remarques :
Le code Terraform pour implémenter cette architecture provisionne la base de données Oracle Autonomous Transaction Processing dans le réseau de services Oracle. Si vous préférez exposer uniquement une adresse privée pour la base de données, vous pouvez ajuster le code Terraform pour attacher la base de données à un sous-réseau privé, comme indiqué dans le diagramme d'architecture. - OCI Kubernetes Engine
Dans cette architecture, les noeuds de processus actif du cluster Kubernetes utilisent la forme VM.Standard2.1 et sont exécutés sur Oracle Linux. Vous pouvez créer jusqu'à 1000 noeuds dans un cluster.
Points à prendre en compte
Lors de l'implémentation de cette architecture, tenez compte de vos exigences pour les paramètres suivants :
- Evolutivité
Vous pouvez redimensionner votre application en mettant à jour le nombre de noeuds de processus actif dans le cluster Kubernetes, en fonction de la charge. De même, vous pouvez réduire le nombre de noeuds de processus actif dans le cluster. Lorsque vous créez un service sur le cluster Kubernetes, vous pouvez créer un équilibreur de charge pour distribuer le trafic du service entre les noeuds affectés au service. Cette architecture utilise un équilibreur de charge pour gérer les demandes entrantes.
- Disponibilité de l'application
Les domaines de pannes assurent la résilience au sein d'un seul domaine de disponibilité. Vous pouvez également déployer des instances ou des noeuds qui effectuent les mêmes tâches dans plusieurs domaines de disponibilité. Cette conception supprime les points de défaillance uniques en introduisant la redondance. Dans cette architecture, Oracle Cloud Infrastructure Kubernetes Engine est responsable de la distribution des noeuds sur les domaines de pannes au sein d'un domaine de disponibilité et de la gestion de la distribution des microservices sur les noeuds disponibles dans le cluster Kubernetes.
- Facilité de gestion
Tous les microservices sont mis en conteneur à l'aide de Docker. Ces images sont stockées dans le service Oracle Cloud Infrastructure Registry. Le déploiement est automatisé à l'aide de Terraform, qui déploie également d'autres services communs, tels que les graphiques Grafana, Prometheus et Helm.
Vous pouvez utiliser d'autres services Oracle Cloud Infrastructure, tels qu'OCI API Gateway, OCI Functions et OCI Email Delivery, pour gérer les API back-end et permettre les abonnements aux newsletters ou aux courriels liés aux produits.
- Sécurité
OCI Kubernetes Engine est intégré à Oracle Cloud Infrastructure Identity and Access Management (IAM), qui facilite l'authentification à l'aide de la fonctionnalité d'identité native. Utilisez des stratégies IAM pour contrôler qui peut accéder à vos ressources et les actions qu'elles peuvent effectuer.
Envisagez d'utiliser Oracle Cloud Infrastructure Web Application Firewall (WAF) pour protéger l'application contre le trafic malveillant à partir du réseau Internet public.
Vous pouvez utiliser le service Oracle Cloud Infrastructure Streaming pour diffuser et enregistrer des événements au niveau de l'application.
Pour protéger vos clés secrètes Kubernetes, vous pouvez les stocker dans un coffre ou les crypter à l'aide de clés que vous tenez à jour dans le service Oracle Cloud Infrastructure Vault. Le cluster Kubernetes peut accéder au coffre, aux clés et aux clés secrètes en privé via la passerelle de service du VCN, sans exposer les demandes d'accès au réseau Internet public. Les stratégies que vous définissez dans Oracle Cloud Infrastructure Identity and Access Management régissent l'accès au coffre. Le service Oracle Cloud Infrastructure Audit vous permet de surveiller et de suivre l'utilisation de vos clés secrètes et clés secrètes protégées par un coffre.
Déployez
Le code requis pour déployer cette architecture de référence est disponible dans GitHub. Vous pouvez extraire le code dans Oracle Cloud Infrastructure Resource Manager en un seul clic, créer la pile et la déployer. Vous pouvez également télécharger le code à partir de GitHub sur votre ordinateur, le personnaliser et déployer l'architecture à l'aide de l'interface de ligne de commande Terraform.
- Déployez à l'aide d'Oracle Cloud Infrastructure Resource Manager :
- Cliquez sur .
Si vous n'êtes pas déjà connecté, entrez la location et les informations d'identification utilisateur.
- Consultez et acceptez les conditions générales.
- Sélectionnez la région de déploiement de la pile.
- Suivez les invites à l'écran et les instructions pour créer la pile.
- Après avoir créé la pile, cliquez sur Actions Terraform, puis sélectionnez Planifier.
- Attendez que le travail soit terminé et vérifiez le plan.
Pour apporter des modifications, revenez à la page Détails de la pile, cliquez sur Modifier la pile et apportez les modifications requises. Exécutez ensuite à nouveau l'action Planifier.
- Si aucune autre modification n'est nécessaire, revenez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
- Cliquez sur .
- Déployez à l'aide de l'interface de ligne de commande Terraform :
- Accédez à GitHub.
- Téléchargez ou clonez le code sur votre ordinateur local.
- Suivez les instructions dans
deploy/complete/README.md
.
En savoir plus
En savoir plus sur le déploiement d'applications en conteneur basées sur des microservices vers des clusters Kubernetes dans le cloud.
Modifier le journal
Ce journal répertorie uniquement les modifications importantes :
21 avril 2025 |
|
Décembre 1, 2020 | Ajout d'étapes pour déployer l'architecture à l'aide d'Oracle Cloud Infrastructure Resource Manager. |