Dans cet article nous allons voir comment utiliser un cluster Kubernetes pour lancer des jobs Jenkins.
Qu’est-ce que Jenkins ?
Jenkins est un outil libre d’intégration continue (CI). Il est écrit en Java et a la particularité de posséder de nombreux plugins.
Prérequis
- Avoir installé et configuré Jenkins
- Installer le plugin Kubernetes
- Un cluster Kubernetes
- Jenkins doit être accessible depuis votre cluster en HTTP(S) et en TCP sur le port 50000
- Avoir accès au fichier de configuration de Kubernetes (.kube/config)
Authentification sécurisé
Nous allons extraire les clés du fichier de configuration de kubectl, .kube/config et générer le fichier pfx pour Jenkins. N’oubliez pas le mot de passe, il vous serez demandé par la suite.
CONFIG=".kube/config"
echo -n $(cat $CONFIG | grep certificate-authority-data | cut -d: -f2) | base64 -d > ca.crt
echo -n $(cat $CONFIG | grep client-certificate-data | cut -d: -f2) | base64 -d > client.crt
echo -n $(cat $CONFIG | grep client-key-data | cut -d: -f2) | base64 -d > client.key
openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt
On supprime les clés client, vous aurez besoin du contenu du fichier ca.crt pour la suite.
rm client.crt client.key
Allez dans Identifiants, puis cliquez dans le menu de gauche sur System, Identifiants globaux (au centre de l’écran) et Ajouter des identifiants (dans le menu de gauche).
Dans Type choisir Certificat. Sélectionnez Téléchargement de certificat PKCS#12 et sélectionnez le fichier précédemment généré (cert.pfx). Entrez le mot de passe, une description et validez.
Configuration du Cloud
Allez dans Administrer Jenkins, puis Configurer le système. Dans la partie Cloud, cliquez sur Ajouter un nouveau cloud et sélectionnez Kubernetes.
Entrez les paramètres suivants :
- Kubernetes URL : l’adresse de votre serveur Kubernetes, vous la trouverez dans le fichier .kube/config, ligne server
- Kubernetes server certificate key : le contenu du fichier ca.crt précédemment obtenu
- Credentials : le certificat précédemment ajouté
- Jenkins URL : l’adresse par laquelle vous accédez à Jenkins
Cliquez sur Add Pod Template pour configurer le pod qui effectuera nos actions.
- Name : jenkins-slave
Cliquez sur Add a container
- Name : jnlp
- Docker image : jenkins/jnlp-slave
- Worker directory : /home/jenkins
- Command to run : Enlevez tout
- Arguments to pass to the command : Enlevez tout
- Cochez Allocate pseudo-TTY
Sauvegardez
C’est terminé, vous pouvez maintenant lancer vos builds Jenkins sur Kubernetes.