Déploiement d'une application Helm avec Oracle Cloud Infrastructure DevOps

La livraison rapide des logiciels est essentielle à l'exécution efficace de vos applications dans le cloud. L'automatisation des versions logicielles avec déploiement de pipeline augmente la productivité des développeurs et vous permet de publier des fonctionnalités plus fréquemment et avec moins d'erreurs. Elle permet d'éviter les temps d'arrêt lors des déploiements et d'automatiser la complexité de la mise à jour des applications.

Le service Oracle Cloud Infrastructure DevOps offre aux développeurs une expérience de déploiement continu de bout en bout. Le service Oracle Cloud Infrastructure DevOps inclut des pipelines de déploiement afin d'automatiser la livraison continue de logiciels et le processus de déploiement vers les plates-formes Oracle Cloud Infrastructure (OCI) : Oracle Cloud Infrastructure Container Engine for Kubernetes, Oracle Functions et Oracle Cloud Infrastructure Compute.

Les clients migrant des charges de travail depuis des clouds sur site ou autres vers OCI et les clients développant de nouvelles applications sur OCI peuvent utiliser Oracle Cloud Infrastructure.

Architecture

Cette architecture affiche un exemple d'application NodeJS déployée avec le graphique Helm à partir du référentiel de code à l'aide du service DevOps Oracle Cloud Infrastructure (OCI). L'application est déployée vers le cluster Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Pour simplifier le processus, nous utilisons Terraform pour l'automatisation de l'infrastructure.

Le schéma suivant illustre cette architecture de référence.

Description de l'image deploy-helm-based-app.png
Description de l'illustration deploy-helm-based-app.png ci-après

deploy-helm-based-app-oracle.zip

L'architecture comprend 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 les unes des autres et de grandes distances peuvent les séparer (dans les pays ou même les continents).

  • 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. Tout comme les réseaux de centres de données traditionnels, les réseaux cloud virtuels vous donnent 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 vers 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é.

  • Projet OCI DevOps

    Un projet OCI DevOps est un regroupement logique de ressources nécessaires à l'implémentation de votre charge globale d'intégration et de déploiement continus. Les ressources OCI DevOps peuvent être des artefacts, des pipelines de déploiement et des environnements. Les projets OCI DevOps facilitent la journalisation, la surveillance et les notifications pour vos ressources OCI DevOps.

  • Pipeline de build

    Un pipeline de build extrait un ID de validation des référentiels de code source et utilise ce code source pour exécuter les instructions de build. Les pipelines de build définissent un ensemble d'étapes pour le processus de création : création, test et compilation d'artefacts logiciels, distribution d'artefacts aux référentiels OCI et, éventuellement, déclenchement d'un déploiement. Vous définissez le flux et les instructions de l'exécution de build dans le fichier de spécification de build.

  • Etapes de création

    Les étapes de création sont des actions individuelles qui ont lieu lors de l'exécution d'un pipeline de build. Le pipeline de build OCI DevOps comprend trois étapes :
    1. Créer un conteneur : exécute les instructions build_spec.yaml pour compiler, créer et préparer les artefacts nécessaires.
    2. Télécharger des artefacts : télécharge tous les artefacts préparés tels que les images docker vers le référentiel Oracle Cloud Infrastructure Registry configuré.
    3. Déclencher le déploiement : déclenche le pipeline de déploiement pour appliquer les modifications à OKE configuré.
  • Pipeline de déploiement

    Un pipeline de déploiement contient les exigences qui doivent être satisfaites pour fournir un ensemble d'artefacts à un environnement. Les pipelines contiennent des étapes, qui sont les composants de base d'un pipeline. Un pipeline peut comporter des étapes exécutées en série ou en parallèle, afin que vous puissiez contrôler le flux et la logique de votre version logicielle.

  • Etapes de déploiement

    Les étapes sont des actions individuelles qui ont lieu lors de l'exécution d'un pipeline. Le pipeline de déploiement OCI DevOps inclut une seule étape prédéfinie nommée Deploy Helm pour déployer l'application Kubernetes à l'aide du graphique Helm. L'URL du graphique Helm et les artefacts values.yaml OCI DevOps facultatifs sont envoyés en tant qu'arguments à l'étape Déployer Helm. Lors de l'exécution, la phase de déploiement Helm extrait le graphique Helm à partir d'Oracle Cloud Infrastructure Registry et l'applique à l'environnement OKE OCI DevOps configuré avec un fichier values.yaml éventuellement fourni.

  • Artefact DevOps

    Un artefact OCI DevOps est une référence ou un pointeur vers un fichier, un fichier binaire, un package, un manifeste ou une image qui constitue votre application. Lors de la création d'un artefact, vous devez informer OCI DevOps de l'emplacement source de l'artefact réel. OCI DevOps prend en charge le registre de conteneurs OCI et les référentiels de registre d'artefacts OCI.

  • Référentiel d'artefacts

    Le référentiel d'artefacts crée des référentiels pour regrouper des artefacts similaires. Vous pouvez télécharger des artefacts vers les référentiels après leur création. Ces artefacts sont un ensemble de fichiers texte, de fichiers binaires et de manifestes de déploiement qui seront fournis à l'environnement de déploiement cible. Chaque artefact a un nom, composé de son chemin : version. Le chemin est une chaîne permettant d'organiser les artefacts.

  • Helm

    Helm est un gestionnaire de packages pour Kubernetes qui gère le déploiement d'applications sous la forme d'un ensemble de graphiques Helm, ce qui vous permet de gérer facilement les différents services et leurs cycles de vie.

    Le module Helm pour Oracle Linux installe Helm dans un module Kubernetes (cluster).

  • Graphique Helm

    Manifestes YAML Kubernetes combinés en un seul package pouvant être déployé vers vos clusters Kubernetes. Les graphiques Helm contiennent des modèles de fichiers manifestes YAML Kubernetes et un fichier values.yaml pour fournir les valeurs de modèle par défaut. Utilisez des graphiques Helm pour déployer une application ou un composant d'une application plus grande.

  • Services de journalisation OCI et de notifications OCI

    Les services Oracle Cloud Infrastructure Logging et Oracle Cloud Infrastructure Notifications stockent les journaux associés au déploiement. La sortie d'exécution du déploiement et les résultats finaux du déploiement sont affichés sous forme d'entrées de journal. Le service Notifications OCI offre une visibilité sur l'état le plus récent du projet de déploiement et de ses ressources et prend toutes les mesures nécessaires.

  • Environnements de déploiement

    Un environnement est un ensemble de ressources informatiques d'un client où des artefacts sont déployés. Les environnements peuvent être une fonction, une machine virtuelle de calcul, une instance Bare Metal ou un cluster OKE.

    • Cluster Oracle Kubernetes (OKE) : OCI 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.

    • Instances de calcul : le service OCI Compute vous permet de provisionner et de gérer des hôtes de calcul dans le cloud. Vous pouvez lancer des instances Compute avec des formes répondant aux besoins en ressources concernant l'UC, la mémoire, la bande passante réseau et le stockage.

    • Fonctions : Oracle Functions est une plate-forme Functions-as-a-Service entièrement gérée, colocative, hautement évolutive, à la demande. Elle s'appuie sur OCI de niveau entreprise et sur le moteur open source du projet Fn.

    Cette architecture utilise un cluster OKE comme environnement. Les environnements peuvent se trouver dans différentes régions OCI par rapport à la région du pipeline de déploiement. Les développeurs peuvent ainsi effectuer des déploiements dans plusieurs régions OCI à l'aide du même pipeline de déploiement.

Recommandations

Utilisez les recommandations suivantes comme point de départ. 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 de joindre aux sous-réseaux du VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresses IP privées standard.

    Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.

    Cette architecture utilise un VCN public pour héberger le cluster OKE. Vous pouvez également utiliser un VCN privé. Dans ce cas, utilisez une passerelle NAT pour accorder au cluster l'accès via le réseau Internet public.

  • Formes de calcul

    Cette architecture utilise une image de système d'exploitation Oracle Linux avec une forme flexible E4 avec des ressources minimales pour héberger les hôtes de calcul dans les noeuds de cluster OKE. Si votre application a besoin de plus de mémoire ou de cœurs, vous pouvez choisir une autre forme.

  • Kubernetes (OKE)

    Cette architecture se déploie sur le cluster OKE en tant qu'adresse cible. Les noeuds de processus actif sont déployés sur un système d'exploitation Oracle Linux E4. Cette architecture utilise trois noeuds de processus actif dans le cluster, mais vous pouvez créer jusqu'à 1 000 noeuds sur chaque cluster.

  • Registre d'images du conteneur

    Cette architecture déploie Registry en tant que registre Docker privé pour une utilisation interne. Les images Docker sont propagées vers et extraites du registre. Vous pouvez également utiliser Registry en tant que registre Docker public pour permettre à tout utilisateur disposant d'un accès Internet et connaissant l'URL appropriée d'extraire des images à partir de référentiels publics dans Oracle Cloud. Dans cette architecture, le même registre de conteneur est également utilisé pour stocker les graphiques Helm.

  • Registre d'artefacts

    Cette architecture crée un artefact pour le logiciel et la configuration utilisés par un cluster OKE. L'architecture crée un référentiel de registre d'artefacts pour une utilisation interne. Les fichiers binaires logiciels, le texte et les configurations de déploiement sont téléchargés vers et téléchargés à partir du référentiel du registre d'artefacts.

Remarques

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

  • Déploiements pris en charge par Oracle Cloud Infrastructure DevOps

    DevOps prend en charge les déploiements vers Kubernetes (OKE), les hôtes Compute et Oracle Functions. Cette architecture se déploie sur un cluster OKE à l'aide du graphique Helm. Envisagez le déploiement vers d'autres adresses en fonction des exigences.

  • Hôtes pris en charge

    Seuls les hôtes Linux sont pris en charge pour les déploiements de groupe d'instances vers des instances Oracle Cloud Infrastructure Compute.

  • Artefacts

    Les artefacts à déployer avec Oracle Cloud Infrastructure DevOps doivent se trouver dans un registre d'artefacts Oracle Cloud Infrastructure ou un référentiel de registre d'images de conteneur.

  • Projets

    La meilleure pratique consiste à regrouper chaque application et tous ses microservices dans un seul projet.

Déployer

Le code Terraform pour cette architecture de référence est disponible dans GitHub.

  • Déployer à l'aide de l'exemple de pile dans Oracle Cloud Infrastructure Resource Manager :
    1. Cliquez sur Déploiement vers Oracle Cloud.

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

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

    6. Si aucune autre modification n'est nécessaire, revenez à la page Détails de la pile, cliquez sur Actions Terraform, puis sélectionnez Appliquer.
  • Effectuer un déploiement à l'aide du code Terraform dans GitHub :
    1. Accédez à GitHub.
    2. Clonez ou téléchargez le référentiel sur votre ordinateur local.
    3. Suivez les instructions du document README.

Revenus

Auteur : Ashok Raja CM

Contributeur : Saurabh Shah, Lukasz Feldman