Bienvenue dans le premier jour de notre challenge « 20 jours pour se préparer à la certification Kubernetes » !
Pour cette première étape, nous allons poser les fondations indispensables
à l’administration d’un cluster Kubernetes. L’objectif n’est pas simplement
de mémoriser des commandes, mais de comprendre les mécanismes qui permettent
de construire, maintenir et faire évoluer un cluster.
🎯 Le thème du jour : les fondations de l’administration
Aujourd’hui, nous nous concentrons sur les bases de l’administration
d’un cluster Kubernetes.
La maîtrise de ces éléments constitue un socle essentiel pour préparer
efficacement la certification CKA.
Dans un environnement Kubernetes construit avec kubeadm, plusieurs opérations fondamentales doivent être
maîtrisées : initialisation du plan de contrôle, ajout de nœuds,
sauvegarde de l’état du cluster et opérations de maintenance.
Cette première journée couvre notamment :
La configuration initiale et l’initialisation du Control Plane.
L’ajout de ressources de calcul avec les Worker Nodes.
Les opérations critiques de maintenance, notamment les mises à jour.
La protection de l’état du cluster grâce aux sauvegardes etcd.
Le déploiement et la mise à l’échelle d’une application.
🛠️ Aperçu des exercices du jour
Cinq exercices vont vous permettre de progresser progressivement,
du simple déploiement d’une application jusqu’à des opérations
d’administration plus sensibles.
Niveau
Exercice
Objectif principal
🟢 Simple
Exercice 1
Déployer et mettre à l’échelle une application basique.
🟡 Intermédiaire
Exercice 2
Initialiser le Control Plane avec kubeadm.
🟡 Intermédiaire
Exercice 3
Joindre un nouveau Worker Node au cluster.
🔴 Complexe
Exercice 4
Sécuriser l’état du cluster avec un snapshot etcd.
🔴 Complexe
Exercice 5
Procéder à une mise à jour du Control Plane.
💻 Les 5 défis pratiques
À vous de jouer !
Essayez de réaliser ces exercices sur votre propre environnement
de laboratoire. Ne cherchez pas immédiatement la solution :
prenez le temps de consulter la documentation Kubernetes et
d’expérimenter.
💡 Conseil :
Ne cherchez pas immédiatement la solution. Prenez le temps de réaliser
les exercices dans votre environnement de laboratoire et utilisez la
documentation Kubernetes pour vous guider.
📚 Les réponses demain
Les corrections détaillées des cinq exercices seront publiées demain, dans l’article du Jour 2.
Vous pourrez ainsi comparer votre démarche avec la solution proposée,
comprendre les éventuelles erreurs et identifier les commandes ou
concepts à retenir pour la certification.
🎯 Méthode recommandée :
essayez d’abord de résoudre chaque exercice sans regarder la solution.
Même une tentative infructueuse est utile : elle vous permettra de
mieux comprendre la correction et de mémoriser les commandes.
🏁 À demain !
Cette première journée vous a permis de revoir les opérations
fondamentales nécessaires à l’administration d’un cluster :
déploiement d’une application, initialisation avec kubeadm, ajout d’un nœud, sauvegarde d’etcd
et préparation d’une mise à jour.
À vous maintenant de passer à la pratique !
Rendez-vous demain pour le Jour 2 :
nous commencerons par les corrections des exercices d’aujourd’hui
avant d’attaquer les nouveaux défis. 🚀
Exercice 1 : Déploiement d’une application simple
🎯 Objectif
Commencer par une opération Kubernetes classique :
créer un Deployment et modifier son nombre de réplicas.
📋 Travail demandé
Créez un Deployment nommé nginx utilisant l’image
conteneur nginx.
Vérifiez que le Deployment est correctement exécuté et que
le nombre de réplicas disponibles correspond au nombre souhaité.
Mettez à l’échelle le Deployment afin de passer
d’un à trois réplicas.
Exercice 2 : Initialisation du cluster avec kubeadm
🎯 Objectif
Initialiser le Control Plane d’un nouveau cluster Kubernetes
à l’aide de kubeadm.
📋 Travail demandé
Désactivez le swap sur la machine.
Celui-ci doit être correctement configuré conformément
aux prérequis de la version de Kubernetes utilisée.
Initialisez le Control Plane avec kubeadm init
en utilisant un fichier de configuration YAML.
Déployez un réseau de Pods avec un plugin CNI tel que Cilium.
BONUS
Refaite une installation du cluster avec un autre CNI : Calico
Exercice 3 : Agrandissement du cluster
🎯 Objectif
Ajouter un nouveau Worker Node au cluster et vérifier qu’il
rejoint correctement le Control Plane.
📋 Travail demandé
Depuis le Control Plane, générez une nouvelle commande
de jonction avec kubeadm.
Connectez-vous au second nœud et exécutez la commande kubeadm join fournie.
Revenez sur le Control Plane et vérifiez la présence
du nouveau nœud.
Bonus
Créer un second noeud worker et ajouter le au cluster.
Exercice 4 : Sauvegarde de la base de données etcd
🎯 Objectif
Protéger l’état du cluster en réalisant une sauvegarde
de la base de données etcd.
📋 Travail demandé
Vérifiez que l’instance etcd est accessible sur son endpoint local.
Préparez les variables nécessaires à l’authentification TLS :
certificat client, clé privée et autorité de certification.
Utilisez etcdctl snapshot save pour créer
une sauvegarde de la base de données.
Exercice 5 : Mise à jour sécurisée du Control Plane
🎯 Objectif
Réaliser une opération de maintenance sur un Control Plane
en limitant les risques pour les workloads exécutés sur le nœud.
📋 Travail demandé
Isolez le nœud avec kubectl drain.
Prenez soin de gérer les Pods contrôlés par des DaemonSets.
Analysez le plan de mise à jour avec kubeadm upgrade plan.
Appliquez ensuite la mise à jour avec kubeadm upgrade apply.
💡 L’astuce du jour
Ne cherchez pas à tout retenir par cœur.
Pour la préparation au CKA, il est beaucoup plus intéressant
d’apprendre à retrouver rapidement une information dans
la documentation officielle Kubernetes.
Cette première journée vous a permis de revoir les opérations
fondamentales nécessaires à l’administration d’un cluster :
déploiement d’une application, initialisation avec kubeadm, ajout d’un nœud, sauvegarde d’etcd
et préparation d’une mise à jour.
À vous maintenant de passer à la pratique !
Les solutions détaillées des cinq exercices seront publiées demain.
Rendez-vous pour le Jour 2 🚀
Comment un Architecte Solution prépare et survit à la certification Kubernetes
STATUS: EXAM_PREPARATION_IN_PROGRESS_
Aujourd’hui, j’ai décidé de te partager mon expérience de préparation à la CKA (Certified Kubernetes Administrator). Sache que je ne suis pas un administrateur Kubernetes de profession. Je suis Architecte Solution : mon quotidien, c’est de concevoir les clusters et la manière dont les applications s’y déploient. La gestion quotidienne (Ops) du cluster n’est donc clairement pas une activité que je réalise à la main tous les jours.
Tu te demandes alors : Pourquoi passer la CKA et pas la CKAD ? C’est simple, j’ai plutôt besoin des compétences de la CKS (Certified Kubernetes Security Specialist) dans mon univers professionnel qui nécessite une sécurité renforcée. Or, pour obtenir la CKS, le prérequis absolu est d’avoir la CKA. Bien sûr, je pourrais me contenter de suivre une formation sur la sécurité de Kubernetes, mais pourquoi m’arrêter là ? C’est un challenge personnel et professionnel. Les certifications (même si elles doivent être renouvelées tous les 2 ans) forcent à se maintenir à niveau. C’est aussi un excellent ticket pour maintenir un haut niveau d’employabilité.
Maintenant que le contexte est posé, voici mon plan d’attaque pour la préparation à la CKA.
Ma méthode d’apprentissage :
La documentation officielle : Incontournable. Leur site est très bien fait. Je retiens particulièrement la section sur les configurations d’objets Kubernetes et les cas d’usage.
Les blogs et vidéos YouTube : Pour la vulgarisation et les retours d’expérience.
La pratique acharnée : C’est le plus formateur. Quand on n’est pas SRE, c’est difficile de voir des problèmes variés au quotidien. Il faut donc s’imposer des exercices.
Note : J’ai opté pour le pack d’apprentissage annuel de la Linux Foundation. Dans notre métier où tout évolue vite, se former est une discipline de vie. Je n’attends pas toujours que mon employeur ou le CPF finance ces formations.
2. Les Exercices de Préparation
Avec le voucher de l’examen, vous avez droit à deux passages sur le simulateur officiel (Killer.sh). Ne les prenez pas à la légère !
Le simulateur est souvent plus difficile que l’examen lui-même. Lors de mon premier passage, mon niveau de manipulation était trop juste.
Le temps est une composante cruciale : j’ai eu 9/74 dans les 2 premières heures, puis j’ai mis 11h au total pour boucler le reste (score final 68/74).
La correction fournie est géniale : elle montre souvent des chemins beaucoup plus courts (commandes impératives) pour arriver au même résultat.
> ⚠️ Attention à l’environnement :
Le passage sur l’environnement de l’examen m’a perturbé car les raccourcis clavier (notamment le copier/coller) diffèrent de ceux de mon Mac. Entraînez-vous dans les mêmes conditions !
3. Les Conditions de l’Examen
Un environnement strict : Navigateur vierge, bureau vide, pas de livres, pas de double écran, et pas de papier/crayon ! (Très dur quand on a l’habitude de dessiner des architectures pour débugger).
100% Pratique : Aucun QCM. Vous résolvez des problèmes sur des clusters live (mise en place HA, déploiements, sécurité, et surtout corriger des installations cassées).
4. Les Thèmes de l’Examen & Documentation Officielle
Erreur 1 : Négliger la pratique. La CKA est 100% pratique, faire au minimum 100h de manipulation kubectl est indispensable.
Erreur 2 : Écrire tous les YAML from scratch. Utilisez toujours kubectl ... --dry-run=client -o yaml > file.yaml.
Erreur 3 : Mal gérer son temps. Sautez les questions difficiles et revenez-y plus tard. Priorisez celles avec un fort coefficient de points.
Erreur 4 : Oublier de changer de contexte. Exécutez toujours kubectl config use-context <nom> avant chaque question.
Erreur 5 : Ne pas tester sa solution. Vérifiez toujours avec un kubectl get ou describe que l’état attendu est atteint.
6. Mes Exercices Pratiques (Exemples)
Q1. Création rapide de Pod
Enoncé : Vous devez créer un pod nommé nginx-pod utilisant l’image nginx:1.25, dans le namespace production, avec une limite mémoire de 256Mi.
$ kubectl run nginx-pod –image=nginx:1.25 -n production –dry-run=client -o yaml > pod.yaml
# Editer le fichier pod.yaml pour ajouter la section resources.limits.memory
Explication : La commande imperative kubectl run est la plus rapide. Attention, l’ancienne syntaxe avec --limits a été dépréciée dans les versions récentes pour les pods simples. Générer le YAML avec --dry-run et l’éditer avec vi reste la méthode la plus fiable et rapide à l’examen.
Q2. Diagnostic de Planification (Scheduling)
Enoncé : Un pod reste en état ‘Pending’. kubectl describe pod indique FailedScheduling: 0/3 nodes are available: 3 node(s) had untolerated taint.
Solution attendue : Ajouter une toleration dans le manifeste du Pod (spec.tolerations) correspondant aux taints présents sur les nœuds cibles.
Explication : Les taints empêchent la planification des pods qui n’ont pas la tolération correspondante. Retirer les taints des nœuds fonctionnerait techniquement, mais c’est une mauvaise pratique qui casse la conception de l’architecture. Comprendre la différence entre taints/tolerations (répulsion) et nodeAffinity (attraction) est crucial.
Q3. Backup ETCD
Enoncé : Vous devez sauvegarder la base de données etcd avant une mise à jour majeure. Quelle est la procédure ?
Explication :etcd nécessite l’API v3 et l’authentification mutuelle TLS. Oublier les certificats fera échouer la commande. Cette question tombe systématiquement à l’examen : mémorisez les chemins des certificats /etc/kubernetes/pki/etcd/ par cœur !
Imaginez un chantier où le peintre commence à peindre les murs alors que les maçons n'ont pas encore fini de monter la brique. C'est exactement ce qui arrive dans vos pipelines GitHub Actions quand la logique de dépendance est floue.
Le problème est classique : on veut qu'un job ne s'exécute pas tant qu'un autre n'est pas terminé. Intuitivement, on cherche une condition. On hésite entre forcer un ordre (needs) ou vérifier une validation (if).
Pourtant, ces deux attributs ne jouent pas dans la même cour. L'un construit le squelette de votre CI/CD, l'autre en est le garde-fou. Si vous les confondez, vous créez des pipelines "magiques" ou instables où les données ne circulent pas et où les échecs ne sont pas correctement interceptés.
1. Le Modèle Mental : Structure vs Logique
Avant de toucher au YAML, retenez cette distinction fondamentale :
Chaînage : Pour accéder aux outputs du job précédent (impossible sans needs !).
Sécurité : Si le job build échoue, le job test est automatiquement annulé (skippé).
3. if : Le Garde-Fou
if intervient au moment de l'exécution. Le job est planifié, mais avant de démarrer, l'exécuteur vérifie la condition.
jobs:
deploy:
runs-on: ubuntu-latest
# Condition basée sur le contexte, pas sur un autre job
if: github.ref == 'refs/heads/main'
steps:
- run: echo "Déploiement en Prod"
Exemple de contexte métier :
Utilisez if: failure() pour envoyer une notification Slack uniquement si le pipeline plante.
4. Comparatif Stratégique
Critère
needs
if
Niveau
Structure du pipeline
Logique d'exécution
Ordonnancement
Oui (Graphe)
Non
Accès aux outputs
Oui
Non
Usage principal
Étapes logiques
Règles métier / Branches
5. La Règle d'Or du Pipeline Mature
⚡ LE MANTRA À GRAVER DANS LE MARBRE :
👉 Si un job dépend d’un autre (ordre) → utilisez needs
👉 Si un job dépend d’un contexte (branche, tag, event) → utilisez if
Dans un environnement industriel, on ne choisit pas l'un contre l'autre. On les combine :
deploy-prod:
needs: [test, security-scan] # ORDRE : J'attends que les tests soient verts
if: github.ref == 'refs/heads/main' # CONTEXTE : Je ne déploie que si je suis sur Main
runs-on: ubuntu-latest
steps:
- run: ./deploy.sh
C'est le modèle recommandé : needs garantit l'intégrité structurelle (le "quand"), et if garantit la conformité logique (le "pourquoi").
6. Regard de Coach : Le pipeline est un produit
Au-delà de la syntaxe YAML, comprendre cette différence relève de la culture Craftsmanship.
🛡️ Lisibilité : Un pipeline avec des needs bien placés est auto-documenté.
🛡️ Intention : Ne cachez pas une dépendance derrière un if complexe. Rendez-la explicite.
🛡️ Robustesse : Un pipeline "plat" (sans needs) est un risque de sécurité : vos jobs pourraient s'exécuter en parallèle et déployer un code non testé.
Par Nicolas DELAHAYE | v.1974 | Architecte Solution
STATUS: NETWORK_ARCHITECTURE_UPGRADE
1. Le Constat : Pourquoi tuer l'Ingress ?
Pendant des années, l'objet Ingress a été le standard de facto. Couplé à des contrôleurs comme NGINX, Traefik ou HAProxy, il a fait le travail. Mais soyons honnêtes, à l'échelle, c'est devenu un cauchemar de maintenance.
Les limites sont structurelles :
L'enfer des Annotations : Pour faire du rate-limiting ou du rewrite, vous injectez des annotations spécifiques au contrôleur (vendor lock-in).
Tout ou rien : L'objet Ingress mélange la configuration de l'infrastructure (TLS, IP) et le routage applicatif (Paths). Difficile de séparer les rôles Ops et Dev.
HTTP Only : Pas de support natif propre pour TCP, UDP ou gRPC sans "hacks".
2. Gateway API : Une Révolution Architecturale
La Gateway API n'est pas une v2 de l'Ingress. C'est une refonte complète basée sur une architecture orientée Rôles. Elle introduit plusieurs ressources (CRDs) pour découpler les responsabilités.
Choisir son Flow : Le miroir de votre organisation
Par Nicolas DELAHAYE | Article Pilier | Stratégie & DevOps
STATUS: ARCHITECTURAL_ANALYSIS_IN_PROGRESS
L'Erreur Originelle : Le Flow comme simple outil
Dans l'univers du développement logiciel, une conversation revient inlassablement lors du lancement d'un projet : "Quel workflow Git allons-nous utiliser ?". Trop souvent, la réponse est technique : "On va faire du GitFlow parce que c'est robuste" ou "GitHub Flow, c'est ce que font les start-ups, c'est plus moderne".
C'est une erreur fondamentale de jugement. Choisir son flux de gestion de branches n'est pas une décision technique comparable au choix d'une base de données ou d'un framework JavaScript. Votre Git Flow est le reflet direct de votre gestion de produit, de la confiance interne de votre équipe et de votre tolérance au risque.
Si votre workflow Git frotte, c'est souvent parce qu'il est en désaccord avec votre réalité organisationnelle. Un workflow complexe comme GitFlow peut paralyser une équipe agile cherchant le déploiement continu, tandis qu'un flux trop simple comme GitHub Flow peut mettre en danger une équipe soumise à des régulations strictes.
1. L'impact du Cycle de Développement et du Cadre (Frameworks)
La première contrainte qui doit guider votre choix est le rythme cardiaque de votre projet. Comment planifiez-vous la valeur que vous livrez ?
Le Mode Cascade / Cycle en V (Prince 2, PMI)
Dans des environnements régulés ou des projets au forfait classique, le cycle de développement est souvent prédictif. On spécifie, on développe, on teste, on livre. Les versions majeures sortent tous les 3 ou 6 mois.
Ici, le flow doit supporter la notion de "Release" figée. Vous avez besoin de stabiliser une version tout en continuant à développer la suivante. GitFlow est structurellement adapté à ce besoin. Il permet de maintenir plusieurs versions en parallèle et de gérer rigoureusement les correctifs.
Le Mode Agile Itératif (Scrum)
En Scrum, le rythme est dicté par le Sprint (souvent 2 semaines). À la fin du Sprint, vous devez avoir un incrément potentiellement livrable.
Le flow doit ici supporter une branche d'intégration (souvent Develop) qui accumule les fonctionnalités validées pendant le sprint. Cependant, la lourdeur de GitFlow peut commencer à peser si l'équipe souhaite livrer pendant le sprint.
Le Mode Flux Tendu (Kanban / Lean)
En Kanban, il n'y a plus de notion de "lot" ou de "version" au sens classique. Une fonctionnalité est prête ? Elle part en production.
Dans ce contexte, toute branche de "longue durée" (comme une branche Develop qui ne serait mergée que tous les mois) devient un stock, donc un déchet. Ici, un flow comme GitHub Flow, basé sur une branche principale unique et des déploiements fréquents, est impératif[.
2. Les Normes de l'Équipe : Solo, Pair ou Mercenaire ?
La sociologie de votre équipe influence la manière dont le code doit transiter. Le workflow est aussi un outil de contrôle qualité et de communication.
Le cas du "Mercenaire" ou de l'équipe distribuée
Si vous travaillez avec des freelances, des contributeurs Open Source ou des équipes hétérogènes avec un turnover élevé, la confiance "par défaut" n'est pas toujours possible. Votre flow doit agir comme un sas de sécurité.
La branche Main (ou Master) devient un sanctuaire. Personne ne push dessus. Le workflow doit imposer des Feature Branches strictes et le passage obligatoire par des Merge Requests (MR) ou Pull Requests. C'est le "Gatekeeper" (Tech Lead) qui valide l'entrée.
Le cas du "Pair Programming" et du "Mob Programming"
À l'inverse, si votre équipe pratique le Pair Programming intensif, la revue de code est effectuée en temps réel, pendant l'écriture.
Imposer une Pull Request formelle et attendre 4h qu'un collègue la valide est un gaspillage pur. Ces équipes s'orientent souvent vers du Trunk-Based Development ou un GitHub Flow très accéléré, car la qualité est injectée à la source, pas au contrôle final.
3. Le conflit de pouvoir : Qui tient le manche du déploiement ? (Dev vs Ops)
C'est souvent l'angle mort des choix de workflow. Qui a la responsabilité de la mise en production ? Cette question définit la direction du flux : Push ou Pull ?
Scénario A : Le modèle "Push" (Pression sur l'Ops)
L'équipe de développement considère que son travail est fini quand la fonctionnalité est mergée sur Main. Elle "pousse" le code.
Impact sur le Flow : Cela implique souvent l'utilisation de GitHub Flow ou de CI/CD automatisé[. L'Ops (ou la plateforme) subit le rythme des développeurs. Si le pipeline est vert, ça part en prod. C'est le modèle des équipes "You build it, you run it".
Scénario B : Le modèle "Pull" (Responsabilité Ops)
Ici, l'équipe Ops (ou SRE) est garante de la stabilité. Elle refuse que chaque merge parte en prod automatiquement.
Impact sur le Flow : L'équipe Dev livre un package (un Tag) ou met à jour une branche de Release. L'Ops décide quand il "tire" (pull) ce tag pour le déployer.
C'est là que GitLab Flow brille particulièrement. Il permet de réconcilier ces deux mondes en introduisant des branches d'environnement (ex: production, pre-production). Les devs mergent sur Main, mais le déploiement effectif ne se fait que lorsque l'on merge (ou cherry-pick) vers la branche de production.
4. Anatomie des options : De la théorie à la pratique Git
Maintenant que le contexte humain est posé, regardons comment cela se traduit techniquement. Comme vous l'avez mentionné, la gestion des branches est la clé de voûte du système.
Les Branches Canoniques
Peu importe le flow, vous manipulerez ces concepts :
Master/Main Branch : Représente l'état "prêt pour la production" du code. C'est la vérité terrain.
Develop Branch : Le point d'intégration pour les nouvelles fonctionnalités. C'est le "brouillon propre" de la prochaine version.
Feature Branches : Créées depuis develop (ou main selon le flow) pour implémenter une nouveauté. Elles isolent le travail en cours.
Release Branches : Branchées depuis develop pour préparer une livraison (gel du code, tests finaux, documentation).
Hotfix Branches : Créées depuis master pour corriger une urgence en prod. C'est le "pompier" du système.
Option 1 : GitFlow (Le "Structured Approach")
Conçu par Vincent Driessen, c'est le modèle le plus strict. Il utilise toutes les branches citées ci-dessus.
Fonctionnement : On développe sur feature, on merge sur develop. Quand on est prêt, on crée une release. Une fois validée, elle est mergée sur main ET sur develop.
Pour qui ? Les grandes équipes, les projets complexes, ceux qui ont des cycles de release planifiés.
Le piège : La complexité de gestion des merges et la lourdeur pour un simple fix.
Option 2 : GitHub Flow (Le "Agile Approach")
Une approche simplifiée, populaire pour le déploiement continu.
Fonctionnement : Il n'y a que main et des feature branches . Une feature terminée = une Pull Request = un Merge sur Main = un Déploiement .
Pour qui ? Les petites/moyennes équipes, les start-ups, ceux qui veulent itérer très vite.
Le piège : La branche main peut devenir instable si les tests (CI) ne sont pas bétons, car tout merge est potentiellement en prod.
Option 3 : GitLab Flow (Le "Middle Ground")
Une alternative qui tente de résoudre les manques de GitFlow (trop complexe) et de GitHub Flow (trop simpliste pour la prod complexe) .
Fonctionnement : Le développement se fait sur main (comme GitHub Flow), mais on ajoute des branches "d'environnement" ou de "release" en aval (ex: pre-production, production). On merge de l'une vers l'autre pour promouvoir le code.
Pour qui ? Les équipes qui font du CI/CD mais qui ont besoin de valider manuellement des environnements (UAT, Staging) avant la prod.
5. Checklist de Décision : Trouvez votre Flow
Avant de lancer git init, réunissez votre Tech Lead, votre Product Owner et votre Ops, et répondez à ces questions :
📋 La Matrice de Choix
□ Avez-vous besoin de maintenir plusieurs versions en production (v1.0, v2.0) ? Oui → GitFlow (ou GitLab Flow avec branches release ). Non → GitHub Flow.
□ Quelle est la fréquence de vos déploiements ? Plusieurs fois par jour → GitHub Flow. Une fois toutes les 2 semaines/mois → GitFlow.
□ Votre équipe est-elle Junior ou Senior ? Junior → GitFlow peut structurer et rassurer. Senior/Autonome → GitHub Flow libère la vélocité.
□ Avez-vous des environnements de validation stricts (QA, UAT) avant la Prod ? Oui → GitLab Flow est idéal pour mapper les branches aux environnements.
□ Qui déploie ? C'est automatisé au merge → GitHub Flow. C'est l'Ops qui décide → GitLab Flow ou GitFlow.
📚 Sources & Documentation Officielle
// Liste des pointeurs mémoire utilisés pour cette analyse :
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.
Ne cherchez pas immédiatement la solution. Prenez le temps de réaliser
les exercices dans votre environnement de laboratoire et utilisez la
documentation Kubernetes pour vous guider.