Déployez les exécutants GitLab sur le moteur Kubernetes pour OCI avec l'ajustement automatique de grappe
Déployez GitLab Runners sur Kubernetes Engine pour Oracle Cloud Infrastructure (OCI) avec une fonctionnalité d'ajustement automatique pour ajuster automatiquement les noeuds de travail en fonction de la charge pour les tâches d'exécution en douceur dans le pipeline d'intégration et de développement en continu.
Architecture
Cette architecture présente les exécutants GitLab déployés dans une grappe OCI Kubernetes Engine (OKE).
Le diagramme suivant illustre cette architecture de référence.

Description de l'illustration git-lab-runner-kubernetes.png
git-lab-runner-kubernetes-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 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).
- Domaines de disponibilité
Les domaines de disponibilité sont des centres de données indépendants et autonomes dans une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent pas les éléments d'infrastructure (alimentation ou refroidissement, par exemple) ni le réseau de domaines de disponibilité interne. Par conséquent, une défaillance d'un domaine de disponibilité ne devrait pas affecter les autres domaines de disponibilité de la région.
- Domaines d'erreur
Un domaine d'erreur est un regroupement de matériel et d'infrastructure au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines d'erreur avec une puissance et un matériel indépendants. Lorsque vous répartissez des ressources entre plusieurs domaines d'erreur, vos applications peuvent tolérer les pannes physiques de serveur, la maintenance du système et les pannes d'alimentation au sein d'un domaine d'erreur.
- 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é.
- Passerelle de service
La passerelle de service fournit l'accès d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le réseau VCN et le service Oracle circule sur la matrice réseau Oracle et ne passe pas par Internet.
- Moteur Kubernetes
Oracle Cloud Infrastructure Kubernetes Engine pour (Moteur Kubernetes pour OCI ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications conteneurisées dans le nuage. Vous indiquez les ressources de calcul dont vos applications ont besoin et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, l'ajustement et la gestion des applications conteneurisées sur les grappes d'hôtes.
- Protection d'infrastructure en nuage
Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Le service de protection d'infrastructure en nuage utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources afin de détecter les faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs pour certaines activités risquées. Lorsqu'une mauvaise configuration ou une activité non sécurisée est détectée, le service de protection d'infrastructure en nuage recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondant que vous pouvez définir.
- Zone de sécurité
Les zones de sécurité garantissent les meilleures pratiques de sécurité d'Oracle dès le départ en appliquant des politiques telles que le chiffrement des données et la prévention de l'accès public aux réseaux pour un compartiment entier. Une zone de sécurité est associée à un compartiment du même nom et inclut des politiques de zone de sécurité ou une "recette" qui s'applique au compartiment et à ses sous-compartiments. Vous ne pouvez pas ajouter ou déplacer un compartiment standard vers un compartiment de zone de sécurité.
- Ajustement automatique de grappe Kubernetes
Le composant d'ajustement automatique de grappe de Kubernetes augmente ou diminue automatiquement la taille d'un groupe de noeuds en fonction des demandes de ressources, au lieu de l'utilisation des ressources des noeuds du groupe.
- Services OKE
Le service Kubernetes (OKE) est une abstraction qui définit un jeu logique de pods et une politique permettant d'accéder à ceux-ci. Le jeu des pods ciblés par un service est généralement déterminé par un sélecteur. Les services Kubernetes gèrent l'ajustement automatique.
- Groupe de noeuds de travail OKE
Un noeud de travail Kubernetes est une machine de travail qui exécute des applications conteneurisées dans une grappe Kubernetes. Chaque grappe comporte au moins un noeud de travail.
Un groupe de noeuds de travail Kubernetes (OKE) est un sous-ensemble de noeuds de travail d'une grappe qui ont tous la même configuration. Les groupes de noeuds permettent de créer des groupes de machines ayant des configurations différentes dans une grappe. Par exemple, vous pouvez créer un groupe de noeuds dans une grappe en tant que machines virtuelles, et un autre groupe de noeuds en tant que machines sans système d'exploitation. Une grappe doit comporter au moins un groupe de noeuds, mais il n'est pas nécessaire qu'un groupe de noeuds contient des noeuds de travail.
Les noeuds de travail d'un groupe de noeuds sont connectés à un sous-réseau de noeuds de travail dans votre VCN.
- Passerelle Internet
La passerelle Internet permet le trafic entre les sous-réseaux publics d'un VCN et l'Internet public.
- Passerelle de traduction d'adresses de réseau (NAT)
Une passerelle NAT permet aux ressources privées d'un VCN d'accéder à des hôtes sur Internet, sans les exposer aux connexions Internet entrantes.
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 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.
- Sécurité
Utilisez Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans OCI de manière proactive. Oracle 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 risquées. Lorsqu'une mauvaise configuration ou une activité non sécurisée est détectée, Oracle Cloud Guard recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondant que vous pouvez définir.
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. Lorsque vous créez et mettez à jour des ressources dans une zone de sécurité, OCI 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.
- Protection d'infrastructure en nuage
Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondant personnalisées. Ces recettes vous permettent de spécifier quel type de violations de sécurité génèrent un avertissement et quelles actions sont autorisées pour elles. Par exemple, vous pouvez détecter des seaux de stockage d'objets dont la visibilité est réglée à Public.
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.
- 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.
- Moteur Kubernetes pour OCI
Bien que l'opérateur prenne en charge toute grappe Kubernetes générique, cette architecture utilise des grappes Kubernetes Engine. Ces grappes ont trois noeuds de travail répartis dans différents domaines de disponibilité et d'erreur. La grappe affichée comporte des noeuds de travail répartis sur différents hôtes physiques. Vous pouvez créer jusqu'à 1000 noeuds dans une grappe.
- 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.
- Calcul
Sélectionnez des formes avec la combinaison appropriée d'OCPU et de mémoire, et provisionnez NVMe local et le stockage par blocs selon les besoins pour les noeuds de la grappe Kubernetes.
Points à considérer
Tenez compte des points suivants lors du déploiement de cette architecture de référence :
- Performance
L'ajustement automatique de grappe est basé sur la réservation de ressources de déploiement. Vous pouvez contrôler la réservation de ressources de tâche en modifiant le fichier
gitlab-ci.yaml
. - Sécurité
Utilisez des politiques qui limitent l'accès aux ressources Oracle Cloud Infrastructure (OCI) dont dispose votre entreprise et la façon d'y accéder.
Le moteur Kubernetes pour OCI est intégré au service de gestion des identités et des accès pour OCI, qui facilite l'authentification avec la fonctionnalité d'identité OCI native.
Utilisez les variables suivantes pour contrôler la réservation des ressources pour une tâche :
KUBERNETES_CPU_REQUEST: 1 KUBERNETES_MEMORY_REQUEST: 4000M
- Extensibilité
Vous pouvez augmenter votre application en mettant à jour le nombre de noeuds de travail dans la grappe Kubernetes, selon la charge. De même, vous pouvez réduire le nombre de noeuds de travail dans la grappe. Lorsque vous créez un service sur la grappe Kubernetes, vous pouvez créer un équilibreur de charge pour distribuer le trafic du service entre les noeuds affectés à celui-ci. L'ajustement automatique de grappe est basé sur la réservation de ressources de déploiement. Vous pouvez contrôler la réservation en modifiant le fichier
gitlab-ci.yaml
.Note :
La réservation de ressources de tâche à l'aide de paramètres dans le fichiergitlab-ci.yaml
ne doit pas dépasser le nombre maximal de réservations autorisé défini pour l'exécuteur GitLab dans les rangées suivantes du fichierlocals.tf
:cpu_request_overwrite_max_allowed = "1" memory_request_overwrite_max_allowed = "4096M"
- Coût
L'utilisation du moteur Kubernetes pour OCI est gratuite et l'utilisation du registre de conteneurs Oracle est gratuite. Les noeuds de la grappe Kubernetes sont facturés au même tarif que toutes les autres instances de calcul ayant la même forme.
Déployez
- Déployer à l'aide de l'exemple de pile dans Oracle Cloud Infrastructure Resource Manager :
- Allez à
.
Si vous n'êtes pas déjà connecté, entrez la location et les données d'identification de l'utilisateur.
- Sélectionnez la région dans laquelle déployer 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 la tâche soit terminée et vérifiez le plan.
Pour apporter des modifications, retournez à la page Détails de la pile, cliquez sur Modifier la pile et apportez les modifications requises. Ensuite, exécutez de nouveau l'action Planifier.
- Si aucune autre modification n'est nécessaire, retournez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
- Allez à
- Déployer à l'aide du code Terraform dans GitHub :
- Allez à GitHub.
- Clonez ou téléchargez le référentiel sur votre ordinateur local.
- Suivez les instructions du document
README
.
Informations complémentaires
Apprenez-en plus sur Oracle Cloud Infrastructure (OCI) et Kubernetes.
Consultez le guide de la solution Cadre des meilleures pratiques pour Oracle Cloud Infrastructure.
Vérifiez les ressources OCI et GitLab supplémentaires suivantes :