6.3 Déploiement d'un conteneur eDirectory

L'image de base du système d'exploitation de l'image Docker pour eDirectory est openSUSE Leap 15.1. Le fichier tar de l'image eDirectory doit être téléchargé sur la machine hôte Docker. Une fois le tarball téléchargé, l'image doit être chargée dans le registre Docker local à l'aide des commandes suivantes :

# tar xf eDirectory_920.tar.gz
# docker load --input edir920.tar

Le conteneur Docker pour eDirectory accepte tous les paramètres de l'utilitaire ndsconfig avec la commande docker run. Pour plus d'informations sur l'utilitaire ndsconfig, reportez-vous à la section Exécution de l’utilitaire ndsconfig pour ajouter ou supprimer le serveur de répliques eDirectory.

REMARQUE :il n'est pas recommandé de définir le mot de passe à l'aide de l'option -w de l'utilitaire ndsconfig dans la commande docker run. En effet, un mot de passe défini à l'aide de cette option peut être affiché en texte brut avec la commande docker inspect. La spécification du FDN et du mot de passe administrateur dans l'invite permet de configurer les informations d'identificateur de l'administrateur en toute sécurité.

Le conteneur Docker pour eDirectory utilise les valeurs par défaut pour les paramètres ndsconfig ci-dessous. Par conséquent, vous ne devez pas configurer ces paramètres dans la commande docker run :

  • Fichier de configuration : /config/eDirectory/inst/conf/nds.conf

  • Emplacement de l'instance : /config/eDirectory/inst/data/data

  • Emplacement de la DIB : /config/eDirectory/inst/data/data/dib

REMARQUE :il est important que les données et la configuration de l'instance soient remplies dans le dossier /config du conteneur afin d'activer les fonctionnalités de mise à niveau et de stockage persistant des conteneurs eDirectory. Pour plus d'informations, reportez-vous à la section Gestion du stockage des données eDirectory.

L'emplacement par défaut du fichier journal du conteneur eDirectory est /config/eDirectory/inst/data/log.

Avant de déployer eDirectory, vous devez tenir compte des recommandations suivantes :

  • Aucune contrainte de ressources n'est définie par défaut pour les conteneurs Docker. Ainsi, chaque conteneur dispose d'un accès à toutes les ressources de l'UC et mémoire fournies par le kernel de l'hôte. Vous devez également vous assurer qu'un conteneur en cours d'exécution ne consomme pas plus de ressources et n'épuise pas les autres conteneurs en cours d'exécution en définissant des limites pour le volume de ressources utilisables par un conteneur.

    • Le conteneur Docker doit veiller à ce qu'une limite fixe soit appliquée à la mémoire utilisée par le conteneur à l'aide du drapeau --memory dans la commande docker run.

    • Le conteneur Docker doit veiller à ce qu'une limite soit appliquée à la quantité d'UC utilisée par un conteneur en cours d'exécution à l'aide du drapeau --cpuset-cpus dans la commande docker run.

    • Le drapeau --pids-limit doit avoir la valeur 300 pour restreindre le nombre de threads du kernel générés à tout moment dans le conteneur. Ceci permet d'éviter les attaques par déni de service (DoS).

  • Vous devez définir la stratégie de redémarrage de conteneur en cas d'échec sur la valeur 5 à l'aide du drapeau --restart dans la commande docker run.

  • Vous ne devez utiliser le conteneur eDirectory qu'une fois que l'état de santé est Healthy (Sain) lorsque le conteneur est activé. Pour vérifier l'état de santé du conteneur, exécutez la commande suivante :

    docker ps <container_name/ID>
  • Les conteneurs Docker comprennent généralement une liste par défaut de fonctions Linux activées. Veillez à ne conserver que les fonctions suivantes activées pour le conteneur eDirectory et à supprimer les autres fonctions :

    • AUDIT_WRITE

    • CHOWN

    • DAC_OVERRIDE

    • SETGID

    • SETUID

    • NET_BIND_SERVICE

    • SYS_CHROOT (uniquement en cas d'activation du service SLP)

    • SYS_PTRACE (uniquement en cas d'utilisation d'utilitaires faisant appel à la fonction Linux ptrace, comme gdb)

    Pour plus d'informations sur l'ajout et la suppression de fonctions, reportez-vous à la section Runtime privilege and Linux capabilities (Privilège d'exécution et fonctions Linux).

  • Le conteneur eDirectory démarre toujours en tant qu'utilisateur non-root (nds). Par mesure de sécurité supplémentaire, activez la réassignation de l'espace de noms utilisateur sur le daemon pour éviter les attaques par élévation de privilèges à partir du conteneur. Pour plus d'informations sur la réassignation de l'espace de noms utilisateur, reportez-vous à la section Isolate containers with a user namespace (Isoler les conteneurs avec un espace de noms).

REMARQUE :si vous utilisez une version autonome antérieure d'eDirectory, vous ne pouvez pas migrer la configuration vers l'environnement Docker à l'aide d'un conteneur Docker pour eDirectory 9.2.

Le conteneur Docker pour eDirectory prend en charge les pilotes de réseau hôte (Host) et superposé (Overlay) pour le déploiement dans un environnement Docker multi-hôte :

6.3.1 Déploiement d'un conteneur eDirectory dans un réseau hôte

Les conteneurs eDirectory peuvent être déployés dans un environnement hybride à l'aide du pilote de réseau hôte sous Linux uniquement. Pour plus d'informations sur les réseaux Docker, reportez-vous à la section Configure networking (Configurer la mise en réseau).

REMARQUE :le réseau hôte n'est pas pris en charge sous Windows.

Un environnement hybride est une combinaison de déploiements hérités et basés sur les conteneurs de serveurs eDirectory dans une même arborescence. Un réseau hybride permet d'introduire des conteneurs Docker pour eDirectory en toute transparence dans un environnement de production existant qui héberge déjà un déploiement eDirectory hérité. Dans le cadre de la mise en réseau hôte Docker, les ports de service ne peuvent pas être réutilisés, car la pile réseau de l'hôte est partagée par les déploiements eDirectory hérités et conteneurisés. En outre, un serveur eDirectory conteneurisé apparaît en tant que serveur eDirectory hérité pour les clients et les autres serveurs de l'arborescence.

L'exemple suivant indique comment créer une arborescence à l'aide d'un conteneur eDirectory :

docker run -it --name eDir-container-1 --restart on-failure:5 --memory="700M" --cpuset-cpus="1" --pids-limit="300" --volume eDir-volume1:/config --network=host edirectory:9.2.0 new -t docker-tree1 -n novell -S m1 -B 164.99.1.1@1524 -o 1028 -O 1030 -L 1389 -l 1636 --configure-eba-now yes

L'exemple suivant indique comment ajouter un serveur de répliques d'un conteneur eDirectory à une arborescence existante :

docker run -it --name eDir-container-2 --restart on-failure:5 --memory="700M" --cpuset-cpus="1" --pids-limit="300" --volume eDir-volume2:/config --network=host edirectory:9.2.0 add -t docker-tree1 -n novell -S m2 -B 164.99.10.10@2524 -o 2028 -O 2030 -L 2389 -l 2636 --configure-eba-now yes -p 164.99.1.1@1524

REMARQUE :

  • Le drapeau --network sert à déployer le conteneur à l'aide du pilote de réseau hôte.

  • Les numéros de port des services ne doivent pas être répétés entre les conteneurs eDirectory exécutés sur un même hôte Docker.

  • Les adresses IP utilisées dans les commandes ci-dessus sont celles de l'ordinateur hôte Docker sur lequel le conteneur doit s'exécuter.

Figure 6-1 Déploiement d'un conteneur eDirectory dans un réseau hôte

6.3.2 Déploiement d'un conteneur eDirectory dans un réseau superposé défini par l'utilisateur

Vous pouvez utiliser un réseau superposé défini par l'utilisateur pour créer un réseau distribué de conteneurs eDirectory qui s'exécutent sur plusieurs hôtes de daemon Docker. Un conteneur eDirectory dans un réseau superposé défini par l'utilisateur peut être déployé sous Linux et Windows. Le service Docker Swarm doit être utilisé pour joindre les hôtes Docker à un essaim. Les conteneurs eDirectory qui y sont exécutés peuvent ainsi communiquer en toute transparence. Pour plus d'informations sur le pilote de réseau superposé Docker, reportez-vous à la section Use overlay networks (Utiliser des réseaux superposés).

REMARQUE :les opérations de mise à l'échelle et de planification des fonctions d'un essaim Docker ne sont pas certifiées avec les conteneurs eDirectory. De plus, la migration des conteneurs eDirectory sur les hôtes par le service Swarm n'est pas prise en charge.

Conditions préalables

  • Un essaim Docker doit être créé avec au moins un hôte Docker configuré en tant que manager (gestionnaire) et les autres hôtes en tant que workers (travailleurs).

  • Créez un réseau superposé attachable nommé myOverlay.

  • Ouvrez les ports suivants sur le pare-feu entre les hôtes Docker pour la gestion des grappes et la communication au sein d'un essaim Docker :

    • Port TCP 2377

    • Port TCP et UDP 7946

    • Port UDP 4789

  • Vous devez assigner aux conteneurs déployés dans un réseau superposé une adresse IP interne statique appartenant au sous-réseau myOverlay.

Pour plus d'informations sur le déploiement d'un essaim et sur la création d'un réseau superposé défini par l'utilisateur, reportez-vous à la section Networking with overlay networks (Mise en réseau avec des réseaux superposés).

Avant de déployer un conteneur eDirectory dans un réseau superposé défini par l'utilisateur, vous devez tenir compte des recommandations suivantes :

  • Le serveur de répliques maîtresses du conteneur eDirectory et ses répliques R/W doivent être déployés au sein d'un même réseau superposé. Les communications avec d'autres serveurs eDirectory autonomes ou des conteneurs exécutés en dehors du réseau superposé ne sont pas prises en charge.

  • Il est recommandé de déployer le conteneur Docker pour iManager dans le même réseau superposé défini par l'utilisateur à des fins d'administration d'eDirectory. Pour plus d'informations sur le déploiement des conteneurs Docker pour iManager, reportez-vous à la section Déploiement d'iManager à l'aide d'un conteneur Docker.

  • Pour obtenir les informations détaillées du réseau superposé défini par l'utilisateur, exécutez la commande suivante :

    docker inspect myOverlay

La commande suivante indique comment créer une arborescence à l'aide d'un conteneur eDirectory :

docker run -it --name eDir-container-1 --restart on-failure:5 --memory="700M" --cpuset-cpus="1" --pids-limit="300" --volume eDir-volume1:/config --network=myOverlay --ip=10.0.0.5 edirectory:9.2.0 new -t docker-tree1 -n novell -S m1 –b 524 -o 8028 -O 8030 -L 389 -l 636 --configure-eba-now yes

La commande suivante indique comment obtenir l'adresse IP du conteneur eDirectory créé ci-dessus :

docker inspect eDir-container-1 --format {{.NetworkSettings.Networks.myOverlay.IPAddress}}

Vous pouvez utiliser l'adresse IP affichée en tant qu'adresse_IP_distante lors de l'ajout d'un serveur de répliques de conteneur eDirectory à l'arborescence.

La commande suivante indique comment ajouter un serveur de répliques d'un conteneur eDirectory à une arborescence existante :

docker run -it --name eDir-container-2 --restart on-failure:5 --memory="700M" --cpuset-cpus="1" --pids-limit="300" --volume eDir-volume2:/config --network=myOverlay --ip=10.0.0.6 edirectory:9.2.0 add -t docker-tree1 -n novell -S m2 –b 524 -o 8028 -O 8030 -L 389 -l 636 --configure-eba-now yes -p <remote_IP_Address>

REMARQUE :

  • Le drapeau --network sert à déployer le conteneur dans le réseau superposé défini par l'utilisateur nommé myOverlay à l'aide du pilote de réseau superposé.

  • Dans les exemples ci-dessus, le drapeau --ip sert à assigner une adresse IP interne statique au conteneur appartenant au sous-réseau myOverlay.

Figure 6-2 Déploiement d'un conteneur eDirectory dans un réseau superposé défini par l'utilisateur