Comment déployer Drone CI sur Kubernetes

MISE À JOUR: Après avoir écrit ce message, un tableau de bord a été créé pour faciliter l'installation de Drone. Vous pouvez le vérifier ici.

Drone est un impressionnant CI open source écrit en Golang.

Vous pouvez l'installer en utilisant docker compose en suivant les documents officiels. Mais comme je suis amoureuse de Kubernetes, je souhaitais la déployer pour pouvoir également bénéficier de l'auto-guérison et de la génialité du K8.

Créer une application Github OAuth

Je suppose que vous voudrez utiliser Github pour l’authentification de votre instance Drone. Alors allons-y et configurez-le:

  • allez sur votre compte Github
  • cliquez sur l'icône de votre profil et choisissez Paramètres
  • sélectionnez les applications OAuth dans le menu de gauche (même chose pour les organisations, mais à l'intérieur du profil de l'organisation)
  • cliquez sur le bouton pour créer une nouvelle application
  • remplissez les champs avec l'URL que vous voulez
  • pour le dernier champ ajouter un / autoriser à la fin de l'URL
  • obtenir le client et le secret généré

Le serveur

Vous devez avoir un cluster kubernetes en cours d’exécution. Si vous ne l’avez pas encore, je vous recommande d’utiliser Google Cloud Platform (GCP) car il gérera le cluster kubernetes à votre place.

Afin de déployer le serveur, nous utiliserons un service de déploiement et service Kubernetes comme suit:

Vous devez mettre à jour le contenu de certains env vars en fonction de votre contexte, alors changez tout le contexte de CHANGE_ME. Vous pouvez également ajouter une variable DRONE_ORGS pour indiquer que seules les personnes appartenant à une organisation donnée de Github peuvent y accéder.

Pour le déployer, lancez simplement:

kubectl apply -f server-deployment.yml

Pour découvrir l'adresse exécutée:

kubectl obtenir des services -w

Si vous voyez un message , c’est là que l’adresse IP externe apparaîtra.

Accédez-y et voila drone server est prêt! Mais jusqu’ici, nous ne pouvons rien construire pour le moment.

L'agent

Pour que vos versions fonctionnent, nous devons également déployer l'agent drone. Pour ce faire, nous utiliserons également un déploiement Kubernetes:

Mettez à jour DRONE_SECRET pour qu’il soit identique à celui que vous avez utilisé sur le serveur et déployez-le:

 kubectl apply -f agent-deployment.yml

Configurer le DNS

Pour que la connexion entre Github et Drone fonctionne, nous devons configurer DNS, cela dépend de la plate-forme que vous utilisez.

Dans GCP, accédez à votre projet, puis à Services réseau> DNS dans le cloud. Configurez un enregistrement A pour qu'il pointe l'adresse IP sur le serveur Drone.

Assurez-vous que vous avez ajouté les enregistrements NS pour que vos enregistrements DNS soient dirigés vers GCP.

Sortez de l'immeuble!

Accédez à votre nouveau serveur CI, inscrivez-vous avec votre compte Github, activez le référentiel que vous souhaitez continuellement intégrer.

Il ne reste plus qu’à ajouter un fichier .drone.yml à votre projet. Ce fichier utilise une méthode simple et directe pour configurer votre pipeline de génération, car un projet Ruby simple ressemblerait à ceci:

Regarde cette beauté

Poussez le nouveau commit vers votre dépôt et regardez votre construction dans Drone CI.

Profitez de droner!