Déploiement de microservices sur un cluster Kubernetes
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. Vous pouvez coder chaque microservice à l'aide d'un langage de programmation qui convient le mieux à la tâche qu'il effectue. Les applications basées sur les microservices sont plus faciles à déployer et à maintenir.
Architecture
Cette architecture de référence présente les microservices Python Flask et Redis déployés en tant que conteneurs Docker dans un cluster Kubernetes dans Oracle Cloud Infrastructure. Les conteneurs extraient des images Docker à partir d'Oracle Cloud Infrastructure Registry.
Le diagramme suivant illustre cette architecture de référence.
Description de l'illustration microservices-oci.png
L'architecture comporte les composants suivants :
- Région
Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient des centres de données, appelés domaines de disponibilité. Les régions sont indépendantes d'autres régions et de grandes distances peuvent les séparer (entre les pays voire les continents).
- Domaines de disponibilité
Les domaines de disponibilité sont des centres de données autonomes et indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui assure la tolérance de pannes. Les domaines de disponibilité ne partagent pas d'infrastructure telle que l'alimentation ou le refroidissement ou le réseau interne du domaine de disponibilité. Par conséquent, il est improbable qu'un problème affecte les autres domaines de disponibilité de la région.
- Domaines de pannes
Un domaine de panne est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines de pannes dotés d'une alimentation et d'un matériel indépendants. Lorsque vous distribuez des ressources entre plusieurs domaines de pannes, vos applications peuvent tolérer les pannes de serveur physique, la maintenance du système et les pannes d'alimentation au sein d'un domaine de pannes.
- Réseau cloud virtuel (VCN) et sous-réseau
Un VCN est un réseau personnalisable et défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux cloud virtuels traditionnels, vous bénéficiez d'un contrôle total sur votre environnement réseau. Un VCN peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, qui peuvent être ciblés vers une région ou un domaine de disponibilité. Chaque sous-réseau se compose d'une plage contiguë d'adresses qui ne chevauchent pas les autres sous-réseaux du VCN. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes 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 dont vos applications ont besoin et Container Engine for Kubernetes les provisionne sur Oracle Cloud Infrastructure dans une location existante. Container Engine for Kubernetes utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur sur des clusters d'hôtes.
- Registry
Oracle Cloud Infrastructure Registry est un registre géré par Oracle qui vous permet de simplifier votre workflow du développement-production. Le registre facilite le stockage, le partage et la gestion des artefacts de développement, comme les images Docker. L'architecture hautement disponible et évolutive d'Oracle Cloud Infrastructure vous garantit un déploiement et une gestion fiables de vos applications.
Recommandations
Vos besoins peuvent être différents de ceux de l'architecture décrite ici. Utilisez les recommandations suivantes comme point de départ.
- 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 compris dans l'espace d'adresse IP privée standard.
Sélectionnez des blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données on-premise ou un autre fournisseur cloud) auquel vous souhaitez configurer des connexions privées.
Une fois que vous avez créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.
Lorsque vous concevez les sous-réseaux, tenez compte de vos exigences en matière de flux de trafic et de sécurité. Associez 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é.
Utilisez des sous-réseaux régionaux.
Pour plus de simplicité, cette architecture utilise un sous-réseau public pour héberger Container Engine for Kubernetes. Vous pouvez également utiliser un sous-réseau privé. Dans ce cas, utilisez une passerelle NAT pour autoriser l'accès au réseau Internet public à partir du cluster.
- Container Engine for Kubernetes
Dans cette architecture, les noeuds de processus actifs utilisent la forme VM.Standard2.1 et s'exécutent sur Oracle Linux. Deux noeuds de processus actifs sont utilisés pour héberger deux microservices différents, mais vous pouvez créer jusqu'à 1000 noeuds sur chaque cluster.
- Registry
Nous utilisons Oracle Cloud Infrastructure Registry en tant que registre Docker privé pour une utilisation interne, en propageant des images Docker vers le registre et en les extrayant. Vous pouvez également l'utiliser en tant que registre Docker public, ce qui permet à tout utilisateur disposant d'un accès Internet et de l'URL appropriée d'extraire des images à partir de référentiels publics dans le registre.
Remarques
- Evolutivité
Vous pouvez redimensionner votre application en mettant à jour le nombre de noeuds de processus actifs dans le cluster Kubernetes, en fonction de la charge. De même, vous pouvez redimensionner en réduisant le nombre de noeuds de processus actifs 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 à ce service.
- Disponibilité de l'application
Les domaines de pannes offrent la meilleure 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 un point de défaillance unique en introduisant la redondance.
- Capacité de gestion
Cette architecture utilise deux microservices. Le premier est un microservice Flask Python, une application Web simple qui effectue des opérations CRUD. L'autre microservice est une base de données en mémoire Redis. Le microservice Python-Flask communique avec le microservice Redis pour extraire les données.
- Sécurité
Utilisez des stratégies qui limitent les droits d'accès à quelles ressources Oracle Cloud Infrastructure votre société a et comment.
Container Engine for Kubernetes est intégré à Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM facilite l'authentification à l'aide de la fonctionnalité d'identité Oracle Cloud Infrastructure native.
déploiement
Le code requis pour déployer un cluster OKE est disponible dans GitHub. Ce code ne déploie pas les microservices.
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 vers votre ordinateur, le personnaliser 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 informations d'identification de la location et de l'utilisateur.
- Consulter et accepter les conditions générales.
- Sélectionnez la région de déploiement de la pile.
- Suivez les invites affichées à l'écran et les instructions pour créer la pile.
- Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Plan.
- 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 Plan.
- 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 .
- Effectuez un déploiement à 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 à l'adresse
README.md
.
Voir plus
En savoir plus sur le déploiement d'applications en conteneur sur Kubernetes dans le cloud.
- Présentation de Registry
- Présentation de Container Engine for Kubernetes
- En savoir plus sur la conception d'applications basées sur les microservices sur Oracle Cloud
- En savoir plus sur la conception d'une topologie Kubernetes pour les applications en conteneur dans le cloud
- Déployer une application basée sur les microservices dans Kubernetes connectée à une base de données autonome
- Déployez des microservices avec une base de données convergée et Helidon
-
Page de service OCI Cache avec Redis
OCI Cache avec Redis : le moyen ultra-rapide d'améliorer les performances de vos applications
Journal des modifications
Ce journal répertorie les modifications importantes :
22 novembre 2023 |
|
15 septembre 2022 | Précisé que le Terraform déployable inclut un cluster OKE. Il ne déploie pas les microservices. |
10 novembre 2021 |
|
5 janvier 2021 | Ajout d'instructions pour le déploiement de l'architecture à l'aide d'Oracle Cloud Infrastructure Resource Manager. |
9 septembre 20200 | Ajout de la section Déploy. |