Installer Footloose
Guide d'installation de Footloose qui va vous permettre de manipuler les conteneurs comme des machines virtuelles
Au sommaire :
- 1-Qu'est-ce que Weave Footloose ?
- 2-Prérequis
- 3-Installation
- 4-Configuration
- 5-Déploiement
- 6-Installer Docker dans un conteneur
- 7-Déployer Rancher Server
- 8-Des idées pour s’entraîner
1-Qu'est-ce que Weave Footloose ?
Nous avons vu dans le précédent tutoriel l'outil Weave Ignite qui permet de créer des microVMs Firecracker à bases d'images OCI et pouvant être manipuler comme des conteneurs.
Et bien Weave Footloose prend le contre pied. Footloose va créer des conteneurs et les faire fonctionner comme des machines virtuelles.
Les conteneurs sous Footloose exécutent deux daemons (processus) en tâches de fond :
- systemd pour s'exécuter comme processus PID 1
- SSH pour pouvoir accéder au conteneur
Vous allez pouvoir très facilement déployer tout un tas de conteneurs sur des machines modestes qui seront vus par le système comme des machines virtuelles, la consommation en moins.
En effet, la virtualisation nécessite énormément de ressources et l'émulation des périphériques (via QEMU et cie) n'arrange pas les choses pour les petites configurations.
J'en sais quelque chose, j'ai deux PC portable i3/i5 dual core avec hyper-threading qui traîne à la maison et ils sont vus comme de faux quad core par le système.
Donc Footloose est parfaitement calibré pour ce genre de configurations.
Une idée parmi d'autres. Vous allez pouvoir très facilement créer un cluster de conteneurs et installer k3s, k0s, rke2 voir OpenShift pour pouvoir tester vos maquettes, sans laisser de traces sur le système hôte.
Ça tombe bien, Footloose a était conçu dans cette optique.
Pour plus d'informations.
2-Prérequis
Un poste client sous Linux (Ubuntu pour l'exemple) ou une machine virtuelle avec Docker d'installé sera nécessaire. Pour ce tutoriel, j'utiliserai un poste client sous Ubuntu.
3-Installation
Téléchargez à partir de GitHub le binaire de Footloose avec la commande "curl".
curl -Lo footloose https://github.com/weaveworks/footloose/releases/download/0.6.3/footloose-0.6.3-linux-x86_64
Rendez le exécutable
chmod +x footloose
Puis déplacez le dans "/usr/local/bin".
sudo mv footloose /usr/local/bin/
4-Configuration
Ensuite, voici les commandes pour configurer le fichier "footloose.yaml".
Tapez la commande qui correspond à l'image que vous souhaitez. Par exemple, tapez celle de Ubuntu 18.04.
footloose config create --replicas 3 --image quay.io/footloose/centos7
footloose config create --replicas 3 --image quay.io/footloose/fedora29
footloose config create --replicas 3 --image quay.io/footloose/ubuntu16.04
footloose config create --replicas 3 --image quay.io/footloose/ubuntu18.04
footloose config create --replicas 3 --image quay.io/footloose/amazonlinux2
footloose config create --replicas 3 --image quay.io/footloose/debian10
footloose config create --replicas 3 --image quay.io/footloose/clearlinux
Faites un "cat footloose.yaml" et vous allez voir le contenu du manifeste qui vient d'être créer.
La configuration déploiera un cluster de trois conteneurs Ubuntu 18.04 avec comme backend Docker et le port 22 ouvert pour se connecter en SSH.
cluster:
name: cluster
privateKey: cluster-key
machines:
- count: 3
spec:
backend: docker
image: quay.io/footloose/ubuntu18.04
name: node%d
portMappings:
- containerPort: 22
5-Déploiement
Déployez le conteneur avec la configuration indiqué dans "footloose.yaml".
footloose create
Tapez "docker ps".
docker ps
Pour accéder à l'un des trois conteneur, tapez la commande suivante.
fottloose ssh root@node0
fottloose ssh root@node1
fottloose ssh root@node2
6-Installer Docker dans un conteneur
Lorsque vous voulez installer Docker dans un conteneur, notez qu'il faut activer deux options :
- Le mode privilégié pour accéder à toutes les capacités du noyau du système hôte
- Monter le volume "/var/lib/docker" du système hôte pour stocker en dehsors du conteneur
cluster:
name: cluster
privateKey: cluster-key
machines:
- count: 1
spec:
backend: docker
image: quay.io/footloose/ubuntu18.04
name: node%d
privileged: true
portMappings:
- containerPort: 22
- containerPort: 443
hostPort: 443
- containerPort: 80
hostPort: 80
volumes:
- type: volume
destination: /var/lib/docker
Connectez vous au conteneur.
footloose ssh root@node0
Mettez à jour le système.
apt update && apt upgrade -y
Installez les paquets suivants :
- apt-transport-https : transport d'APT pour télécharger par HTTPS (protocole de transfert hypertexte sécurisé).
- ca-certificates : permet l'ajout de certificats CA.
- curl : récupération de données à travers une URL.
- software-properties-common : abstraction de APT. Facilite la gestion des dépôts.
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Ensuite, nous allons installer Docker.
Ajoutez la clés GPG avec curl en l'ajoutant à /usr/share/keyrings.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Ajoutez le dépôt de Docker avec la commande "echo" dans le dossier /etc/apt/sources.list.d.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Mettez à jour les dépôts.
sudo apt update
Et installez le paquet "docker-ce".
sudo apt install docker-ce -y
Enfin, activez le service.
systemctl start docker && systemctl status docker
Prenez l'habitude de rédiger vos manifestes avec Docker Compose au lieu de faire du "docker run", ça aide à être mieux organisé.
Tout d'abord, créez un dossier "cli-plugins" dans le dossier "/home/user_name/.docker".
mkdir -p ~/.docker/cli-plugins/
Avec la commande "curl", téléchargez la version 2.14.2 de Docker Compose sur à partir du dépôt Github.
curl -SL https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Rendez le fichier executable avec la commande "chmod +x".
chmod +x ~/.docker/cli-plugins/docker-compose
Enfin, vérifiez la version de Docker Compose.
docker compose version
Passons à la suite des hostilités. Nous allons déployer comme d'habitude le conteneur Librespeed sous forme déclarative et exposer le port 80.
docker run -d \
> --name=librespeed \
> -e PUID=0 \
> -e PGID=0 \
> -e TZ=Europe/Paris \
> -p 80:80 \
> -v /home/docker/librespeed:/config \
> --restart unless-stopped \
> lscr.io/linuxserver/librespeed:latest
Sur mon poste client Ubuntu, je tape localhost et on vois bien que le conteneur Librespeed se trouvant dans le conteneur gérer par Footloose est accessible.
7-Déployer Rancher Server
Cette fois, on va s'amuser davantage en déployant Rancher Server qui à l'avantage de pouvoir déployer des conteneurs au seins du conteneur gérer par Footloose en mode privilégié.
Installez nano (il y a absolument AUCUN paquet d'installé dans les conteneurs, d'où leur légèreté).
apt install nano
Créez un manifeste YAML.
nano compose.yml
Et copiez la configuration suivante.
version: "3.9"
networks:
default:
driver: bridge
services:
rancher:
image: rancher/rancher:latest
container_name: rancher
ports:
- 80:80
- 443:443
volumes:
- /home/user_name/docker/rancher:/var/lib/rancher
environment:
- CATTLE_BOOTSTRAP_PASSWORD=kubernetes
privileged: true
restart: unless-stopped
Puis déployez le tout.
docker compose up -d
Tapez "localhost" sur votre poste et BINGO, ça fonctionne!!!!!
Si on tape "docker ps" dans le conteneur, on vois bien qu'il y a nul besoin de configurer de l'espace disque ou de la mémoire vive. Le conteneur est
8-Des idées pour s’entraîner
Voici quelques pistes pour vous entraîner sur Footloose :
Customiser une image ou bien créer une image du serveur web Apache.
Mapper un port
Provisionner avec Ansible (pas encore vu sur le blog mais ça ne saurait tarder)
Créer un réseau
Déployer Openshift
Sources :