Un dépôt Flux qui sert un seul cluster se range presque n'importe comment. Dès
qu'il en sert plusieurs, staging et production au minimum, sa structure
décide de ce qu'on peut promouvoir, relire et restreindre. Cette leçon monte
l'organisation que décrit le guide officiel de Flux : un dossier
clusters/<env> par cluster, une infrastructure commune et des
applications déclinées par overlays Kustomize. Le cluster de test, en Flux 2.9.6, applique
la variante staging, et la comparaison des deux environnements tient en deux
lignes. Elle compare ensuite les quatre organisations de dépôts que le guide
présente, avec ce que chacune permet de contrôler.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ranger un dépôt en
clusters/,infrastructure/etapps/ - Décliner une application par environnement avec des overlays Kustomize
- Ordonner l'infrastructure avant les applications dans chaque cluster
- Promouvoir un changement de staging vers la production
- Choisir entre monorepo, dépôt par environnement, par équipe ou par application
Prérequis
Section intitulée « Prérequis »Cette leçon assemble des mécanismes déjà vus : dépendances entre Kustomizations, overlays et substitution de variables.
- La leçon Kustomization avancée
- La leçon Configuration par environnement
Quelle arborescence pour plusieurs clusters ?
Section intitulée « Quelle arborescence pour plusieurs clusters ? »Le guide officiel de Flux range un monorepo en trois dossiers de premier
niveau. clusters/ contient l'entrée de chaque cluster, la seule chose qui
diffère d'un cluster à l'autre ; infrastructure/ porte ce que chaque
cluster doit avoir avant les applications ; apps/ porte les applications,
avec un socle commun et un overlay par environnement.
plateforme/├── clusters/│ ├── staging/infrastructure.yaml ← Kustomizations du cluster staging│ └── production/infrastructure.yaml ← Kustomizations du cluster production├── infrastructure/│ └── namespaces/namespaces.yaml ← commun à tous les clusters└── apps/ ├── base/podinfo/ ← socle de l'application ├── staging/kustomization.yaml ← overlay staging └── production/kustomization.yaml ← overlay productionChaque cluster est bootstrappé sur son dossier : --path=clusters/staging
pour l'un, --path=clusters/production pour l'autre. Il ne voit ainsi que
ses propres Kustomizations, qui pointent vers l'infrastructure commune et vers
l'overlay de son environnement.
Décliner une application par overlay
Section intitulée « Décliner une application par overlay »Le socle apps/base/podinfo décrit l'application une fois. Chaque overlay le
reprend et ne patche que ce qui change : ici le nombre de réplicas et le
message affiché.
apiVersion: kustomize.config.k8s.io/v1beta1kind: Kustomizationresources: - ../base/podinfopatches: - target: kind: Deployment name: podinfo patch: | - op: replace path: /spec/replicas value: 3 - op: replace path: /spec/template/spec/containers/0/env/0/value value: productionLa différence réelle entre les deux environnements se lit avec un simple
diff des deux constructions. Sur le dépôt de test, elle tient en deux
lignes, ce qui rend toute dérive entre environnements immédiatement visible
en revue :
diff <(kustomize build apps/staging) <(kustomize build apps/production)7c7< replicas: 1---> replicas: 319c19< value: staging---> value: productionLes overlays conviennent quand la structure des objets diffère d'un environnement à l'autre ; quand seules des valeurs changent, la substitution post-build évite même les dossiers par environnement. Les deux se combinent.
Ordonner l'infrastructure avant les applications
Section intitulée « Ordonner l'infrastructure avant les applications »L'entrée de chaque cluster déclare deux Kustomizations : l'infrastructure,
avec wait: true, puis les applications, qui en dépendent. Les
applications ne sont jamais appliquées avant que leur namespace, leurs CRD ou
leurs contrôleurs existent.
apiVersion: kustomize.toolkit.fluxcd.io/v1kind: Kustomizationmetadata: name: infrastructure namespace: flux-systemspec: interval: 1h path: ./plateforme/infrastructure prune: true wait: true sourceRef: kind: GitRepository name: fleet-infra---apiVersion: kustomize.toolkit.fluxcd.io/v1kind: Kustomizationmetadata: name: apps namespace: flux-systemspec: dependsOn: - name: infrastructure interval: 10m path: ./plateforme/apps/staging prune: true wait: true sourceRef: kind: GitRepository name: fleet-infraLe cluster de test, branché sur clusters/staging, a appliqué les deux couches
dans l'ordre et déployé la variante staging :
NAME READY MESSAGEinfrastructure True Applied revision: main@sha1:c11ceb7fapps True Applied revision: main@sha1:c11ceb7f$ kubectl -n podinfo get deploy podinfo …replicas=1 message=stagingL'intervalle de l'infrastructure est volontairement plus long que celui des applications : elle change rarement, et ses changements peuvent toucher tout le cluster.
Promouvoir de staging vers la production
Section intitulée « Promouvoir de staging vers la production »Dans un monorepo, promouvoir, c'est porter dans l'overlay de production un changement déjà validé en staging, par une pull request. Le guide officiel insiste sur l'infrastructure : ses changements peuvent provoquer une panne de tout le cluster, et se font donc par étapes. On fusionne d'abord le changement pour staging ; une fois le cluster réconcilié et ses tests de conformité passés, on le promeut en production, toujours derrière une revue.
Pour les applications, l'automatisation d'images peut livrer une nouvelle
version en staging, et pousser la même mise à jour vers une branche dédiée
pour la production, où une PR attend l'approbation : c'est le schéma vu dans la
leçon Automatisation d'images.
Les branches restent courtes : tous les environnements vivent dans main,
dans des dossiers distincts.
Monorepo, dépôt par environnement, par équipe ou par application ?
Section intitulée « Monorepo, dépôt par environnement, par équipe ou par application ? »Le guide officiel décrit quatre organisations. Elles ne s'excluent pas : une plateforme réelle en combine souvent deux. Le choix porte surtout sur qui peut lire et modifier quoi.
| Organisation | Principe | Ce qu'elle apporte | Ce qu'elle coûte |
|---|---|---|---|
| Monorepo | Tous les environnements dans main, en dossiers | Une seule revue, une vision complète | Tout le monde lit la configuration de production |
| Dépôt par environnement | Un dépôt staging, un dépôt production | Accès à la production restreint, revues plus ciblées | Promotion plus lente, surtout pour l'infrastructure |
| Dépôt par équipe | La plateforme gère l'infrastructure, chaque équipe ses applications | Séparation des responsabilités | Demande l'isolation multi-tenant |
| Dépôt par application | Les manifestes vivent avec le code ; le dépôt de configuration pointe dessus | Pas de duplication de manifestes | Une source de plus par application |
Le dépôt par équipe s'appuie sur l'isolation vue dans la leçon Multi-tenancy : la plateforme enregistre la source de chaque équipe, et chaque équipe gère ses overlays. Le dépôt par application se branche par une GitRepository vers le dépôt de l'application, ou par un chart Helm publié.
À retenir
Section intitulée « À retenir »- Un monorepo Flux se range en
clusters/<env>,infrastructure/etapps/; chaque cluster est bootstrappé sur son propre dossier. - Les overlays Kustomize déclinent une application par environnement ; un
diffdes constructions montre l'écart réel entre environnements. - L'infrastructure se réconcilie avant les applications, grâce à
dependsOnetwait. - La promotion de staging vers la production passe par une PR et des tests, par étapes pour l'infrastructure.
- Monorepo, dépôt par environnement, par équipe ou par application : le choix porte sur qui peut lire et modifier la production.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Multi-tenancy
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications