Installer Footloose

Guide d'installation de Footloose qui va vous permettre de manipuler les conteneurs comme des machines virtuelles

Installer Footloose
weaveworks footloose

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.

Découvrez les microVMs Firecracker et Weave Ignite
Au sommaire : * Qu’est-ce que Firecracker ? * Qu’est-ce que Weave Ignite ? * Prérequis * Installation * Importation des images * Création de la microVM * Installation et exposition d’un service Avant de parler de Weave Ignite, il faut que je vous présente Firecracker. 1-Qu’est-ce que Fire…

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.

GitHub - weaveworks/footloose: Container Machines - Containers that look like Virtual Machines
Container Machines - Containers that look like Virtual Machines - GitHub - weaveworks/footloose: Container Machines - Containers that look like Virtual Machines

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.

(Proxmox VE) Création d’un template avec cloud-init
Aujourd’hui, nous allons voir comment créer un template de machine virtuelle pré-configuré avec cloud-init. Qu’est-ce que Cloud-init ? Cloud-init est un outil conçu par Canonical permettant de gérer l’initialisation d’une machine virtuelle dans le cloud. Au premier démarrage, cloud-init va : *…

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
footloose/README.md at master · weaveworks/footloose
Container Machines - Containers that look like Virtual Machines - footloose/README.md at master · weaveworks/footloose
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é.

(k8s) Administrez vos clusters avec Rancher Server
Au sommaire : * Qu’est-ce que Rancher Server ? * Prérequis * Déploiement du conteneur * Configuration * Créer un cluster * Solution si échec de la création du cluster * Déployer une application Qu’est-ce que Rancher Server ? Avant de parler de Rancher Server, parlons rapidement de la soci…

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.

footloose/README.md at master · weaveworks/footloose
Container Machines - Containers that look like Virtual Machines - footloose/README.md at master · weaveworks/footloose
footloose/README.md at master · weaveworks/footloose
Container Machines - Containers that look like Virtual Machines - footloose/README.md at master · weaveworks/footloose

Mapper un port

footloose/README.md at master · weaveworks/footloose
Container Machines - Containers that look like Virtual Machines - footloose/README.md at master · weaveworks/footloose

Provisionner avec Ansible (pas encore vu sur le blog mais ça ne saurait tarder)

footloose/README.md at master · weaveworks/footloose
Container Machines - Containers that look like Virtual Machines - footloose/README.md at master · weaveworks/footloose

Créer un réseau

footloose/README.md at master · weaveworks/footloose
Container Machines - Containers that look like Virtual Machines - footloose/README.md at master · weaveworks/footloose

Déployer Openshift

GitHub - carlosedp/openshift-on-footloose: Running Openshift on Footloose, docker in docker
Running Openshift on Footloose, docker in docker. Contribute to carlosedp/openshift-on-footloose development by creating an account on GitHub.
Install OpenShift & OpenFaaS in a container with Weave Footloose
In this tutorial we will install OpenShift Origin 3.11 in a container using a tool called footloose by Weaveworks. We’ll then deploy OpenFaaS

Sources :

An Introduction to Footloose: Containers that look like VMs
Footloose creates containers that look like virtual machines. Those containers run systemd as PID 1 and a ssh daemon that can be used to log into the container. Such
config package - github.com/weaveworks/footloose/pkg/config - Go Packages