J’ai décidé de migrer mes 30 containers Docker hébergés sur mon NAS Synology sur une solution plus sécurisée et plus performante basée sur un Docker Swarm lui même hébergé sur ESXi.
Un Docker Swarm peut-être vu comme un essaim de machines exécutant Docker. Au sein d’un Swarm, on distingue 2 types de noeuds:
– le manager
– le ou les workers
Le manager a pour rôle d’intégrer de nouveaux noeuds au sein du Swarm et de piloter l’installation de containers.
Les workers servent uniquement à exécuter les précédents containers.
Mon architecture va donc se composer de:
– 1 manager CentOS 8
– 2 workers CentOS 8
Les 3 noeuds seront des machines virtuelles CentOS 8 hébergées sur ESXi. Nous allons donc voir maintenant comment installer les 3 noeuds.
Téléchargement de l’image ISO de CentOS 8
Nous allons donc aller télécharger l’image ISO la plus récente de CentOS (à ce jour, il s’agit de la version 8). Pour cela, il suffit de se rendre sur le site officiel CentOS et de cliquer sur la distribution CentOS Linuxhttps://sys64738.fr/wp-content/uploads/2020/10/0.-Site-Web-CentOS.png.
Nous allons ensuite choisir de télécharger l’ISO de la version 8 pour l’architecture x86/x64:
Il faut ensuite déterminer le miroir depuis lequel nous allons télécharger l’image ISO. Dans mon cas, j’ai choisi le premier miroir français:
Une fois arrivé sur le miroir français, il faudra choisir ISO DVD qui servira à l’installation sur ESXi:
Téléchargement de l’image de CentOS 8 dans un DataStore de l’ESXi
Une fois l’image ISO CentOS 8 téléchargée, nous allons la mettre à disposition dans une des banques de données (DataStore) de notre ESXi. Pour cela, nous allons donc nous connecter à notre ESXi et ouvrir le navigateur de banque de données:
Je vais donc télécharger l’ISO dans le répertoire ISO de mon DataStore SSD:
Le téléchargement va commencer et durera quelques minutes:
Création des machines virtuelles CentOS 8 sur ESXi
Nous allons donc passer à la création des machines virtuelles CentOS 8 sur notre ESXi. Il suffit donc de se connecter à l’ESXi et de cliquer sur « Créer/Enregistrer une machine virtuelle »:
Nous n’allons pas déployer de machine virtuelle à partir d’un fichier OVF mais la créer depuis le début:
Il faut ensuite choisir un nom pour notre VM ainsi que:
– La compatibilité
– Le système d’exploitation utilisé par la VM
– La version du système d’exploitation utilisé par la VM
Ensuite, il faut définir le DataStore sur lequel sera stocké la VM:
La prochaine étape consiste à définir le matériel virtuel. Ici, rien d’exceptionnel: je vais juste augmenter la quantité de RAM à 4Go et la taille du disque dur à 40Go:
Il ne reste plus qu’à valider le récapitulatif des paramètres:
La prochaine étape va consister à faire démarrer la machine virtuelle sur l’image ISO CentOS 8 téléchargée précédemment. Pour cela, nous allons revenir modifier les paramètres de la VM:
Nous allons donc router le lecteur de CD/DVD virtuel vers un fichier ISO:
Et nous allons chercher l’image ISO CentOS 8 téléchargée précédemment dans un des DataStore de l’ESXi:
Pour finir, il faudra ne pas oublier de cocher « connecter lors de la mise sous tension »:
Démarrage de la machine virtuelle et paramétrage de CentOS
Nous pouvons maintenant démarrer le premier noeud:
La VM va alors présenter un menu de démarrage dans lequel nous allons choisir la première option; à savoir, l’installation de CentOS Linux 8:
Au bout de quelques minutes, le programme d’installation va nous proposer de définir la langue utilisée:
L’étape suivante consiste à définir la partition d’installation de CentOS 8:
On va simplement choisir le disque local et laisser la configuration du stockage en automatique:
La prochaine étape consiste à choisir quelle version de CentOS nous allons installer:
Nous allons donc choisir la version la plus légère de l’OS: à savoir une installation serveur sans interface graphique:
La prochaine étape consiste à définir le nom de la VM sur le réseau et à configurer les paramètres réseau:
La première étape consiste à définir le nom sur le réseau. Le nom de cette première VM sera donc « node1centos8 ». Nous créerons ensuite 2 autres VM identiques nommées « node2centos8 » et « managercentos8 ».
En ce qui concerne les paramètres réseau, je laisse tout par défaut donc la gestion se fait via mon DHCP puis j’active le réseau:
L’étape suivante consiste à définir la date et l’heure:
Je vais utiliser le serveur de temps français « fr.pool.ntp.org »:
Nous allons spécifier que le système doit utiliser uniquement ce serveur NTP:
Voilà, nous allons pouvoir commencer l’installation en cliquant sur « Commencer installation »:
Les 2 dernières étapes à effectuer avant l’installation proprement dite sont la définition d’un mot de passe administrateur:
Nous allons donc créer un mot de passe pour l’utilisateur « root »:
Last but not least, nous allons créer un utilisateur doté des privilèges administrateur:
Donc, on crée un nouvel utilisateur en n’oubliant pas de cocher « Faire de cet utilisateur un administrateur »:
On peut maintenant cliquer sur « Terminer la configuration »:
Au bout de quelques minutes, le système va nous demander de redémarrer:
A l’issue du redémarrage, nous allons obtenir un bel écran de connexion où nous allons nous identifier avec l’utilisateur précédemment créé:
Pour plus de confort, nous allons activer l’interface Web Cockpit en entrant la commande suivante: systemctl enable --now cockpit.socket
Nous pouvons désormais nous connecter à l’interface Web en utilisant l’URL https://node1centos:9090
Personnalisation de l’installation
Nous allons commencer par désactiver « SELinux » en éditant le fichier « /etc/selinux/config ».
Il suffit de modifier la ligne débutant par SELINUX et en l’initialisant à « DISABLED »:
Nous allons vérifier que la désactivation est bien effective:
La deuxième étape consiste à désactiver le firewall en utilisant la commande sudo systemctl disable firewalld
Nous allons vérifier que le firewall a bien été désactivé:
Le paramétrage suivant consiste à installer « yum-utils » via la ligne de commande suivant : sudo yum install yum-utils
Nous allons ensuite ajouter le repository Docker-ce via la commande sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Nous allons maintenant supprimer PODMAN qui pourrait interférer avec Docker via la commande sudo yum -y remove podman
Idem avec BUILDAH via la commande sudo yum -y remove buildah
Nous allons maintenant procéder à l’installation de Docker-ce via la commande sudo yum install -y --nobest docker-ce
Une fois l’installation terminée, nous allons activer Docker via la commande sudo systemctl enable --now docker
Voilà, notre premier noeud est fin prêt. Il va maintenant falloir créer :
– un deuxième noeud que je baptiserai « node2centos8 »
– un manager dénommé « managercentos8 »
Une fois les 3 VM créées, nous allons pouvoir passer à l’initialisation du manager via la ligne de commande ci-dessous:
sudo docker swarm init --advertise-addr 192.168.0.105
Lors de l’initialisation, le système nous dit que l’adjonction d’un noeud au Swarm est désormais possible via la commande ci-dessous:
docker swarm join --token SWMTKN-1-5rvbt329bmh2udntrzki6t3rjvnt86igqycao0mxxwz06pkjnf-dettpllz388e8buanzgcgs4sv 192.168.0.105:2377
Nous allons donc ajouter les 2 noeuds au Swarm:
Voilà, c’est fini: notre swarm est désormais actif avec un manager et 2 noeuds. On peut vérifier la configuration via la ligne de commande ci-dessous:
sudo docker node list