Déployez des exécutants GitLab sur OCI Kubernetes Engine avec le redimensionnement automatique de cluster
Déployez des exécutants GitLab sur Oracle Cloud Infrastructure (OCI) Kubernetes Engine avec la fonctionnalité de redimensionnement automatique afin de redimensionner automatiquement les noeuds de processus actif en fonction de la charge pour les travaux en cours d'exécution dans le pipeline d'intégration continue et de déploiement continu.
Architecture
Cette architecture affiche les processus d'exécution GitLab déployés dans un cluster OCI Kubernetes Engine (OKE).
Le schéma 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 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).
- 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. Par conséquent, une panne sur un domaine de disponibilité ne doit pas affecter les autres domaines de disponibilité de la région.
- Domaines de pannes
Un domaine de pannes est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines de pannes avec du matériel et une alimentation indépendants. Lorsque vous répartissez les ressources entre plusieurs domaines de pannes, vos applications peuvent tolérer les pannes physiques du serveur, la maintenance du système et les pannes d'alimentation au sein d'un domaine de pannes.
- 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é.
- Passerelle de service
La passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure du réseau Oracle et ne traverse pas Internet.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul requises par vos applications et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur dans les clusters d'hôtes.
- Cloud Guard
Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner les faiblesses de sécurité de vos ressources et pour surveiller les opérateurs et les utilisateurs afin de détecter certaines 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 vous aide à effectuer ces actions, en fonction des recettes de répondeur 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 stratégies telles que le cryptage des données et la prévention de l'accès public aux réseaux pour l'ensemble d'un compartiment. Une zone de sécurité est associée à un compartiment du même nom et inclut des stratégies 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é.
- Outil de redimensionnement automatique de cluster Kubernetes
L'outil de redimensionnement automatique de cluster Kubernetes augmente ou réduit automatiquement la taille d'un pool de noeuds en fonction des demandes de ressource au lieu de l'utilisation des ressources des noeuds du pool.
- Services OKE
Le service Kubernetes (OKE) est une abstraction qui définit un ensemble logique de pods et une stratégie permettant d'y accéder. L'ensemble de pods ciblé par un service est généralement déterminé par un sélecteur. Les services Kubernetes gèrent le redimensionnement automatique.
- Pool de noeuds de processus actif OKE
Un noeud de processus actif Kubernetes est un ordinateur de processus actif qui exécute des applications en conteneur dans un cluster Kubernetes. Chaque cluster comporte au moins un noeud de processus actif.
Un pool de nœuds de travail Kubernetes (OKE) est un sous-ensemble de nœuds de travail au sein d'un cluster qui ont tous la même configuration. Les pools de noeuds permettent de créer des pools de machines ayant différentes configurations au sein d'un cluster. Par exemple, vous pouvez créer un pool de noeuds en tant que machines virtuelles dans un cluster et un autre pool de noeuds en tant que machines Bare Metal. Un cluster doit comporter au moins un pool de noeuds, mais un pool de noeuds doit ne contenir aucun noeud de processus actif.
Les noeuds de processus actif d'un pool de noeuds sont connectés à un sous-réseau de noeuds de processus actif dans votre réseau cloud virtuel.
- Passerelle Internet
La passerelle Internet autorise le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.
- Passerelle NAT (Network Address Translation)
Une passerelle NAT permet aux ressources privées d'un VCN d'accéder aux 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 à 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.
- 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 les faiblesses de sécurité de vos ressources 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, Oracle Cloud Guard recommande des actions correctives et vous aide à effectuer ces actions, en fonction des recettes de répondeur que vous pouvez définir.
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é, OCI 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.
- Cloud Guard
Cloner et personnaliser les recettes par défaut fournies par Oracle afin de créer des recettes de détecteur et de répondeur personnalisées. Ces recettes vous permettent de spécifier le type de violation de sécurité qui génère un avertissement et les actions autorisées à y être exécutées. 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 fonction Liste gérée pour appliquer certaines configurations aux détecteurs.
- 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.
- OCI Kubernetes Engine
Bien que l'opérateur prenne en charge tout cluster Kubernetes générique, cette architecture utilise des clusters Kubernetes Engine. Ces clusters comportent trois noeuds de processus actif répartis dans différents domaines de disponibilité et de pannes. Le cluster affiché comporte des noeuds de processus actif répartis sur différents hôtes physiques. Vous pouvez créer jusqu'à 1000 noeuds dans un cluster.
- 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.
- Compute
Choisissez des formes avec la combinaison d'OCPU et de mémoire appropriée, et provisionnez le stockage de blocs et NVMe local en fonction des besoins pour les noeuds du cluster Kubernetes.
Points à prendre en compte
Tenez compte des points suivants lors du déploiement de cette architecture de référence :
- Performances
Le redimensionnement automatique de cluster est basé sur la réservation de ressource de déploiement. Vous pouvez contrôler la réservation de ressource de travail en modifiant le fichier
gitlab-ci.yaml
. - Sécurité
Utilisez des stratégies qui limitent les personnes pouvant accéder à telle ou telle ressource Oracle Cloud Infrastructure (OCI) dont dispose votre entreprise, ainsi que la méthode d'accès.
OCI Kubernetes Engine est intégré à OCI Identity and Access Management, qui fournit une authentification facile avec la fonctionnalité d'identité OCI native.
Utilisez les variables suivantes pour contrôler la réservation des ressources pour un travail :
KUBERNETES_CPU_REQUEST: 1 KUBERNETES_MEMORY_REQUEST: 4000M
- Evolutivité
Vous pouvez redimensionner votre application en mettant à jour le nombre de noeuds de processus actif dans le cluster Kubernetes, en fonction de la charge. De même, vous pouvez réduire le nombre de noeuds de processus actif dans le cluster. Lorsque vous créez un service sur le cluster Kubernetes, vous pouvez créer un équilibreur de charge pour distribuer le trafic du service entre les noeuds affectés à ce service. Le redimensionnement automatique de cluster est basé sur la réservation de ressource de déploiement. Vous pouvez contrôler la réservation en modifiant le fichier
gitlab-ci.yaml
.Remarques :
La réservation de ressource de travail à 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 le programme d'exécution GitLab dans le cadre des lignes suivantes du fichierlocals.tf
:cpu_request_overwrite_max_allowed = "1" memory_request_overwrite_max_allowed = "4096M"
- Coût
L'utilisation d'OCI Kubernetes Engine est gratuite et l'utilisation du registre de conteneurs Oracle est gratuite. Les noeuds du cluster Kubernetes sont facturés au même tarif que toutes les autres instances de calcul de même forme.
Déployez
- Déployez à l'aide de l'exemple de pile dans Oracle Cloud Infrastructure Resource Manager :
- Accédez à
.
Si vous n'êtes pas déjà connecté, entrez la location et les informations d'identification 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, puis 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.
- Accédez à
- Déployez à l'aide du code Terraform dans GitHub :
- 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 Oracle Cloud Infrastructure (OCI) et Kubernetes.
Consultez le guide de la solution Cadre des meilleures pratiques pour Oracle Cloud Infrastructure pour connaître les meilleures pratiques.
Consultez les ressources OCI et GitLab supplémentaires suivantes :