Gestion des conteneurs

Citrix Hypervisor comprend deux nouvelles fonctionnalités pour améliorer les déploiements de Docker Containers sur Citrix Hypervisor

  • Prise en charge des machines virtuelles CoreOS Linux et configuration de Cloud Config Drives

  • Gestion des conteneurs pour CoreOS, Debian 8, Ubuntu 14.04 et RHEL/CentOS/OEL 7

  • Aperçu de la gestion des conteneurs pour les conteneurs Windows Server sur Windows Server 2016 Technology Preview

CoreOS est une distribution Linux minimaliste qui est devenue populaire pour héberger des applications Docker. Le Cloud Config Drive de CoreOS permet la personnalisation de diverses options de configuration du système d’exploitation. Lorsque la gestion des conteneurs est activée sur une machine virtuelle, Citrix Hypervisor prend connaissance des conteneurs Docker qui s’exécutent dans la machine virtuelle.

Remarque :

Pour plus d’informations sur l’installation des invités CoreOS, la configuration des paramètres Cloud-Config et la gestion des conteneurs Docker, consultez l’aide de XenCenter. Appuyez sur F1 ou cliquez sur Aide .

Container Management Supplemental Park permet à Citrix Hypervisor d’effectuer les actions suivantes :

  • Interroger les machines virtuelles
  • Interagir avec les lecteurs de configuration Cloud
  • Découvrir les conteneurs d’application
  • Afficher les conteneurs d’application dans la vue Infrastructure de XenCenter.

XenCenter permet également l’interaction avec les conteneurs pour permettre le démarrage, l’arrêt et la pause des opérations, ainsi que d’autres fonctions de surveillance. Pour de plus amples informations, consultez la section Pack supplémentaire pour la gestion des conteneurs.

Qu’est-ce que Docker

Docker est une plate-forme ouverte permettant aux développeurs et aux administrateurs système de créer, d’expédier et d’exécuter des applications distribuées. Un conteneur Docker comprend uniquement l’application et ses dépendances. Il fonctionne comme un processus isolé dans l’espace utilisateur sur le système d’exploitation hôte, partageant le noyau et le système de fichiers de base avec d’autres conteneurs. Pour de plus amples informations, consultez la section https://www.docker.com/whatisdocker.

Remarque :

La fonctionnalité Citrix Hypervisor Container Management complète, mais ne remplace pas l’environnement Docker. Vous pouvez utiliser l’un des nombreux outils de gestion Docker disponibles pour gérer des instances Docker Engine individuelles dans les machines virtuelles.

Pack supplémentaire pour la gestion des conteneurs

Le pack supplémentaire de gestion des conteneurs fournit les éléments suivants :

Surveillance et visibilité : vous permet de voir quelles machines virtuelles sont utilisées pour l’hébergement Docker et quels conteneurs sur la machine virtuelle sont en cours d’exécution.

Diagnostics : l’accès est fourni aux informations de base du conteneur telles que les ports réseau transférés et le nom de l’image Docker d’origine. Cette fonctionnalité peut aider à accélérer les enquêtes sur les problèmes susceptibles d’avoir un impact sur l’infrastructure et les couches d’applications.

Performances : donne un aperçu des conteneurs qui s’exécutent sur cette machine virtuelle. Selon les informations fournies par le système d’exploitation, il fournit des informations sur les processus et les applications s’exécutant sur le conteneur, ainsi que sur la ressource CPU consommée.

Contrôler les applications : vous permet d’utiliser XenCenter pour démarrer, arrêter et mettre en pause des conteneurs d’applications (si pris en charge par le système d’exploitation) permettant la résiliation rapide des applications problématiques.

Remarque :

Citrix Hypervisor prend en charge l’installation des packs supplémentaires à l’aide de XenCenter. Pour plus d’informations sur l’installation d’un pack supplémentaire à l’aide de XenCenter, consultez l’aide de XenCenter. Si vous préférez installer à l’aide de l’interface de ligne de commande xe, consultez laCitrix Hypervisor Supplemental Packs et le guide DDK.

Gérer les conteneurs Docker à l’aide de XenCenter

Cette section contient des informations sur la gestion de vos machines virtuelles CoreOS à l’aide de XenCenter. Pour gérer les machines virtuelles CoreOS, procédez comme suit :

  1. Installez ou mettez à niveau votre hôte vers Citrix Hypervisor 8.0.

  2. Installez le XenCenter fourni avec Citrix Hypervisor 8.0.

  3. Installez le pack supplémentaire de gestion des conteneurs disponible à partir duSite web Citrix.

  4. Créez une machine virtuelle CoreOS et incluez un lecteur de configuration pour la machine virtuelle.

    Lorsque vous créez une machine virtuelle CoreOS dans XenCenter, l’Assistant Nouvelle machine virtuelle vous invite à spécifier des paramètres cloud-config pour votre machine virtuelle. Le lecteur de configuration fournit des données utilisateur pour l’instance de machine virtuelle. Si vous prévoyez d’utiliser Citrix Hypervisor pour gérer les conteneurs s’exécutant à l’intérieur de la machine virtuelle, créez un lecteur de configuration.

    Par défaut, XenCenter inclut un ensemble prédéfini de paramètres sur la page Paramètres Cloud-Config. Vous pouvez modifier ces paramètres en fonction de vos besoins. Pour plus d’informations sur les paramètres de configuration pris en charge, consultez la documentation CoreOS.

    Avertissement :

    La gestion des conteneurs peut ne pas fonctionner si vous ne créez pas de lecteur de configuration pour la machine virtuelle.

  5. Activer la gestion des conteneurs pour la machine virtuelle. Vous pouvez mettre à jour ce paramètre dans l’onglet Propriétés de la machine virtuelle dans XenCenter.

Remarque :

Si vous migrez une machine virtuelle gérée par conteneur entre les pools, la gestion des conteneurs cesse de fonctionner pour la machine virtuelle. Ce comportement est dû au fait que la gestion des conteneurs est implémentée à l’aide d’une clé spécifique au pool. Pour réactiver la fonctionnalité de gestion des conteneurs pour la machine virtuelle, mettez à jour la configuration Cloud Config Drive dans les préférences de la machine virtuelle.

Gérer les conteneurs sur d’autres hôtes Linux

Les machines virtuelles CoreOS créées avec la configuration par défaut Cloud Config Drive sont automatiquement préparées pour la gestion des conteneurs. Juste besoin d’activer la fonctionnalité. Les autres invités Linux peuvent être préparés manuellement. Cette fonctionnalité est prise en charge uniquement pour les machines virtuelles Debian 8, Ubuntu 14.04 et Rhel/Centos/OEL 7.x.

Pour préparer manuellement un invité Linux :

  1. Assurez-vous que Citrix VM Tools est installé sur la machine virtuelle et que le réseau de machine virtuelle est configuré comme décrit à la section Exigences réseau et sécurité.

  2. Installez Docker, Ncat et SSHD à l’intérieur de la machine virtuelle.

    Pour Ubuntu 14.04 :

    apt-get install docker.io nmap openssh-server
    

    Pour RHEL/CentOS/OEL 7.x :

    yum install docker nmap openssh-server
    
  3. Activer le démarrage automatique pour docker.service :

    systemctl enable docker.service
    
  4. Démarrer docker.service

    systemctl start docker.service
    

    Utilisez un utilisateur non root pour la gestion des conteneurs. Ajoutez l’utilisateur au groupe ‘docker’ pour fournir l’accès à Docker.

  5. Préparez la machine virtuelle pour la gestion des conteneurs ; exécutez la commande suivante sur le domaine de contrôle (dom0) sur l’un des hôtes du pool :

    xscontainer-prepare-vm -v vm_uuid -u username
    

    vm_uuid est la machine virtuelle à préparer etusername le nom d’utilisateur sur la machine virtuelle que la gestion des conteneurs utilise pour l’accès à la gestion.

Le script de préparation vous guide tout au long du processus et active automatiquement la gestion des conteneurs pour cette machine virtuelle.

Remarque :

Si vous migrez une machine virtuelle gérée par conteneur entre les pools, la gestion des conteneurs cesse de fonctionner pour la machine virtuelle. Ce comportement est dû au fait que la gestion des conteneurs est implémentée à l’aide d’une clé spécifique au pool. Pour réactiver la fonctionnalité de gestion des conteneurs pour la machine virtuelle, exécutez à nouveau laxscontainer-prepare-vm commande sur la machine virtuelle. Même après l’exécution de cette commande, le pool Citrix Hypervisor d’origine peut conserver l’accès à la machine virtuelle.

Accédez à la console et aux journaux du conteneur Docker

Pour les machines virtuelles Linux, XenCenter permet aux clients d’accéder à la console de conteneurs et d’afficher les journaux pour gérer et surveiller les applications exécutées sur des conteneurs Docker. Pour accéder à la console du conteneur et aux journaux à l’aide de XenCenter :

  1. Sélectionnez le conteneur dans le volet Ressources .

  2. Dans la section Propriétés générales du conteneur , cliquez sur Afficher la console pour afficher la console du conteneur. Pour afficher les journaux de la console, cliquez sur Afficher le journal. Cette action ouvre un client SSH sur la machine exécutant XenCenter.

  3. Lorsque vous y êtes invité, connectez-vous au client SSH à l’aide du nom d’utilisateur et du mot de passe de la machine virtuelle.

    Remarque :

    Les clients peuvent automatiser le processus d’authentification en configurant leurs clés SSH public/privées. Voir la section suivante pour plus de détails.

Automatisation du processus d’authentification (facultatif)

Lors de l’accès à la console de conteneur et aux journaux, les clients doivent entrer les informations d’identification de connexion de la machine virtuelle pour authentifier les connexions SSH. Toutefois, les clients peuvent automatiser le processus d’authentification pour éviter de saisir manuellement les informations d’identification. Suivez les instructions ci-dessous pour configurer le processus d’authentification automatique :

  1. Générer une paire de clés publiques/privées.

  2. Ajoutez la clé SSH publique au répertoire utilisateur de la machine virtuelle exécutant le conteneur.

    • Pour les conteneurs s’exécutant sur une machine virtuelle CoreOS, ajoutez la clé publique à la section Paramètres Cloud-Config de l’onglet Général de la machine virtuelle dans XenCenter.
    • Pour les conteneurs fonctionnant sous Ubuntu 14.04, RHEL/CentOS/Oracle Linux 7 et Debian 8, ajoutez manuellement la clé publique à~/.ssh/authorized_keys.
  3. Ajoutez la clé SSH privée au%userprofile% répertoire sur la machine exécutant XenCenter et renommez la clé en tant queContainerManagement.ppk .

Gérer les conteneurs Windows Server

Les conteneurs Windows Server font partie du système d’exploitation invité Windows Server 2016. Ils permettent l’encapsulation des applications Windows en isolant les processus dans leur propre espace de noms. Citrix Hypervisor Container Management prend en charge la surveillance et la gestion des conteneurs Windows Server sur les systèmes d’exploitation invités Windows Server 2016.

Remarque :

Les machines virtuelles Windows Server 2016 doivent être configurées avec une ou plusieurs adresses IP statiques pour la communication TLS, car les certificats de serveur TLS sont liés à certaines adresses IP.

Pour préparer les conteneurs Windows Server pour la gestion des conteneurs :

  1. Assurez-vous que Citrix VM Tools est installé sur la machine virtuelle et que le réseau de machine virtuelle est configuré comme décrit à la section Exigences réseau et sécurité.

  2. Installez la prise en charge du conteneur Windows Server à l’intérieur de la machine virtuelle comme décrit à la sectionDocumentation Microsoft. Les conteneurs Windows Server ne sont pas des conteneurs Hyper-V.

  3. Créez un fichier appelédaemon.json dans le dossierC:\ProgramData\docker\config avec le contenu :

    {
        "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
        "tlsverify": true,
        "tlscacert": "C:\ProgramData\docker\certs.d\ca.pem",
        "tlscert": "C:\ProgramData\docker\certs.d\server-cert.pem",
        "tlskey": "C:\ProgramData\docker\certs.d\server-key.pem"
    }
    
  4. Préparez la machine virtuelle pour la gestion des conteneurs ; exécutez l’une des commandes suivantes sur le domaine de contrôle (dom0) sur l’un des hôtes du pool :

    Option 1 (pour les machines virtuelles monoutilisateur) : demande à Citrix Hypervisor de générer des certificats TLS pour cette machine virtuelle.

    Important :

    Cette option n’est sûre que lorsqu’un seul utilisateur a accès à la machine virtuelle. Les clés du serveur TLS et du client sont injectées dans la machine virtuelle à l’aide d’un CD virtuel. Ces informations peuvent être copiées par des utilisateurs malveillants pendant la préparation.

    xscontainer-prepare-vm -v vm_uuid -u root --mode tls --generate-certs
    

    vm_uuid est la machine virtuelle à préparer. Suivez les instructions à l’écran pour terminer le processus de préparation des conteneurs Windows Server. Il s’agit d’interagir avec dom0 et la VM.

    Option 2 : Pour configurer Citrix Hypervisor avec des certificats TLS générés en externe

    xscontainer-prepare-vm -v vm_uuid -u root --mode tls \
        --client-cert client_cert --client-key client_key --ca-cert ca_cert
    

    vm_uuid est la machine virtuelle à préparer, client_cert est le certificat client TLS, client_key est la clé client TLS et ca_cert est le certificat de l’autorité de certification. Cette option suppose que Docker est déjà configuré pour TLS à l’intérieur de la machine virtuelle.

Exigences réseau et sécurité

Important :

Pour que la gestion des conteneurs fonctionne, il peut être nécessaire d’assouplir les exigences de sécurité concernant l’isolement du réseau.

Pour une sécurité maximale des environnements de virtualisation, nous recommandons aux administrateurs de partitionner le réseau en isolant le réseau de gestion de Citrix Hypervisor (avec Citrix Hypervisor Control Domain) des machines virtuelles.

L’activation de la gestion des conteneurs nécessite une route entre ces deux réseaux, ce qui augmente le risque que des machines virtuelles malveillantes attaquent le réseau de gestion (c’est-à-dire dom0). Afin d’atténuer le risque d’autoriser le trafic entre VM et le réseau de gestion, nous vous conseillons de configurer des règles de pare-feu afin d’autoriser uniquement les sources fiables à établir une connexion entre les deux réseaux.

N’utilisez pas cette fonctionnalité en production dans les cas suivants :

  • Si cette configuration réseau recommandée ne correspond pas à votre profil de risque
  • Si vous n’avez pas l’expertise nécessaire en réseau ou en pare-feu pour sécuriser cette route suffisamment pour votre cas d’utilisation spécifique

Partitionnement réseau et pare-feu

Comme pour les autres machines virtuelles, ne connectez pas directement les machines virtuelles gérées par conteneur au réseau de gestion de Citrix Hypervisor pour fournir l’isolation nécessaire.

Pour que la gestion des conteneurs fonctionne, les machines virtuelles gérées doivent être accessibles à partir du domaine de contrôle de Citrix Hypervisor (dom0). Pour surveiller les conteneurs sur les systèmes d’exploitation Linux, la topologie de mise en réseau et les pare-feu doivent autoriser les connexions SSH sortantes de dom0 aux machines virtuelles gérées par conteneur. Pour surveiller les conteneurs Windows Server, la topologie de mise en réseau et les pare-feu doivent autoriser les connexions Docker TLS (port TCP 2376 de destination) sortantes de dom0 aux machines virtuelles gérées par conteneur.

Pour réduire le risque d’autoriser le trafic entre la machine virtuelle et le réseau de gestion, passez tout le trafic via un pare-feu avec état externe. Ce pare-feu doit être configuré et configuré manuellement par un expert en fonction de votre entreprise et de vos exigences de sécurité spécifiques.

La section suivante contient un exemple de configuration :

Pour sécuriser les connexions entre les réseaux :

  • Empêcher toutes les connexions entre le réseau de gestion Citrix Hypervisor (qui inclut dom0) et le réseau VM (qui inclut les machines virtuelles gérées par conteneur) de toute façon.

Ajouter des exceptions pour activer la gestion des conteneurs :

  • Pour surveiller le système d’exploitation Linux, permettez à dom0 d’avoir des connexions SSH sortantes (port TCP 22) (à la fois NEW et ESTABLISHED) aux machines virtuelles gérées par conteneur.

  • Pour surveiller les conteneurs Windows Server, autorisez dom0 à avoir des connexions Docker TLS sortantes (port TCP 2376) (NEW et ESTABLISHED) aux machines virtuelles gérées par conteneur.

  • Autoriser les machines virtuelles gérées par Container à répondre aux connexions SSH et Docker TLS initiées par dom0.

Authentification sur les systèmes d’exploitation Linux

La gestion des conteneurs de Citrix Hypervisor utilise une paire de clés RSA privées/publiques 4096 bits spécifique au pool pour s’authentifier sur les machines virtuelles gérées par conteneur. La clé privée est stockée dans Citrix Hypervisor Control Domain (dom0). La clé publique correspondante est enregistrée dans les machines virtuelles gérées par Container au cours de la préparation, soit à l’aide du Cloud Config Drive ou du~user/.ssh/authorized_keys fichier. Comme d’habitude avec toutes les paires de clés privées/publiques, la clé privée doit être conservée en toute sécurité, car elle permet un accès sans mot de passe à toutes les machines virtuelles gérées par conteneur. Cet accès inclut les machines virtuelles actuellement gérées et les machines virtuelles gérées par le passé.

La gestion des conteneurs de Citrix Hypervisor tente d’atteindre les machines virtuelles gérées par Container via l’une des adresses IP annoncées par les outils de VM Citrix qui s’exécutent à l’intérieur de la VM. Après une connexion initiale, Citrix Hypervisor stocke la clé publique des machines virtuelles gérées par conteneur et valide que la clé correspond à toute connexion ultérieure. Assurez-vous que seule la machine virtuelle gérée par conteneur peut être contactée via son adresse IP annoncée (en utilisant IP Source Guard ou des moyens similaires). Si la topologie réseau ne peut pas garantir ce comportement, nous recommandons aux administrateurs de confirmer la clé d’hôte SSH obtenue par la Gestion des conteneurs lors de la première connexion à la machine virtuelle.

Vous pouvez accéder à la clé en utilisant la commande suivante :

xe vm-parm-get-uuid=vm_uuid param-name=autre-config  /
  param-key=xscontainer-sshhostkey

vm_uuid est l’UUID de la machine virtuelle

Authentification pour les conteneurs Windows Server

Citrix Hypervisor utilise SSL ou TLS pour surveiller et contrôler les conteneurs Windows Server. Dans cette instance, Citrix Hypervisor agit en tant que client SSL/TLS, et les machines virtuelles Windows Server agissent en tant que serveur SSL/TLS. Les clés sont stockées dans Dom0 et dans la machine virtuelle.

Important :

  • La clé client doit être conservée en toute sécurité, car elle permet un accès sans mot de passe à Docker sur la machine virtuelle
  • La clé de serveur doit être conservée en toute sécurité, car elle sert à authentifier la connexion de surveillance à la machine virtuelle

Lorsque Citrix Hypervisor Container Management génère des certificats et des clés TLS à l’aide de l’–generate-certs option, des certificats d’autorité de certification temporaire, de serveur et de client sont générés pour un pool spécifique et une machine virtuelle. Les certificats utilisent le hachage sha256 et sont valides jusqu’à 2 * 365 jours. Après ce temps, répétez la préparation. La connexion TLS est toujours établie à l’aide d’un chiffrement AES128-SHA.

Remarques

Lorsque vous utilisez Citrix Hypervisor Container Management et Docker, soyez conscient des comportements suivants :

  • Le changement de nom d’un conteneur ne déclenche pas la mise à jour de la vue Gestion des conteneurs. En outre, sur Ubuntu 14.04, la pause ou la réactivation d’un conteneur en dehors de XenCenter ne déclenche pas la vue à mettre à jour. Ce comportement peut signifier que Citrix Hypervisor peut ne pas afficher l’état actuel du conteneur (renommé/en pause/non pause). La cause sous-jacente est que la vue est actualisée uniquement après les notifications d’événements Docker. Comme solution de contournement, l’actualisation peut être déclenchée en exécutant une action (c’est-à-dire démarrer ou arrêter) sur un conteneur non lié sur la même machine virtuelle.