Redimensionnement automatique d'Oracle Cloud Infrastructure Container Instances

Les applications déployées à l'aide de conteneurs doivent évoluer en fonction de la demande. Par exemple, une application d'inscription d'étudiant doit augmenter au début du semestre, puis diminuer une fois le semestre en cours. Oracle Cloud Infrastructure Container Instances peut héberger les applications en conteneur, puis les redimensionner automatiquement si nécessaire.

Les instances de conteneur OCI vous permettent d'exécuter facilement des applications sur un calcul sans serveur optimisé pour les conteneurs. Vous pouvez également lancer facilement des conteneurs avec flexibilité pour indiquer la forme de calcul, l'allocation des ressources, la mise en réseau et d'autres configurations facultatives.

Utilisez cette architecture de référence pour redimensionner automatiquement les instances de conteneur OCI en fonction de l'utilisation des ressources.

Architecture

Cette architecture utilise une combinaison de services de notification Oracle, d'alarmes et de fonctions Oracle pour redimensionner automatiquement les instances de conteneur OCI.

Le diagramme suivant illustre cette architecture de référence.



redimensionnement automatique-container-instances-diagram-oracle.zip

L'architecture se compose des éléments suivants :

  • Location

    Une location est une partition sécurisée et isolée qu'Oracle configure dans Oracle Cloud lorsque vous êtes inscrit à Oracle Cloud Infrastructure. Vous pouvez créer, organiser et administrer vos ressources dans Oracle Cloud au sein de votre location. Une location est synonyme d'entreprise ou d'organisation. Généralement, une entreprise dispose d'une location unique et reflète sa structure organisationnelle dans cette location. Une location unique est généralement associée à un seul abonnement et un seul abonnement ne comporte généralement qu'une seule location.

  • 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 les unes des autres et de grandes distances peuvent les séparer (dans des pays voire des continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-région au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments pour organiser les ressources dans Oracle Cloud, contrôler l'accès aux ressources et définir des quotas d'utilisation. Pour contrôler l'accès aux ressources d'un compartiment donné, vous définissez des stratégies qui indiquent qui peut accéder aux ressources et les actions réalisables.

  • Domaines 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. Ainsi, il est peu probable qu'un problème survenant dans un domaine de disponibilité affecte les autres domaines de disponibilité de la région.

  • Domaine 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é comporte trois domaines de pannes avec une alimentation et un matériel indépendants. Lorsque vous distribuez des ressources sur plusieurs domaines de pannes, vos applications peuvent tolérer les pannes de serveur physique, de maintenance du système et d'alimentation 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 un contrôle total 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é.

  • Liste de sécurité

    Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic qui doivent être autorisés vers et depuis le sous-réseau.

  • Passerelle NAT (Network Address Translation)

    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 de service

    La passerelle de service fournit l'accès d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic du VCN vers le service Oracle se déplace sur la structure réseau Oracle et ne traverse jamais Internet.

  • passerelle Internet

    La passerelle Internet autorise le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.

  • Cloud Guard

    Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources à la recherche de faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités à risque. Lorsqu'une erreur de configuration ou une activité non sécurisée est détectée, Cloud Guard recommande des actions correctives et aide à prendre ces actions, en fonction des recettes de répondeur que vous pouvez définir.

  • Programme d'équilibrage de charge

    Le service Oracle Cloud Infrastructure Load Balancing fournit une répartition de trafic automatisée à partir d'un seul point d'entrée vers plusieurs serveurs du back-end.

  • Zone de sécurité

    Les zones de sécurité garantissent dès le départ les meilleures pratiques de sécurité d'Oracle en appliquant des stratégies telles que le cryptage des données et l'accès public aux réseaux pour l'ensemble d'un compartiment. Une zone de sécurité est associée à un compartiment du même nom et inclut des stratégies de zone de sécurité ou une "recette" qui s'applique au compartiment et à ses sous-compartiments. Vous ne pouvez pas ajouter ou déplacer un compartiment standard vers un compartiment de zone de sécurité.

  • Registry

    Oracle Cloud Infrastructure Registry est un registre géré par Oracle qui vous permet de simplifier votre workflow du développement jusqu'à la production. Le registre facilite le stockage, le partage et la gestion des artefacts de développement, tels que les images Docker. L'architecture hautement disponible et évolutive d'Oracle Cloud Infrastructure garantit que vous pouvez déployer et gérer vos applications de manière fiable.

  • Connexion
    Logging est un service hautement évolutif et entièrement géré qui permet d'accéder aux types de journal suivants à partir des ressources du cloud :
    • Journaux d'audit : journaux liés aux événements émis par le service Audit.
    • Journaux de service : journaux émis par des services individuels tels que API Gateway, Events, Functions, Load Balancing, Object Storage et les journaux de flux VCN.
    • Journaux personnalisés : journaux contenant des informations de diagnostic issues d'applications personnalisées, d'autres fournisseurs de cloud ou d'un environnement sur site.
  • Stratégie

    Une stratégie Oracle Cloud Infrastructure Identity and Access Management spécifie qui peut accéder à quelles ressources et comment. L'accès est accordé au niveau du groupe et du compartiment, ce qui signifie que vous pouvez écrire une stratégie qui fournit à un groupe un type d'accès spécifique dans un compartiment spécifique ou dans la location.

  • Vault

    Oracle Cloud Infrastructure Vault permet de gérer de manière centralisée les clés de cryptage qui protègent vos données et les informations d'identification de clé secrète utilisées pour sécuriser l'accès à vos ressources dans le cloud. Vous pouvez utiliser le service Vault pour créer et gérer des coffres, des clés et des clés secrètes.

Recommandations

Utilisez les recommandations suivantes comme point de départ pour créer un environnement sécurisé et robuste. Vos besoins peuvent différer de l'architecture décrite ici.
  • 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 situés dans l'espace d'adresses IP privées standard.

    Sélectionnez des 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) sur lequel vous souhaitez 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 de vos exigences en matière de sécurité et de flux de trafic. 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é.

  • Cloud Guard

    Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondeur personnalisées. Ces recettes vous permettent d'indiquer quel type de violation de sécurité génère un avertissement et quelles actions sont autorisées pour ces violations. Par exemple, vous pouvez détecter les buckets Object Storage dont la visibilité est définie sur Public.

    Appliquez Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire la charge administrative liée à la maintenance de plusieurs configurations.

    Vous pouvez également utiliser la fonctionnalité Liste gérée pour appliquer certaines configurations aux détecteurs.

  • Security Zones

    Pour les ressources nécessitant une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette définie par Oracle de stratégies de sécurité reposant sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles à partir du réseau Internet public et doivent être cryptées à l'aide de clés gérées par le client. Lorsque vous créez et mettez à jour des ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations par rapport aux stratégies de la recette de zone de sécurité et refuse les opérations qui violent l'une des stratégies.

  • Groupes de sécurité réseau

    Vous pouvez utiliser des groupes de sécurité réseau pour définir un ensemble de règles entrantes et sortantes qui s'appliquent à des cartes d'interface réseau virtuelles spécifiques. Nous vous recommandons d'utiliser des groupes de sécurité réseau plutôt que des listes de sécurité, car les groupes de sécurité réseau vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.

Remarques

Tenez compte des points suivants lors du déploiement de cette architecture de référence.

  • Performances

    Cette solution est plus rapide que la création d'une instance de conteneur et son ajout à l'ensemble de back-ends dans la fonction elle-même, car nous n'avons pas à attendre que l'instance de conteneur crée un appel d'API pour renvoyer l'adresse IP de l'instance de conteneur afin de l'ajouter à l'ensemble de back-ends de l'équilibreur de charge. Oracle Cloud Infrastructure Functions a une limite d'exécution de cinq minutes pour chaque appel.

  • Sécurité

    Veillez à placer toutes les instances de conteneur dans un sous-réseau privé et uniquement l'équilibreur de charge public dans le sous-réseau public.

  • Evolutivité

    Veillez à définir les nombres minimal et maximal d'instances de conteneur. Testez minutieusement la solution pour mettre à l'échelle un grand nombre d'instances.

  • Coût

    L'utilisation d'Oracle Cloud Infrastructure Registry est gratuite. L'instance de conteneur entraîne un coût, mais la fonction n'entraîne un coût que pendant la durée d'exécution.

Déploiement

Suivez ces étapes de haut niveau pour redimensionner automatiquement les instances de conteneur.

  1. Créez une pile sur Oracle Cloud Infrastructure Resource Manager pour créer des instances de conteneur, créer un équilibreur de charge et ajouter les instances de conteneur à l'ensemble de back-ends d'équilibreur de charge à l'aide de l'adresse IP de l'instance de conteneur.
  2. Créez la pile afin qu'elle prenne les paramètres suivants :
    • Compartment_OCID
    • Region
    • Tenancy_OCID
    • Container_Instances_Count
    • Is_Public_IP_Assigned
    • Container_instance_registry_secret
    • Container_Instance_Image_URL
    • Private_Subnet_OCID
    • Public_Subnet_OCID
  3. Créez une fonction Oracle qui lit Container_Instance_Count à partir de la pile Resource Manager ci-dessus et la met à jour en fonction de l'appel d'augmentation ou de réduction requis des instances de conteneur.
  4. Une fois l'élément Container_Instance_Count mis à jour dans la fonction Oracle, appliquez la pile Terraform sur Resource Manager avec l'élément Container_Instance_Count mis à jour, puis quittez la fonction.
    La pile Resource Manager se charge d'ajouter ou de mettre fin à l'instance de conteneur OCI en fonction de l'appel et l'ajoute ou l'enlève de l'ensemble de back-ends de l'équilibreur de charge.
  5. Ajoutez les configurations suivantes à votre fonction Oracle :
    • Min_Container_Instance
    • Max_Container_Instance
    • Compartment_ID
    • Resource_Manager_Stack_ID
  6. propagez l'image de fonction Oracle que vous venez de créer vers Oracle Cloud Infrastructure Registry (OCIR).
  7. Créez un sujet sous les services de notification et donnez-lui un nom approprié.
  8. Créez un abonnement sous le sujet créé et sélectionnez la fonction comme protocole.

    Remarque :

    Sélectionnez la fonction que vous avez créée en sélectionnant l'application et le compartiment corrects.
  9. Créez une définition d'alarme dans l'espace de noms oci_computecontainerinstance.
    1. Sélectionnez CPU_utilization ou Mem_Utilization comme mesure.
    2. Sélectionnez le nom de l'instance de conteneur en tant que dimension.
    3. Définissez le seuil requis pour l'alarme sur Fire.
  10. Testez cette architecture de redimensionnement automatique pour augmenter et réduire les instances de conteneur OCI.

En savoir plus

En savoir plus sur les instances de conteneur OCI.

Consultez les ressources supplémentaires suivantes :

Remerciements

Authors: Christophe Pruvost, Karthic Ravindran, Chandrashekar Avadhani

Contributors: John Sulyok