Création d'un pipeline d'intégration continue et de déploiement continu pour OCI Functions avec des actions GitHub
Architecture
Cette architecture utilise GitHub Actions en tant que système de déploiement et d'intégration continue externe pour créer du code, le mettre en conteneur et déployer Oracle Cloud Infrastructure Functions. Au lieu de l'action GitHub, vous pouvez utiliser d'autres outils d'environnement de développement intégré, tels que GitLab ou Azure DevOps.
Le schéma suivant illustre cette architecture de référence.

Description de l'image cicd-deploy-oci-functions.png
cicd-deploy-oci-functions-oracle.zip
L'architecture inclut les systèmes externes suivants :
- Système externe (CI/CD)
Le système externe pour CI/CD inclut l'environnement de développement intégré (IDE), le référentiel de code et le pipeline.
Cette architecture utilise GitHub Actions en tant que système de référentiel de code de déploiement et d'intégration continue externe. Il est utilisé pour créer du code, puis le mettre en conteneur à l'aide de Docker. Lorsque l'image en conteneur est prête, GitHub Actions la propage vers un registre OCI. Une fois le transfert effectué vers le registre, il démarre le déploiement OCI Functions. Vous pouvez utiliser d'autres systèmes d'intégration ou de déploiement continus tels qu'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 services non OCI.
L'agrégation et l'enrichissement des journaux OCI Audit, 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 entreprises 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 précise, incluant 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 (entre pays, voire 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. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent le contrôle 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é.
- 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 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 garantit un déploiement et une gestion fiables des applications.
- Functions
Oracle Cloud Infrastructure Functions est une plate-forme Functions-as-a-Service (FaaS) entièrement gérée, colocative, hautement évolutive, à la demande. Il est optimisé par le moteur open source du projet Fn. 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
Oracle Cloud Infrastructure Service Connector Hub est une plate-forme cloud Message Bus qui orchestre les déplacements de données entre des services 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 d'indiquer éventuellement une tâche (telle qu'une fonction) à effectuer sur les données avant qu'elles ne soient transmises au service cible.
Vous pouvez utiliser Oracle Cloud Infrastructure Service Connector Hub afin de créer rapidement une structure d'agrégation de journalisation pour les systèmes SIEM (gestion des informations et des événements de sécurité).
- LoggingLogging 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 qu'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.
- Transmission en continu
Oracle Cloud Infrastructure Streaming constitue une solution de stockage évolutive et durable entièrement gérée permettant d'inclure des flux de données importants transmis en continu, que vous pouvez utiliser et traiter en temps réel. Vous pouvez utiliser Streaming pour l'inclusion de grands volumes de données telles que les journaux d'application, la télémétrie opérationnelle et les données de flux de clics Web, ou pour d'autres cas d'emploi dans lesquels des données sont produites et traitées de manière séquentielle suivant un modèle d'échange de messages de publication-abonnement.
- Notifications
Le service Oracle Cloud Infrastructure Notifications diffuse des messages vers des composants distribués via un modèle publication-abonnement qui délivre des messages sécurisés, durables, extrêmement fiables et à faible latence pour les applications hébergées sur Oracle Cloud Infrastructure.
Recommandations
- 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 à des sous-réseaux dans le VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresse IP privée standard.
Sélectionnez les 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) auquel vous avez l'intention de 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 du flux de trafic et des exigences 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é.
Utiliser des sous-réseaux régionaux.
- Listes de sécurité
Utilisez des listes de sécurité pour définir des règles entrantes et sortantes qui s'appliquent à l'ensemble du sous-réseau.
- 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 ces derniers vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.
- Cloud Guard
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 fonction Liste gérée pour appliquer certaines configurations aux détecteurs.
- Security Zones
Pour les ressources nécessitant une sécurité maximale, Oracle vous recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de stratégies de sécurité définie par Oracle qui repose 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 enfreignent l'une des stratégies.
- Fonctions OCI
Les applications déployées via le service OCI Functions sont hautement disponibles, évolutives, sécurisées et surveillées. Avec OCI Functions, vous pouvez écrire du code dans Java, Python, Node, Go, Ruby et C# (et, pour les cas d'utilisation avancés, utilisez votre propre fichier Dockerfile et machine virtuelle Graal). Vous pouvez ensuite déployer votre code, l'appeler directement ou le déclencher en réponse à des événements.
- OCI Registry
Cette architecture déploie un registre Docker public. Les images Docker sont propagé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 à partir de référentiels publics dans Oracle Cloud.
Points à prendre en compte
Tenez compte des points suivants lors du déploiement de cette architecture de référence.
- Intégrations SIEM
Pour faciliter 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 OCI Functions.
Vous pouvez utiliser OCI Functions pour propager les journaux vers l'adresse d'API HTTPS du SIEM. Pour ce faire, ajoutez un hub de connecteur de service OCI régional qui lit les autres services OCI.
- Fonctions de regroupement
Il est recommandé de définir plusieurs fonctions (par exemple, une par environnement). Si vous disposez de plusieurs environnements (DEV, UAT, PROD, par exemple), vous pouvez suivre des lignes de code distinctes pour chaque fonction dans un environnement distinct.
Déployez
Téléchargez le code du script d'automatisation à partir de GitHub, personnalisez le code et déployez-le.
Vous pouvez appeler une fonction que vous avez déployée vers OCI Functions à partir :
- CLI du projet Fn.
- SDK Oracle Cloud Infrastructure.
- des demandes HTTP signées vers l'adresse d'appel de la fonction. Chaque fonction possède une adresse d'appel.
- Les autres services Oracle Cloud (par exemple, déclenchés par un événement dans le service Events) ou des services externes.
- Accédez à GitHub.
- Clonez ou téléchargez le référentiel.
- Pour déployer cette architecture, suivez le fichier de référence YAML, l'exemple de code d'application Hello World et le document README.
En savoir plus
Pour en savoir plus sur les meilleures pratiques et le déploiement d'intégration continue et de déploiement continu, consultez les ressources suivantes :
- Documentation Oracle Cloud Infrastructure
- Créez un pipeline d'intégration continue et de déploiement continu à l'aide du service Oracle Cloud Infrastructure DevOps et d'OCI Functions
- Oracle Quick Start DevOps CI/CD avec Functions à l'aide de Terraform
- Structure des meilleures pratiques pour Oracle Cloud Infrastructure