Nous terminons par l’industrialisation : après ce module, vous serez capable d’automatiser vos déploiements Kubernetes, de mettre en place un flux GitOps et de planifier votre réussite aux certifications CNCF.
Table of Contents
Objectifs
- Templater vos manifestes avec Helm ou Kustomize en fonction des besoins.
- Mettre en place un flux GitOps avec Argo CD (ou Flux) et des environnements promotionnels.
- Intégrer Kubernetes dans votre pipeline CI/CD en incluant tests et politiques.
- Structurer la préparation CKA/CKAD (outils, temps, stratégies d’examen).
1. Packaging : Helm vs Kustomize
Helm = templating + release management + chart repository.
Kustomize = overlays, pas de serveur, inclus dans kubectl.
Créer un chart Helm
helm create webapp
Déployer en staging :
helm upgrade --install webapp-staging charts/webapp --namespace staging --create-namespace --values values-staging.yaml
Variables secret : utilisez helm secrets ou helm install --set-file.
Overlay Kustomize
# overlays/staging/kustomization.yaml
bases:
- ../../base
patchesStrategicMerge:
- replicas.yaml # ajuste le nombre de pods
- ingress.yaml # configuration spécifique
configMapGenerator:
- name: webapp-config
literals:
- APP_MODE=staging
Build + déploiement :
kustomize build overlays/staging | kubectl apply -f -
2. GitOps
GitOps = l’état désiré vit dans Git, un opérateur observe et aligne le cluster.
argocd app create webapp --repo https://github.com/acme/platform-config.git --path apps/prod/webapp --dest-server https://kubernetes.default.svc --dest-namespace production --sync-policy automated --self-heal
Bonnes pratiques :
- Un repo app (code + Dockerfile) + un repo config (manifeste GitOps).
- Branches
staging/production+ Pull Requests avec review. - Labels Argo :
argocd.argoproj.io/instancepour retrouver les objets.
3. Pipeline CI/CD type
- Build : Kaniko, BuildKit, Buildpacks.
- Scan :
trivy image,grypepour les vulnérabilités. - Push : registry privé (GHCR, ECR, ACR…).
- Déployer : Helm, Kustomize,
kubectl apply, ou merge GitOps. - Tests post-déploiement : smoke tests, e2e, chaos léger.
Exemple GitHub Actions
name: Deploy webapp
on:
push:
branches: [ "main" ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: Build image
run: |
docker build -t ghcr.io/acme/webapp:${{ github.sha }} .
echo "GHCR_TOKEN" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
docker push ghcr.io/acme/webapp:${{ github.sha }}
- name: Lint manifests
run: |
pip install kubeconform datree
kubeconform -summary manifests/
- name: Update values file pour Argo CD
run: |
yq -i '.image.tag = "${{ github.sha }}"' platforms/apps/prod/webapp/values-prod.yaml
- name: Commit & push config
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "ci: bump webapp image"
repository: platforms
Un webhook Argo CD détecte la modification et synchronise automatiquement.
4. Qualité et politique
- Lint :
helm lint,kubeval,kubeconform. - Policy : Kyverno/Gatekeeper exécutés dans la pipeline pour shift-left.
- Canary/Progressive delivery : Argo Rollouts, Flagger.
Exemple de test fumée :
kubectl run smoke --image=ghcr.io/acme/tester -n staging --restart=Never -- ./smoke-tests.sh || kubectl logs job/smoke
5. Préparation CKA/CKAD
- Travaillez uniquement en terminal (pas d’IDE). Alias
k=kubectl,export do=--dry-run=client -o yaml. - Créez
/home/cka/answerset utilisezkubectl -npour chaque question. - CKA : gestion cluster, network, storage, troubleshooting (180 minutes). CKAD : workloads + architecture app (120 minutes).
- Plateformes d’entraînement : KodeKloud, KillerKoda, Autopilot.
- Recettes rapides :
kubectl run --image,kubectl expose,kubectl set image.
Checklist examen :
- Configurer les alias dans
~/.bashrcdès le début (vi ~/.bashrcpuissource ~/.bashrc). - Utiliser
kubectl explainpour vérifier les champs exacts. - Utiliser
kubectl get all -npour obtenir un contexte rapide. - Pour les YAML,
kubectl create deployment ... --dry-run=client -o yaml > fichier.yamlpuis éditer.
6. Lab d’industrialisation
- Créer un chart Helm pour
webappavec deux fichiers values (staging,prod). - Installer Argo CD via Helm :
helm upgrade --install argo argo/argo-cd -n argocd --create-namespace. - Déclarer une application
webapp(commande ci-dessus) et activer l’auto-sync. - Mettre en place un pipeline minimal (GitLab CI, GitHub Actions ou Azure DevOps) qui build l’image, met à jour le fichier
values-prod.yamlet pousse dans le repo GitOps. - Ajouter un test smoke (
kubectl run smoke ...) et échouer la pipeline en cas d’anomalie.
Solution détaillée
- Helm
helm ls -n stagingdoit afficherwebapp-stagingendeployed.
helm get values webapp-staging -n stagingmontre les values appliquées. - Kustomize
kustomize build overlays/stagingaffiche le manifeste rendu.kubectl diff -f -vérifie les différences avant apply. - Argo CD
argocd app list→ l’applicationwebappdoit êtreSYNCD/Healthy.
Simulez un drift (modifiez manuellement un Deployment) : Argo doit le détecter et resynchroniser (mode self-heal). - Pipeline
Une fois le commit poussé, vérifiez que GitHub Actions/GitLab CI passe toutes les étapes (build, scan, push, update config) et que la tâche de smoke test renvoie 0.
Dans Argo CD, l’historique de synchronisation doit afficher le commit correspondant. - Plan CKA/CKAD
Préparez un fichierplan-revision.mdavec : créneaux, modules à relire, examens blancs programmés. Incluez la liste d’alias et les commandes rapides (kubectl run,kubectl expose,kubectl set image).
À la fin, vous devez pouvoir lancer une nouvelle feature en modifiant uniquement le code et en laissant le pipeline + Argo CD déployer automatiquement.
Ressources
Checklist finale
- ✅ Vous savez générer un chart Helm ou un overlay Kustomize selon les besoins.
- ✅ Vous disposez d’un flux GitOps synchronisé (Argo CD/Flux).
- ✅ Votre pipeline CI/CD exécute build, scan et déploiement avec tests post-release.
- ✅ Vous avez un plan de révision CKA/CKAD clair (alias, outils, environnements pratiques).


