Automatiser le Déploiement : Mettre en Place une Pipeline CI/CD avec Jenkins et Kubernetes
Introduction
L’intégration continue et le déploiement continu (CI/CD) sont des pratiques essentielles pour des cycles de développement rapide et fiables. Cet article guide la mise en place d’une pipeline CI/CD utilisant Jenkins et Kubernetes.
Pré-requis
- Un cluster Kubernetes fonctionnel.
- Jenkins installé et configuré (soit localement, soit sur Kubernetes).
Étapes de Configuration
Installer Jenkins sur Kubernetes
Créer un namespace pour Jenkins
kubectl create namespace jenkins
Déployer Jenkins via Helm
helm repo add jenkinsci https://charts.jenkins.io helm repo update helm install jenkins jenkinsci/jenkins --namespace jenkins
Récupérer le mot de passe initial
kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo
Accéder à Jenkins
kubectl --namespace jenkins port-forward svc/jenkins 8080:8080
Configurer Jenkins pour Kubernetes
Installer les plugins nécessaires
- Kubernetes Plugin
- Git Plugin
- Pipeline Plugin
Configurer Jenkins avec le plugin Kubernetes
- Accéder à
Manage Jenkins
->Manage Plugins
- Installer le plugin Kubernetes
- Accéder à
Configurer le cloud Kubernetes dans Jenkins
- Accéder à
Manage Jenkins
->Manage Nodes and Clouds
->Configure Clouds
- Ajouter un nouveau cloud Kubernetes et configurer les détails du cluster
- Accéder à
Créer une Pipeline Jenkins
- Créer un nouveau job de type Pipeline
- Configurer le script Jenkinsfilegroovy
pipeline { agent { kubernetes { yaml """ apiVersion: v1 kind: Pod spec: containers: - name: jnlp image: jenkins/inbound-agent:latest args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)'] - name: docker image: docker:latest command: - cat tty: true """ } } stages { stage('Build') { steps { container('docker') { sh 'docker build -t myapp:latest .' } } } stage('Deploy') { steps { container('kubectl') { sh 'kubectl apply -f k8s/deployment.yaml' } } } } }
Conclusion
En suivant ces étapes, vous aurez configuré une pipeline CI/CD avec Jenkins et Kubernetes, automatisant ainsi le déploiement de vos applications conteneurisées.