pipeline ci/cd docker kubernetes avec gitlab ci pour vos applications web
09/02/2026
Dans un contexte où la rapidité de livraison et la stabilité de vos applications web sont cruciales, mettre en place un pipeline CI/CD robuste s’impose. Ce guide technique montre pas à pas comment automatiser la construction d’images Docker, leur publication et leur déploiement sur un cluster Kubernetes en utilisant GitLab CI. Idéal pour les équipes DevOps et les CTO de startups ou PME cherchant à industrialiser leurs releases.
pipeline ci/cd docker kubernetes avec gitlab ci : configuration du dépôt
Commencez par versionner votre code dans un projet GitLab. Ajoutez :
- Un Dockerfile à la racine pour construire l’image de votre application.
- Un fichier
.gitlab-ci.ymlpour décrire les étapes du pipeline.
Exemple de Dockerfile
FROM node:18-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci --production
COPY . .
CMD ["node", "server.js"]
Ce Dockerfile minimaliste (taille ≃ 70 Mo) assure une rapidité de build et une empreinte réduite.
Exemple de .gitlab-ci.yml
stages:
- build
- test
- publish
- deploy
variables:
IMAGE_NAME: registry.gitlab.com/mon-projet/app
KUBE_NAMESPACE: production
build:
stage: build
script:
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHA .
- docker images
tags:
- docker
test:
stage: test
script:
- npm test
tags:
- shell
publish:
stage: publish
script:
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
- docker push $IMAGE_NAME:$CI_COMMIT_SHA
only:
- main
deploy:
stage: deploy
image:
name: bitnami/kubectl:latest
entrypoint: [""]
script:
- kubectl set image deployment/app app=$IMAGE_NAME:$CI_COMMIT_SHA -n $KUBE_NAMESPACE
- kubectl rollout status deployment/app -n $KUBE_NAMESPACE
only:
- main
Ce pipeline couvre la construction, les tests unitaires, la publication sur le registry et le déploiement automatique.
déploiement sur kubernetes : manifest et commandes
Créez un fichier deployment.yaml :
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 3
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: registry.gitlab.com/mon-projet/app:latest
ports:
- containerPort: 3000
Pour déployer manuellement ou en debug :
kubectl apply -f deployment.yaml -n production
kubectl get pods -n production
kubectl logs pod/app-abcde -n production
mesure des performances et sécurité
- Temps moyen de build Docker : ~45 s (avec Docker v24 et cache activé).
- Scan d’image avec
trivy:trivy image registry.gitlab.com/mon-projet/app:latest. - Rollout time moyen : ~30 s pour 3 pods.
bonnes pratiques pour un pipeline fiable
- Utiliser des runners GitLab dédiés et isolés, idéalement sur des hôtes Linux optimisés (novane.io/technologies/linux).
- Verrouiller les versions de base d’image (ex.
node:18-alpine) pour éviter les surprises de mises à jour. - Coupler un scanner de vulnérabilités (Trivy, Clair) dans l’étape publish.
- Mettre en place des variables CI/CD protégées pour vos credentials Docker Registry et votre cluster.
- Privilégier les déploiements progressifs (rolling update ou canary) pour minimiser les risques.
conclusion
Un pipeline CI/CD avec Docker, GitLab CI et Kubernetes garantit des déploiements rapides, fiables et reproductibles. En automatisant chaque étape, vous réduisez les erreurs humaines et augmentez la fréquence de vos mises en production. Pour aller plus loin et bénéficier d’un accompagnement DevOps sur mesure, découvrez nos solutions chez Novane, notamment l’augmentation d’effectif tech et l’intégration Docker.
Vous avez un projet CI/CD à lancer ? Contactez nos experts pour un audit offert.

