Déployer une application basée sur des microservices dans Kubernetes connectée à une base de données Autonomous Database
En tant que développeur ou administrateur d'application, lorsque vous concevez et gérez des applications natives en nuage, vous avez besoin d'une infrastructure facile à provisionner et à tenir à jour et qui vous permet de vous concentrer sur vos objectifs de conception et d'affaires. 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 nuage.
Architecture
Dans une architecture de micro-services, chaque micro-service effectue une tâche simple et communique avec les clients ou d'autres micro-services à 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 multilangages déployés en tant que conteneurs Docker dans une grappe Kubernetes. La persistance des données est obtenue à 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 le service Oracle Cloud Infrastructure Object Storage.
Le diagramme suivant illustre l'architecture.
mushop-infrastructure-oracle.zip
L'architecture comporte les composants suivants :
- Région
Une région Oracle Cloud Infrastructure est une zone géographique précise qui contient un ou plusieurs centres de données et qui héberge des domaines de disponibilité. Les régions sont indépendantes les unes des autres, et de grandes distances peuvent les séparer (à travers les pays ou même les continents).
- Domaine de disponibilité
Les domaines de disponibilité sont des centres de données indépendants et autonomes dans une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent pas les éléments d'infrastructure (alimentation ou refroidissement, par exemple) ni le réseau de domaines de disponibilité interne. Ainsi, une défaillance d'un domaine de disponibilité ne doit pas avoir d'incidence sur les autres domaines de disponibilité de la région.
- Domaines d'erreur
Un domaine d'erreur est un regroupement de matériel et d'infrastructure au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines d'erreur dotés d'une alimentation électrique et d'un matériel indépendants. Le moteur Kubernetes pour OCI gère la distribution des noeuds de la grappe sur plusieurs domaines d'erreur. Ainsi, votre application conteneurisée est protégée contre les pannes de serveur physique, la maintenance du système et les pannes de courant au sein d'un domaine d'erreur.
- Réseau en nuage virtuel (VCN) et sous-réseaux
Un réseau VCN est un réseau défini par logiciel personnalisable que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux en nuage virtuels vous permettent de contrôler votre environnement de réseau. Un VCN peut disposer de plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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 que Oracle Cloud Infrastructure Object Storage. Le trafic entre le réseau VCN et le service Oracle circule sur la structure réseau Oracle et ne passe pas par Internet.
- Passerelle de traduction d'adresses de réseau (NAT)
Une passerelle NAT permet aux ressources privées d'un VCN d'accéder aux hôtes sur Internet, sans les exposer aux connexions Internet entrantes.
- Passerelle Internet
Une passerelle Internet permet 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 entièrement géré, autosécurisé et autoréparable optimisé pour les charges de travail de traitement des transactions. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création, la sauvegarde, l'application de correctifs, la mise à niveau et le réglage de la base de données.
- Stockage d'objets
Le service de stockage d'objets pour OCI donne accès à de grandes quantités de données structurées et non structurées de tous types, notamment des sauvegardes de base de données, des données analytiques et du contenu enrichi, comme des images et des vidéos. Vous pouvez stocker des données en toute sécurité directement à partir d'Internet ou de la plate-forme en nuage. Vous pouvez adapter le stockage sans que la performance ou la fiabilité des services soit affectée.
Dans cette architecture, les ressources multimédias de l'application sont stockées dans le service Oracle Cloud Infrastructure Object Storage dans un seau de la classe de stockage standard.
- Moteur Kubernetes
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 conteneurisées dans le nuage. Vous 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, l'ajustement et la gestion des applications conteneurisées sur des grappes d'hôtes.
Le diagramme suivant présente les interactions entre les microservices conteneurisés dans cette architecture :
mushop-infrastructure-expand-oracle.zip
Le trafic provenant de l'Internet public est acheminé par le service DNS au moyen d'un pare-feu d'application Web (WAF) vers l'équilibreur de charge, qui transmet les demandes entrantes à un microservice de trafic entrant (Nginx). Le microservice de trafic entrant envoie le trafic à un microservice de routeur (Traefik). Selon la nature des demandes, le microservice de routeur les achemine vers les microservices appropriés de l'application. Outre l'interaction avec d'autres microservices, de nombreux microservices interagissent également avec les services Oracle Cloud Infrastructure : Stockage d'objets OCI, Passerelle d'API OCI, Fonctions OCI, Service de transmission de messages OCI, Service de diffusion en continu pour OCI 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 aux sous-réseaux du VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresses IP privées standard.
Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur place ou un autre fournisseur de services infonuagiques) 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, ce qui peut servir de limite de sécurité.
Utiliser des sous-réseaux régionaux.
Note :
Le code Terraform pour mettre en oeuvre 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 un point d'extrémité privé 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 illustré dans le diagramme d'architecture. - Moteur Kubernetes pour OCI
Dans cette architecture, les noeuds de travail de la grappe Kubernetes utilisent la forme VM.Standard2.1 et s'exécutent sur Oracle Linux. Vous pouvez créer jusqu'à 1000 noeuds dans une grappe.
Points à considérer
Lors de l'implémentation de cette architecture, tenez compte des exigences relatives aux paramètres suivants :
- Extensibilité
Vous pouvez redimensionner votre application en mettant à jour le nombre de noeuds de travail dans la grappe Kubernetes, en fonction de la charge. De même, vous pouvez réduire le nombre de noeuds de travail dans la grappe. Lorsque vous créez un service sur la grappe Kubernetes, vous pouvez créer un équilibreur de charge pour répartir 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é d'application
Les domaines d'erreur 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 entre les domaines d'erreur d'un domaine de disponibilité et de la gestion de la distribution des microservices sur les noeuds disponibles dans la grappe Kubernetes.
- Gérabilité
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 des graphiques Grafana, Prometheus et Helm.
Vous pouvez utiliser d'autres services Oracle Cloud Infrastructure, tels que le service Passerelle d'API OCI, le service Fonctions OCI et le service de transmission de messages pour OCI pour gérer les API dorsales et pour activer les abonnements aux bulletins d'information ou aux courriels relatifs aux produits.
- Sécurité
OCI Kubernetes Engine est intégré à Oracle Cloud Infrastructure Identity and Access Management (IAM), qui fournit une authentification facile avec une fonctionnalité d'identité native. Utilisez des politiques IAM pour contrôler qui peut accéder à vos ressources et les actions qu'elles peuvent effectuer.
Envisagez d'utiliser le service de pare-feu d'application Web d'Oracle Cloud Infrastructure Web Application Firewall (WAF) pour protéger l'application contre le trafic malveillant provenant de l'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 une chambre forte ou les chiffrer à l'aide des clés que vous tenez à jour dans le service Oracle Cloud Infrastructure Vault. La grappe Kubernetes peut accéder à la chambre forte, aux clés et aux clés secrètes en privé au moyen de la passerelle de service du VCN, sans exposer les demandes d'accès à l'Internet public. Les politiques que vous définissez dans Oracle Cloud Infrastructure Identity and Access Management régissent l'accès à la chambre forte. Le service Oracle Cloud Infrastructure Audit vous permet de surveiller et de suivre l'utilisation de vos clés et clés secrètes protégées par une chambre forte.
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 de GitHub sur votre ordinateur, personnaliser le code et déployer l'architecture à l'aide de l'interface de ligne de commande Terraform.
- Déployer à l'aide d'Oracle Cloud Infrastructure Resource Manager :
- Cliquez sur
Si vous n'êtes pas déjà connecté, entrez les données d'identification de la location et de l'utilisateur.
- Réviser et accepter les conditions générales.
- Sélectionnez la région dans laquelle déployer la pile.
- Suivez les invites et les instructions à l'écran pour créer la pile.
- Après avoir créé la pile, cliquez sur Actions Terraform, puis sélectionnez Planifier.
- Attendez que la tâche soit terminée et vérifiez le plan.
Pour apporter des modifications, retournez à la page Détails de la pile, cliquez sur Modifier la pile et apportez les modifications requises. Exécutez ensuite de nouveau l'action Planifier.
- Si aucune autre modification n'est nécessaire, retournez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
- Cliquez sur
- Déployer à l'aide de l'interface de ligne de commande Terraform :
- Allez à GitHub.
- Téléchargez ou clonez le code sur votre ordinateur local.
- Suivez les instructions décrites dans
deploy/complete/README.md
.
Informations complémentaires
Apprenez-en davantage sur le déploiement d'applications conteneurisées basées sur des microservices vers des grappes Kubernetes dans le nuage.
Journal des modifications
Ce journal répertorie uniquement les modifications importantes :
Avril 21, 2025 |
|
Décembre 1, 2020 | Ajout d'étapes pour déployer l'architecture à l'aide d'Oracle Cloud Infrastructure Resource Manager. |