pipeline ci/cd kubernetes sur azure aks avec helm et github actions
22/12/2025
pipeline ci/cd kubernetes sur azure aks avec helm et github actions
Dans ce guide technique, nous allons mettre en place un pipeline CI/CD complet pour déployer automatiquement une application Node.js sur un cluster Azure Kubernetes Service (AKS) à l’aide de Helm et GitHub Actions. Les CTO de startups ou responsables DevOps y trouveront des snippets, des commandes CLI et des conseils pour optimiser performance et sécurité.
1. prérequis et contexte
- Un repository GitHub contenant votre application (par exemple une API Node.js).
- Azure CLI (version ≥2.40) et kubectl (v1.24+) installés.
- Un cluster AKS opérationnel (SLA 99,95%).
- Helm 3 pour gérer les releases.
2. configuration du cluster AKS
- Connexion à Azure et récupération des credentials du cluster :
az login az account set --subscription "MonSubscription" az aks get-credentials --resource-group rg-aks --name cluster-aks - Vérification du contexte Kubernetes :
kubectl config current-context # doit retourner "cluster-aks" - Création d’un namespace dédié :
kubectl create namespace ci-cd
3. définition du chart Helm
Placez votre chart dans charts/myapp/ :
charts/
└── myapp/
├── Chart.yaml
├── values.yaml
└── templates/
├── deployment.yaml
└── service.yaml
Extrait de values.yaml :
replicaCount: 2
image:
repository: myregistry.azurecr.io/myapp
tag: "v{{ env.GITHUB_SHA }}"
service:
type: LoadBalancer
port: 80
4. création du workflow GitHub Actions
Placez ce fichier dans .github/workflows/ci-cd.yaml :
name: CI/CD AKS
on:
push:
branches: [main]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: checkout code
uses: actions/checkout@v3
- name: setup Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: install dependencies
run: npm ci
- name: run tests
run: npm test
- name: build Docker image
uses: docker/build-push-action@v3
with:
context: .
push: true
tags: |
myregistry.azurecr.io/myapp:latest
myregistry.azurecr.io/myapp:${{ github.sha }}
deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: download kubeconfig
uses: azure/aks-set-context@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
cluster-name: cluster-aks
resource-group: rg-aks
- name: setup helm
uses: azure/setup-helm@v1
- name: helm upgrade
run: |
helm repo add stable https://charts.helm.sh/stable
helm upgrade myapp charts/myapp \
--namespace ci-cd \
--install \
--set image.tag=${{ github.sha }}
5. bonnes pratiques et optimisations
- Sécurité des secrets : stockez AZURE_CREDENTIALS dans GitHub Secrets (JSON généré par
az ad sp create-for-rbac). - Rollback automatique : ajoutez
--wait --timeout 5mà la commande Helm pour échouer proprement en cas de déploiement invalide. - Monitoring : intégrez Prometheus + Grafana pour suivre l’usage CPU/RAM (
helm install prometheus). - Performance : utilisez l’autoscaling AKS (
kubectl autoscale deployment myapp --cpu-percent=60 --min=2 --max=10).
6. métriques et sécurité
| Indicateur | Objectif |
|---|---|
| Durée CI (build + tests) | < 5 min |
| MTTR déploiement | < 3 min |
| Vulnérabilités conteneurs | 0 high (scan clairance) |
stratégies de sécurité
- RBAC Kubernetes strict.
- Pod Security Policies en mode restrictive (baseline ou hardened).
- Scan d’images Docker via
trivyen amont.
liens utiles
conclusion
Ce pipeline CI/CD Kubernetes sur AKS avec Helm et GitHub Actions réduit le time-to-market, automatise vos déploiements et améliore la fiabilité de vos mises en production. En appliquant ces bonnes pratiques, vous gagnez en agilité et en sécurité.
Vous avez un projet à déployer ou besoin d’un audit de votre pipeline ? Contactez-nous discrètement pour en discuter.

