Docker Swarm

Installation de l’environnement de Provision sous Docker Swarm s’effectue à l’aide d’un role Ansible

Prérequis

Ubuntu/Redhat/RockyLinux

L’installation s’effectue à l’aide du role Ansible reemo-provision qui a besoin de dépendances pour fonctionner:

yum install ansible-core
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.crypto

Fichier Inventaire

L’installation se base sur des groupes dans l’inventaire Ansible

  • provision_manager: Groupe regroupant les noeuds Managers

  • provision_worker: Groupe regroupant les noeuds Workers

Créer un fichier inventaire pour le role Ansible et déclarer les différents groupes en fonction de l’architecture que vous souhaitez

Voici quelques exemples:

provision:
    children:
        provision_manager:
            hosts:
                provision_manager1:
                    ansible_host: "10.10.0.1"

Installation Docker

L’installation et l’initialisation de Docker Swarm peuvent être manuelles ou automatisées par le role Ansible reemo-provision

Manuel

apt install docker.io python3-docker -y

Une documentation sur le site de Docker permet d’avoir l’ensemble des options disponibles: Docker.

Auto

Le role Ansible reemo-provision embarque la possibilité d’installer et de configurer automatiquement un Docker Swarm, plusieurs options sont disponibles:

Par défaut le role Ansible effectue aucune opération sur l’installation ou l’initialisation de Docker Swarm. Pour l’activer vous pouvez ajouter cette option dans la ligne de commande:

ansible-playbook -i inventory.yml playbooks/reemo-provision.yml --extra-vars "PROVISION_INSTALL_DOCKER=true"

Warning

Il faut que les différents noeuds du cluster puissent joindre un repositorie pour installer Docker

Warning

Une fois que Docker Swarm a été initialisé, il ne faut plus modifier les options de sa configuration.

Installation Nginx

Un service Nginx doit être installé dans l’environnement Provision pour la communication avec l’environment Infra, il doit être installé sur l’ensemble des noeuds Managers

Manuel

apt install nginx

Ajouter l’utilisateur www-data au groupe docker

usermod -aG docker www-data

Auto

Le role Ansible reemo-provision est capable d’installer et de configurer automatiquement le service Nginx, plusieurs sont disponibles

Par défaut le port d’écoute du service Nginx est le 8443. Pour le modifier vous pouvez utiliser l’option

PROVISION_NGINX_PORT

Vous pouvez passer à l’étape Installation des images conteneurs

Certificats SSL

Pour une sécurité renforcée, il est préférable de mettre en place un certificat SSL sur le serveur Nginx. Il doit être issue de la même pki que celui qui sera renseigné dans l’interface Reemo

L’ensemble des micro-services discute entre eux en mTLS imposant une gestion des certificats. Vous avez 3 choix possibles

Dans le role Ansible reemo-provision est disponible un bi-clé issue de la pki par défaut contenu dans le role Ansible reemo-infra permettant de déployer automatiquement un système prêt à l’emploi, avec des communications chiffrées et authentifiées

Installation des images Conteneurs

Il faut prévoir l’importation des images ReemoContainers dans l’environnement Provision

Toutes les machines doivent pouvoir joindre l’url registry.reemo.io sur le port 443. Il faut récupérer au niveau du support reemo vos identifiants pour vous authentifiez

Il faut ensuite renseigner ces informations dans votre fichier inventaire

REGISTRY_URL: l'url du registre
REGISTRY_ENV: le préfix des images docker pour constituer des noms d'images **REGISTRY_URL/REGISTRY_ENV**chrome
REGISTRY_USERNAME: "l'utilisateur pour le registre"
REGISTRY_PASSWORD: "le mot de passe pour le registre"

Exemple:

all:
    vars:
        API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
        REGISTRY_URL: "registry.reemo.io"
        REGISTRY_ENV: "reemoinfra"
        REGISTRY_USERNAME: "user"
        REGISTRY_PASSWORD: "password"

    infra_manager:
        hosts:
            infra_manager1:
                ansible_host: "10.0.0.1"
            infra_manager2:
                ansible_host: "10.0.0.2"
            infra_manager3:
                ansible_host: "10.0.0.3"

Vous pouvez suivre le guide de démarrage ReemoContainers Guide de démarrage ReemoContainers