Déployer un pipeline d'intégration continue et de déploiement continu Jenkins sur Terraform sur Oracle Cloud Infrastructure
La livraison rapide de logiciels est importante pour une exécution efficace de vos applications dans le cloud. Jenkins est un produit populaire pour l'automatisation des pipelines d'intégration continue et de déploiement continu pour les charges de travail dans Oracle Cloud. Vous pouvez héberger Jenkins sur Oracle Cloud Infrastructure (OCI) pour centraliser votre automatisation de la création et faire évoluer votre déploiement à mesure que vos projets logiciels se développent.
Architecture
Cette architecture de référence explique comment utiliser Terraform pour déployer un agent de contrôleur Jenkins en conteneur sur une seule machine virtuelle Oracle Linux. Une fois déployée, une instance de calcul Oracle Linux est créée. Cette instance héberge deux conteneurs Docker distincts sur cette instance : l'un pour le contrôleur Jenkins et l'autre pour l'agent Jenkins.
La solution enregistre également la configuration du contrôleur et les espaces de travail de l'agent sur le stockage de blocs OCI, qui est attaché à l'instance de calcul. Un VCN distinct sera créé sur OCI pour héberger tous les services du déploiement.
Le diagramme suivant illustre cette architecture de référence.
Description de l'illustration dock-jenkins-cicd-pipe.png
dock-jenkins-cicd-pipe-oracle.zip
-
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.
- 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é.
- Instance Compute
Jenkins est déployé sur une machine virtuelle d'instance Compute avec deux conteneurs exécutés, l'un en tant que contrôleur et l'autre en tant qu'agent.
- Table de routage
Les tables de routage virtuel contiennent des règles pour acheminer le trafic des sous-réseaux vers des destinations en dehors d'un VCN, généralement via des passerelles.
- 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.
- Jenkins
Jenkins est un serveur d'automatisation open source qui permet aux développeurs de créer, tester et déployer des logiciels en toute fiabilité. Jenkins prend en charge le mode maître/agent, où la charge globale de la création de projets est déléguée à plusieurs noeuds d'agent par le maître. Une installation Jenkins unique peut héberger plusieurs projets ou fournir différents environnements pour les builds et les tests.
- Stockage de blocs
Avec les volumes de stockage de blocs, vous pouvez créer, attacher, connecter et déplacer des volumes de stockage, et modifier leurs performances pour répondre à vos exigences en matière de stockage, de performances et d'application. Une fois un volume attaché et connecté à une instance, vous pouvez l'utiliser comme un disque dur classique. Vous pouvez également déconnecter un volume et l'attacher à une autre instance sans perdre de données. Elle sera utilisée pour enregistrer la configuration du contrôleur et les espaces de travail de l'agent de Jenkins.
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 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é.
Utilisez des sous-réseaux régionaux.
- Sécurité
Utilisez Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans OCI de manière proactive. 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.
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é, OCI 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.
- 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.
- Listes de sécurité
Utilisez des listes de sécurité pour définir les règles entrantes et sortantes qui s'appliquent à l'ensemble du sous-réseau.
Remarques
Tenez compte des points suivants lors du déploiement de cette architecture de référence.
- Performances
Pour obtenir les meilleures performances, assurez-vous que l'instance de calcul dispose de suffisamment de coeurs et de mémoire, basés sur la création ou d'autres tâches exécutées par Jenkins.
- Sécurité
Utilisez des stratégies pour restreindre les personnes autorisées à accéder aux ressources OCI dont dispose votre entreprise et comment.
- Disponibilité
Il s'agit d'une conception minimale qui vous permet d'être opérationnel le plus rapidement possible. Pour une meilleure disponibilité, vous pouvez vous reporter au déploiement décrit dans l'architecture de référence, Déployer Jenkins en mode contrôleur/agent, auquel vous pouvez accéder à partir de la rubrique Explorer plus, ci-dessous.
- Coût
Le coût de cette implémentation dépend des heures de calcul de la machine virtuelle en cours d'exécution.
Déploiement
Le code Terraform permettant de déployer un pipeline d'intégration continue et de déploiement continu Jenkins en conteneur à l'aide de Terraform sur OCI est disponible à partir d'Oracle Cloud Infrastructure Resource Manager ou dans GitHub.
- Déployez à l'aide de l'exemple de pile dans Oracle Cloud Infrastructure Resource Manager :
- Cliquez sur
.
Si vous n'êtes pas déjà connecté, entrez les informations d'identification de la location et de l'utilisateur.
- Sélectionnez la région de déploiement de la pile.
- Suivez les invites à l'écran et les instructions pour créer la pile.
- Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Planifier.
- 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 Planifier.
- Si aucune autre modification n'est nécessaire, revenez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
- Cliquez sur
- Déployer à l'aide de l'interface de ligne de commande Terraform :
- Accédez à GitHub.
- Clonez ou téléchargez le référentiel sur votre ordinateur local.
- Suivez les instructions du document README.
En savoir plus
En savoir plus sur le déploiement d'un pipeline d'intégration continue et de déploiement continu Jenkins en conteneur à l'aide de Terraform sur OCI.
Consultez les ressources supplémentaires suivantes :