Introduction
GitLab CI est un outil puissant pour l’intégration continue et le déploiement continu (CI/CD). Cet article explique comment configurer une pipeline CI/CD avec GitLab CI et Kubernetes.
Pré-requis
- Un cluster Kubernetes fonctionnel.
- Un projet GitLab avec accès administrateur.
Étapes de Configuration
Configurer un Runner GitLab
Créer un namespace pour GitLab Runner
kubectl create namespace gitlab-runner
Déployer GitLab Runner via Helm
helm repo add gitlab https://charts.gitlab.io helm repo update helm install --namespace gitlab-runner gitlab-runner gitlab/gitlab-runner
Récupérer le token du Runner
Accéder à Settings
-> CI/CD
-> Runners
dans votre projet GitLab
Copier le token de l’enregistrement du runner
Enregistrer le Runner avec GitLab
kubectl exec -it -n gitlab-runner $(kubectl get pods -n gitlab-runner -l app=gitlab-runner -o jsonpath='{.items[0].metadata.name}') -- gitlab-runner register \
--non-interactive \
--url https://gitlab.com/ \
--registration-token <YOUR_REGISTRATION_TOKEN> \
--executor kubernetes \
--kubernetes-namespace gitlab-runner \
--description "GitLab Runner" \
--tag-list "k8s,docker" \
--run-untagged \
--locked=false
Configurer le pipeline GitLab CI
- Créer un fichier
.gitlab-ci.yml
dans votre projetyamlstages: - build - deploy build: stage: build script: - docker build -t registry.gitlab.com/your-namespace/your-project:latest . - docker push registry.gitlab.com/your-namespace/your-project:latest deploy: stage: deploy script: - kubectl apply -f k8s/deployment.yaml
- Créer un fichier
Configurer l’accès à Docker Registry
Ajouter des variables de CI/CD pour Docker registry dans GitLab
- Accéder à
Settings
->CI/CD
->Variables
- Ajouter
DOCKER_REGISTRY_USER
etDOCKER_REGISTRY_PASSWORD
- Accéder à
Modifier le
.gitlab-ci.yml
pour utiliser ces variablesyaml
build: stage: build script: - docker login -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASSWORD registry.gitlab.com - docker build -t registry.gitlab.com/your-namespace/your-project:latest . - docker push registry.gitlab.com/your-namespace/your-project:latest
Conclusion
En suivant ces étapes, vous aurez configuré une pipeline CI/CD avec GitLab CI et Kubernetes, automatisant ainsi le déploiement de vos applications conteneurisées.