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.

La description de microservices-oci.png suit
Description de l'illustration microservices-oci.png

microservices-oci-oracle.zip

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 :
    1. Cliquez sur Déploiement sur Oracle Cloud.

      Si vous n'êtes pas déjà connecté, entrez les informations d'identification de la location et de l'utilisateur.

    2. Consulter et accepter les conditions générales.
    3. Sélectionnez la région de déploiement de la pile.
    4. Suivez les invites affichées à l'écran et les instructions pour créer la pile.
    5. Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Plan.
    6. 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.

    7. Si aucune autre modification n'est nécessaire, revenez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
  • Effectuez un déploiement à l'aide de l'interface de ligne de commande Terraform :
    1. Accédez à GitHub.
    2. Téléchargez ou clonez le code sur votre ordinateur local.
    3. Suivez les instructions à l'adresse README.md.

Journal des modifications

Ce journal répertorie les modifications importantes :