Pipeline de CI/CD simplifié dans un cluster Kubernetes avec GitLab et Rancher …

Karim
6 min readMay 6, 2019

--

Et j’initie un serveur Rancher dans l’une de ces instances (qui va me servir à provisionner un cluster Kubernetes dans les autres instances) :

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:master

J’obtiens un cluster Kubernetes en mode HA :

visualisable via la console du serveur Rancher :

Je récupère le fichier kubeconfig (que je place dans ~.kube/config) depuis la console pour exécuter mes commandes dans le cluster :

Un petit test pour vérifier le bon fonctionnement de MetalLB via le déploiement du démonstrateur FC :

Cela fonctionne (j’ai bien une adresse IP du pool configuré en DHCP dans ZeroTier fournie de manière automatique via MetalLB) avec les informations accessibles sur la console du serveur Rancher :

J’obtiens donc ici ce type d’architecture :

J’en profite donc pour utiliser le service de configuration de pipeline CI/CD intégré au sein de la console du serveur Rancher :

Pour cela j’ai provisionné dans l’une des instances basse priorité un serveur GitLab (dans un container docker) avec le dépôt du démonstrateur FC Agent (également connecté à ZeroTier) :

$ sudo docker run --detach \
--hostname <HOSTNAME> \
--publish 443:443 --publish 80:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest

Je peux configurer graphiquement mon pipeline dans la console (après avoir effectuer la liaison avec le serveur GitLab) :

qui me génère un fichier .rancher-pipeline.yml au sein de mon dépôt dans GitLab (configuration assez simple avec un déploiement depuis un fichier de manifest YAML) :

Exécution du pipeline simple réussi :

Le démonstrateur FC Agent est déployé :

On peut voir que la configuration de ce pipeline de CI/CD a engendré le déploiement dans un namespace dédié d’un ensemble de composants :

Il est possible de modifier le pipeline pour y ajouter des étapes (ici avant la phase Deploy je rajoute une phase Build qui va utiliser le fichier Dockerfile présent au sein du dépôt Git) :

et une mise à jour du fichier .rancher-pipeline.yml :

L’exécution de ce pipeline mis à jour se termine alors correctement :

A suivre !

--

--

Karim
Karim

Written by Karim

Above the clouds, the sky is always blue ...

No responses yet