Créer un pipeline d'intégration continue/développement continu pour le service des fonctions pour OCI avec les actions GitHub

L'intégration et le déploiement continus (intégration continue/déploiement continu) automatisent vos versions, vos tests et votre déploiement afin que vous puissiez expédier les modifications de code plus rapidement et de manière plus fiable. Oracle Cloud Infrastructure Functions est une plate-forme sur demande entièrement gérée, multilocataire, hautement évolutive. Elle repose sur l'environnement de niveau entreprise Oracle Cloud Infrastructure (OCI) et utilise Fn Project un moteur à source ouverte. Cette architecture de référence fournit des structures et des intégrations recommandées pour utiliser l'interface de ligne de commande Fn Project dans tous les outils IDE d'environnement de développement intégré afin de créer et de déployer un pipeline de services du service des fonctions pour OCI d'intégration et de développement en continu.

Architecture

Cette architecture utilise GitHub Actions en tant que système externe d'intégration et de déploiement continus pour créer du code, le conteneuriser et déployer Oracle Cloud Infrastructure Functions. Au lieu de l'action GitHub, vous pouvez utiliser d'autres outils IDE (Integrated Development Environment), tels que GitLab ou Azure DevOps.

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

Une description de cicd-deploy-oci-functions.png suit
Description de l'illustration cicd-deploy-oci-functions.png

cicd-deploy-oci-functions-oracle.zip

L'architecture comprend les systèmes externes suivants :

  • Système externe (CI/CD)

    Le système externe d'intégration et de développement en continu comprend l'environnement de développement intégré (IDE), le référentiel de code et le pipeline.

    Cette architecture utilise les actions GitHub en tant que système externe de référentiel de code d'intégration et de déploiement continus. Il est utilisé pour créer du code, puis le conteneuriser à l'aide de Docker. Lorsque l'image conteneurisée est prête, les actions GitHub la poussent vers un registre OCI. Après avoir terminé le transfert vers le registre, il démarre le déploiement du service des fonctions pour OCI. Vous pouvez utiliser d'autres systèmes d'intégration ou de déploiement continus comme OCI DevOps, Azure DevOps, Gitlab ou Jenkins en fonction de vos besoins.

  • Système externe (SIEM/ITSM/OTHER)

    Le système externe pour SIEM et ITSM représente d'autres systèmes tiers ou des services non OCI.

    L'agrégation et l'enrichissement des journaux de vérification OCI, des journaux de service et des événements de sécurité sont des exigences fondamentales pour les systèmes SIEM ou ITSM externes. La centralisation de ces données permet aux organisations d'analyser, de surveiller et de sécuriser leurs locations.

L'architecture comprend les composants suivants :

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient un ou plusieurs 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 différents pays ou continents).

  • Réseau en nuage virtuel (VCN) et sous-réseau

    Un VCN est un réseau défini par logiciel personnalisable que vous avez configuré dans une région Oracle Cloud Infrastructure. Comme les réseaux en nuage virtuels traditionnels, ils vous offrent un contrôle sur votre environnement de réseau. Un VCN peut disposer de plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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é.

  • Registre

    Oracle Cloud Infrastructure Registry est un registre géré par Oracle qui vous permet de simplifier votre flux de travail, du développement à la mise en production. Le registre vous permet de stocker, de partager et de gérer facilement des artefacts de développement, tels que des images Docker. L'architecture hautement disponible et évolutive d'Oracle Cloud Infrastructure vous permet de déployer et de gérer vos applications en toute confiance.

  • Oracle Functions

    Oracle Cloud Infrastructure Functions est une plate-forme de fonctions-service (FaaS) sur demande, entièrement gérée, multilocataire et hautement évolutive. Il est alimenté par le moteur open source Fn Project. Les fonctions vous permettent de déployer votre code et de l'appeler directement ou de le déclencher en réponse à des événements. Oracle Functions utilise des conteneurs Docker hébergés dans Oracle Cloud Infrastructure Registry.

  • Connecteurs de service

    Le centre de connecteurs de service Oracle Cloud Infrastructure est une plate-forme de bus de messages en nuage qui orchestre le déplacement des données entre les services dans OCI. Vous pouvez utiliser des connecteurs de service pour déplacer des données d'un service source vers un service cible. Les connecteurs de service vous permettent également de spécifier une tâche (telle qu'une fonction) à exécuter sur les données avant leur transmission au service cible.

    Vous pouvez utiliser le centre de connecteurs du service Oracle Cloud Infrastructure pour créer rapidement un cadre d'agrégation de journalisation pour les systèmes de gestion des informations et des événements de sécurité (SIEM).

  • Journalisation
    Le service de journalisation est un service hautement évolutif entièrement géré qui permet d'accéder aux types de journal suivants à partir de vos ressources en nuage :
    • Journaux du service de vérification : Journaux liés aux événements émis par le service de vérification.
    • Journaux de service : Journaux émis par des services individuels tels que passerelle d'API, événements, fonctions, équilibreur de charge, stockage d'objets et journaux de flux VCN.
    • Journaux personnalisés : Journaux contenant des informations de diagnostic provenant d'applications personnalisées, d'autres fournisseurs de services infonuagiques ou d'un environnement sur place.
  • Flux

    Le service de flux pour Oracle Cloud Infrastructure fournit une solution de stockage entièrement gérée, évolutive et durable pour les flux de données en continu à volume élevé que vous consommez et traitez en temps réel. Vous pouvez utiliser le service de flux pour l'ingestion de gros volumes de données, tels que les journaux d'application, les données de télémétrie opérationnelle, les données de flux liés aux clics Web, ou pour d'autres cas d'utilisation où les données sont produites et traitées en continu et séquentiellement dans un modèle de messagerie de messagerie de type publication-abonnement.

  • Avis

    Le service Oracle Cloud Infrastructure Notifications diffuse des messages vers des composants répartis au moyen d'un modèle de publication-abonnement. Cela permet une livraison sécurisée, hautement fiable, à faible latence et durable des messages pour des applications hébergées sur Oracle Cloud Infrastructure.

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences 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 qui se trouvent dans l'espace d'adresses IP privées standard.

    Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur place ou un autre fournisseur de nuage) auquel vous voulez 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 flux de trafic et de sécurité. Attachez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, qui peut servir de limite de sécurité.

    Utilisez des sous-réseaux régionaux.

  • Listes de sécurité

    Utilisez des listes de sécurité pour définir des règles de trafic entrant et sortant qui s'appliquent à l'ensemble du sous-réseau.

  • Groupes de sécurité de réseau

    Vous pouvez utiliser des groupes de sécurité de réseau pour définir un jeu de règles de trafic entrant et sortant qui s'appliquent à des cartes vNIC spécifiques. Nous vous recommandons d'utiliser des groupes plutôt que des listes de sécurité, car ils vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.

  • Protection d'infrastructure en nuage

    Appliquez le service de protection d'infrastructure en nuage au niveau de la location pour couvrir la portée la plus large et réduire le fardeau administratif lié à la maintenance de plusieurs configurations.

    Vous pouvez également utiliser la fonction de liste gérée pour appliquer certaines configurations aux détecteurs.

  • Zones de sécurité

    Pour les ressources qui nécessitent une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de politiques de sécurité définie par Oracle et basée sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles par l'Internet public et elles doivent être chiffrées à l'aide de clés gérées par le client. Lors de la création et de la mise à jour de ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations en fonction des politiques de la recette de zone de sécurité et refuse les opérations qui violent l'une des politiques.

  • Fonctions OCI

    Les applications déployées au moyen du service Fonctions OCI sont hautement disponibles, évolutives, sécurisées et surveillées. Avec le service des fonctions pour OCI, vous pouvez écrire du code en Java, Python, Node, Go, Ruby et C# (et pour les cas d'utilisation avancés, utiliser votre propre fichier Dockerfile et votre propre machine virtuelle Graal). Vous pouvez ensuite déployer votre code, l'appeler directement ou le déclencher en réponse à des événements.

  • registre OCI

    Cette architecture déploie un registre Docker public. Les images Docker sont poussées vers le registre et extraites de celui-ci, ce qui permet à tout utilisateur disposant d'un accès Internet et connaissant l'URL appropriée d'extraire des images des référentiels publics dans Oracle Cloud.

Points à considérer

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

  • Intégrations SIEM

    Pour simplifier le déploiement des informations de journal agrégées dans les régions et les configurations d'application d'une location, vous pouvez utiliser le service Fonctions OCI.

    Vous pouvez utiliser le service des fonctions pour OCI pour pousser les journaux vers le point d'extrémité de l'API HTTPS de SIEM. Pour ce faire, ajoutez un centre de connecteurs de service OCI régional qui lit à partir des autres services OCI.

  • Fonctions de regroupement

    Il est recommandé de définir plusieurs fonctions (par exemple, une par environnement). Si vous avez plusieurs environnements (tels que DEV, UAT, PROD), vous pouvez suivre des lignes de code distinctes pour chaque fonction dans un environnement distinct.

Déployez

Téléchargez le code de script d'automatisation à partir de GitHub, personnalisez-le et déployez-le.

Vous pouvez appeler une fonction que vous avez déployée dans le service des fonctions pour OCI depuis :

  • Interface de ligne de commande Fn Project.
  • Les SDK d'Oracle Cloud Infrastructure.
  • Des demandes HTTP signées au point d'extrémité d'appel de la fonction. Chaque fonction possède un point d'extrémité d'appel.
  • D'autres services Oracle Cloud (par exemple, déclenchés par un événement dans le service d'événements) ou à partir de services externes.
  1. Allez à GitHub.
  2. Copiez ou téléchargez le référentiel.
  3. Pour déployer cette architecture, suivez le fichier YAML de référence, l'exemple de code d'application Hello World et le document README.

Confirmation

  • Auteur : Dipesh Rathod
  • Contributeur : Bhanu Prakash Lohumi