Migrer vos fichier docker compose vers kubernetes avec Kompose

Article publié le 24 Janvier 2018

Mini article rapide pour vous parler de Kompose, un outil fort bien pratique pour convertir vos fichiers docker-compose.yml en yaml Kubernetes. Ceci est fortement appréciable notamment pour ceux qui débutent avec l’écosystème Kubernetes.

Installation

Lancez la commande suivante (n’oubliez pas de checker le numéro de version dans le lien qui peut évoluer dans le temps depuis l’écriture de cet article):

curl -L https://github.com/kubernetes/kompose/releases/download/v1.7.0/kompose-linux-amd64 -o kompose && mv kompose /usr/local/bin && chmod 755 /usr/local/bin/kompose

Utilisation

Dans l’exemple ci-dessous, je vais convertir le docker-compose de jenkins.

Contenu du docker-compose.yml:

version: « 2 »
volumes:
data-jenkins:
driver: « local »
services:
jenkins:
image: « jenkins:2.60.3 »
ports:
– « 8080:8080 »
restart: « always »
volumes:
– « /srv/jenkins:/var/jenkins »

 

Convertissez votre fichier docker-compose avec la commande suivante:

kompose convert -f docker-compose.yml

Dans mon exemple cela donne ceci:

Kompose a créé les fichiers Kubernetes.

Nous allons ensuite tester les fichiers yaml généré en créant un pod Kubernetes avec le service associé:

Nous allons vérifier que tout est déployé correctement:

enjoy 😉




Script | Purger les logs d’exécution Rundeck

Article publié le 16 Janvier 2018

Avec le temps, les performances de Rundeck peuvent fortement diminuer suite à l’accumulation de logs d’exécution stockée en base et générant en parallèle d’innombrables petits fichiers.

Il vous faudra donc mettre rapidement en place une solution afin de purger les logs d’exécution de Rundeck.

J’ai trouvé et modifié un petit script faisant très bien le boulot (utilisable si votre Rundeck utilise MySQL):

#!/bin/bash

#Nombre de jours de rétention des logs

KEEP=90

# A modifier si votre instance MySQL est hébergé sur une autre machine

HOST=localhost
PORT=3306
USERNAME=<user de votre base de donnée MySQL>
PASSWORD= »<le mot de passe du user de votre base MySQL »
DB=<nom de la base de donnée MySQL Rundeck>

cd /var/lib/rundeck/logs/rundeck

JOBS=`find . -maxdepth 3 -path « */job/* » -type d`

for j in $JOBS ; do
echo « Processing job $j »
ids=`find $j -iname « *.rdlog » | sed -e « s/.*\/\([0-9]*\)\.rdlog/\1/ » | sort -n -r`
declare -a JOBIDS=($ids)

if [ ${#JOBIDS[@]} -gt $KEEP ]; then
for job in ${JOBIDS[@]:$KEEP};do
echo  » * Deleting job: $job »
echo  » rm -rf $j/logs/$job.* »
rm -rf $j/logs/$job.*
workflowid=`mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -s -N -e « select workflow_id from execution where id=$job » $DB`
workflowstepids=`mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -s -N -e « select workflow_step_id from workflow_workflow_step where workflow_commands_id=$workflowid » $DB`
declare -a WSIDS=($workflowstepids)
for workflowstepid in $WSIDS ; do
echo  » mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e ‘delete from workflow_workflow_step where workflow_step_id=$workflowstepid’ $DB »
mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e « delete from workflow_workflow_step where workflow_step_id=$workflowstepid » $DB
echo  » mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e ‘delete from workflow_step where id=$workflowstepid’ $DB »
mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e « delete from workflow_step where id=$workflowstepid » $DB
done
echo  » mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e ‘delete from execution where id=$job’ $DB »
mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e « delete from execution where id=$job » $DB
echo  » mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e ‘delete from base_report where jc_exec_id=$job’ $DB »
mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e « delete from base_report where jc_exec_id=$job » $DB
echo  » mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e ‘delete from workflow where id=$workflowid’ $DB »
mysql -h $HOST -P $PORT -u$USERNAME -p$PASSWORD -e « delete from workflow where id=$workflowid » $DB
done
fi
done

 




Tutoriel | Déployez facilement un cluster Kubernetes avec Rancher

Article publiée le 13 Janvier 2018

Article mis à jour le 21 Août 2018

Kubernetes est un orchestrateur de container docker extrêmement puissant mais également très fastidieux à déployer. Il existe pourtant un moyen très simple pour déployer Kubernetes en utilisant Rancher.

Rancher est un outil permettant de gérer vos environnements Docker de manière intuitive via une interface graphique  (site de Rancher: https://rancher.com/)

Pour ce tuto je vais utiliser trois machines sous Debian 9 avec docker installé. Pour ceux qui ne connaissent pas Docker, je leurs suggère de lire le tutoriel ci-dessous:

Tuto Docker | Démarrer avec Docker

Pour info un tutoriel rédigé le 20 Août 2018 explique comment installer Kubernetes from scratch (à la mano!) sur Debian ou Centos . Ce tuto est disponible ici

1) Installation de Rancher

Installer Rancher est très facile, il suffit de déployer le container fournit par l’éditeur:

Au moment de la rédaction de cet article, la version stable de Rancher est la version 1.6. La version 2.0 est une version Alpha en cours de développement (très instable).

Nous allons installer Rancher sur notre première machine:

docker run -d –restart=unless-stopped -p 8080:8080 rancher/server:stable

Une fois le container installé, connectez vous à l’interface Web: <ip de votre machine>:8080

Rancher est installé et opérationnel!

Petite parenthèse, si vous allez dans l’onglet « CATALOG » vous verrez que Rancher peut déployer un large panel d’outils:

 

2) Kubernetes

Revenons en à nos moutons, nous allons maintenant déployer Kubernetes via Rancher.

Dans un premier temps cliquez sur l’onglet « infrastructure » puis « Hosts »

Puis cliquez sur le bouton « Add Host »:

Contentez vous de copier la ligne de commande au paragraphe 5 et de la coller sur toutes les machines Linux qui serviront de nœud à votre infra kubernetes (dans mon cas les 3 machines sous Debian que j’ai créées).

Cette commande va déployer un container contenant un agent Rancher qui va gérer chacune de vos machines!

Retournez dans l’onglet « infrastructure »/ »Hosts » pour vérifier que vos machines sont bien remontées:

Cliquez ensuite sur « Catalog » puis cherchez « Kubernetes » et cliquez sur « View details »:

Laissez tout par défaut et validez en cliquant sur le bouton tout en bas de la page.

Un nouvel onglet  « Kubernetes devrait apparaître. En cliquant dessous, vous pourrez suivre l’avancement de l’installation:

Vous pouvez suivre avec plus de détails l’installation de chaque composant Kubernetes en cliquant sur l’onglet « Kubernetes » puis « Infrastructure Stacks »:

Une fois que tous les statuts seront à « Active », les composants Kubernetes seront installés:

 

Vous pouvez maintenant vous connectez à l’interface Kubernetes en cliquant sur l’onglet « Kubernetes » puis « Dashboard »:

Cliquez sur « Kubernetes UI »:

Vous voila connecté à l’interface Kubernetes.

Pour les personnes ayant plus de connaissances, une interface en ligne de commande est également disponible depuis l’interface de Rancher via l’onglet « Kubernetes »/ »_Cli »:

 

3) Déploiement d’un container

Pour vous prouver que je ne me moque pas de vous et que tout fonctionne, je vais déployer un container apache répliqué sur 2 deux nœuds:

Cliquez sur le bouton « CREATE » en haut à droite et remplissez les champs requis:

Deux container apache ont été déployés sur deux différents nœuds (très pratique pour la tolérance de panne ;-)):

En me connectant sur l’un des nœuds au hasard, mon apache répond bien!

Enjoy!