Créez un pipeline d'intégration continue et de déploiement continu à l'aide du service Oracle Cloud Infrastructure DevOps et des fonctions Oracle Cloud Infrastructure.

La livraison rapide de logiciels est essentielle pour exécuter efficacement vos applications dans le cloud. Le service DevOps d'Oracle fournit aux développeurs une plate-forme de déploiement et d'intégration continue. Vous pouvez utiliser le service DevOps pour créer, tester et déployer facilement des logiciels et des applications sur Oracle Cloud. DevOps Créer et déployer des pipelines réduisent les erreurs liées au changement et le temps que les clients passent à créer et déployer des versions.

Le service fournit également des référentiels Git privés pour stocker votre code et prend en charge les connexions à des référentiels de code externe. Que vous migriez des charges de travail vers Oracle Cloud Infrastructure (OCI) depuis un système sur site ou d'autres clouds, ou que vous développiez de nouvelles applications sur OCI, vous pouvez utiliser le service DevOps pour simplifier le cycle de livraison de vos logiciels.

Architecture

Dans cette architecture de référence, vous allez créer et déployer une application python à l'aide des services OCI DevOps et OCI Function.

Le code source de l'application est hébergé sur un référentiel de code DevOps. L'utilisateur final valide (commit) le code dans le référentiel de code. Une nouvelle validation (commit) dans le référentiel de code déclenche le démarrage d'un pipeline de création. Le pipeline de build suit un flux défini par l'utilisateur pour créer les artefacts de fonction à déployer vers les services de fonction OCI. La sortie de la création est stockée dans le registre de conteneurs sous forme d'images Docker. Le pipeline de déploiement utilise ensuite l'image créée à partir du registre de conteneur pour effectuer le déploiement vers l'environnement OCI Functions. Le diagramme d'architecture suivant montre comment une application est créée et déployée à l'aide d'une image par défaut et d'une image personnalisée (à l'aide d'un fichier Dockerfile).

Pour simplifier la configuration de cet exemple de workflow d'intégration continue et de déploiement continu, cet exemple d'application utilise Terraform pour automatiser la création et la configuration des ressources DevOps.

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

Description de l'image cicd-pipe-devops-functions-arch.png ci-après
Description de l'illustration cicd-pipe-devops-functions-arch.png

cicd-pipe-devops-functions-arch-oracle.zip

Cette architecture comporte les composants suivants :
  • Région

    Une région OCI 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 (elles peuvent se trouver dans des pays voire des continents différents). L'architecture utilise une seule région.

  • Projet DevOps

    Regroupement logique de ressources DevOps nécessaires pour implémenter un workflow d'intégration continue et de déploiement continu. Les ressources DevOps peuvent être des artefacts, des pipelines de création, des pipelines de déploiement, des connexions externes, des déclencheurs et des environnements. Les projets DevOps facilitent l'activation de la journalisation, de la surveillance et des notifications pour toutes vos ressources 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 création. Les pipelines de création définissent un ensemble d'étapes pour le processus de création : création, test et compilation d'artefacts logiciels, fourniture 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 du build dans le fichier de spécification du build.

  • Référentiel de code

    Référentiels Git privés hébergés par le service DevOps. Vous pouvez stocker, gérer et développer du code source avec nos référentiels de code DevOps.

  • Pipeline de déploiement

    Séquence d'étapes permettant de distribuer et de déployer un ensemble d'artefacts vers un environnement cible. Le flux et la logique de votre version logicielle peuvent être contrôlés en définissant des étapes qui peuvent s'exécuter en série ou en parallèle.

  • Etapes de déploiement

    Les étapes sont des actions individuelles qui ont lieu lors d'une exécution d'un pipeline. Le pipeline de déploiement DevOps inclut les types d'étape prédéfinis suivants à utiliser dans votre processus de version :

    • Déploiement non simultané : version incrémentielle d'Oracle Container Engine for Kubernetes (OKE), de Functions ou de groupes d'instances
    • Attente : N secondes d'attente
    • Approbation manuelle : poursuivre si une approbation est donnée ; arrêter si une approbation est rejetée.
    • Appeler une fonction : effectuez des tâches ou des intégrations personnalisées en appelant une fonction et transmettez un artefact des paramètres de demande.
  • Artefact DevOps

    Un artefact 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, informez Oracle DevOps de l'emplacement source de l'artefact réel. DevOps prend en charge le registre d'images de conteneur 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. Une fois le référentiel créé, vous pouvez y télécharger des artefacts. Ces artefacts sont un ensemble de fichiers texte, de fichiers binaires et de manifestes de déploiement fournis à l'environnement de déploiement cible. Chaque artefact a un nom, composé de son chemin d'accès : version. Le chemin est une chaîne permettant d'organiser les artefacts.

  • Services de journalisation et de notification OCI

    Le service de journalisation OCI stocke les journaux liés au déploiement. La sortie d'exécution de déploiement et les résultats finaux du déploiement sont affichés sous forme d'entrées de journal. Le service Notifications OCI fournit une visibilité sur l'état le plus récent du projet de déploiement et de ses ressources, et prend les mesures nécessaires. Par exemple, vous êtes averti lorsqu'un événement important, tel qu'une phase dans un pipeline de déploiement en attente d'approbation. Lorsque vous recevez le message de notification, vous pouvez accéder aux pipelines de déploiement DevOps et approuver la phase.

  • Environnements de déploiement

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

    • Cluster Oracle Kubernetes : OCI Container Engine for Kubernetes (OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur sur le cloud.
    • Instances de calcul : le service OCI Compute vous permet de provisionner et de gérer des hôtes Compute dans le cloud. Vous pouvez déployer des instances Compute avec des formes répondant à vos besoins en ressources pour l'UC, la mémoire, la bande passante réseau et le stockage.
    • Functions : Oracle Functions est une plate-forme en tant que service de fonctions entièrement gérée, colocative, hautement évolutive et à la demande. Le service s'appuie sur Oracle Cloud Infrastructure pour entreprises et sur le moteur open source du projet Fn.
    Les environnements peuvent se trouver dans différentes régions OCI de la région du pipeline de déploiement. Cette séparation permet aux développeurs de déployer dans plusieurs régions OCI à l'aide du même pipeline de déploiement.

Recommandations

Utilisez les recommandations suivantes comme point de départ, mais sachez que vos besoins peuvent différer de l'architecture décrite ici.
  • Allocation de mémoire et délai d'attente pour les fonctions
    Nous pouvons modifier la configuration en mettant à jour le fichier func.yaml, selon les paramètres suivants :
  • Virtual Cloud Network (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 se trouvant dans l'espace d'adresses IP privées standard.

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

    Cette architecture utilise un VCN public pour héberger 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.

  • Registre des images du conteneur

    Cette architecture déploie le registre en tant que registre Docker privé à des fins d'utilisation interne. Les images Docker sont propagées vers le registre et en sont extraites. Vous pouvez également utiliser le registre en tant que registre Docker public pour permettre à tout utilisateur ayant accès à Internet et connaissant l'URL appropriée d'extraire des images à partir de référentiels publics dans OCI.

Remarques

Lors de la création et du déploiement d'applications Python à l'aide des services de fonction OCI DevOps et OCI, tenez compte des éléments suivants :

  • DevOps prend en charge les déploiements vers OKE, les hôtes Compute et Functions.
  • Lors du déploiement d'un groupe d'instances sur Compute, seuls les hôtes Linux sont pris en charge.
  • Les artefacts déployés avec DevOps doivent se trouver dans un registre d'artefacts OCI ou dans un référentiel de registre d'images de conteneur.
  • La meilleure pratique consiste à regrouper chaque application et tous ses microservices en un seul projet.

Déployer

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 à partir de GitHub sur votre ordinateur, le personnaliser et le déployer à l'aide de l'interface de ligne de commande Terraform.

  • Déployer à l'aide de l'exemple de pile dans 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. Sélectionnez la région de déploiement de la pile.
    3. Suivez les instructions et les invites à l'écran pour créer la pile.
    4. Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Planifier.
    5. Attendez la fin du travail 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.
  • Déployer en utilisant le 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.

Voir plus

Pour en savoir plus sur le service Oracle DevOps, reportez-vous aux ressources suivantes :

Remerciements

  • Auteur : Rahul M R
  • Contributeur : Lukasz Feldman