Chapitre 12.2 - CI/CD avec Kubernetes
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les pipelines CI/CD pour Kubernetes
- Configurer GitHub Actions pour Kubernetes
- Implémenter GitLab CI/CD
- Utiliser GitOps avec ArgoCD
- Automatiser les déploiements
- Implémenter les stratégies de déploiement
Introduction
Les pipelines CI/CD automatisent le build, test, et déploiement d'applications dans Kubernetes.
GitHub Actions
Pipeline Basique
name: Deploy to Kubernetes
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker image
run: |
docker build -t my-app:${{ github.sha }} .
docker tag my-app:${{ github.sha }} my-registry/my-app:${{ github.sha }}
- name: Push to registry
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
docker push my-registry/my-app:${{ github.sha }}
- name: Deploy to Kubernetes
uses: azure/k8s-deploy@v4
with:
manifests: |
k8s/deployment.yaml
k8s/service.yaml
images: |
my-registry/my-app:${{ github.sha }}
kubectl-version: 'latest'
GitLab CI/CD
.gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
test:
stage: test
script:
- docker run $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA npm test
deploy:
stage: deploy
script:
- kubectl set image deployment/my-app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
only:
- main
GitOps avec ArgoCD
Installation
# Installer ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Application ArgoCD
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/user/my-app
targetRevision: main
path: k8s
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Stratégies de Déploiement
Rolling Update
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
Blue/Green
Déployer une nouvelle version en parallèle, puis basculer le trafic.
Canary
Déployer progressivement à un pourcentage d'utilisateurs.
Bonnes Pratiques
1. Tests Automatiques
Exécuter les tests avant chaque déploiement.
2. Environnements
Séparer dev, staging, production.
3. Approbations
Exiger des approbations pour la production.
4. Rollback
Avoir un plan de rollback rapide.
5. Monitoring
Surveiller les déploiements en temps réel.
Résumé
Dans ce chapitre, vous avez appris:
CI/CD: Automatisation du build, test, et déploiement
GitHub Actions: Pipelines CI/CD intégrés
GitLab CI: Pipelines avec .gitlab-ci.yml
GitOps: ArgoCD pour déploiements déclaratifs
Stratégies: Rolling, Blue/Green, Canary
Bonnes pratiques: Tests, environnements, approbations, rollback
Prochaines Étapes
Chapitre 12.3: Environnements
Lab 12.2: Autoscaling Horizontal et Vertical
Lab 12.3: GitOps avec ArgoCD
Chapitre créé le: Décembre 2024