Citrix Hypervisor

Gestion des conteneurs

Citrix Hypervisor inclut 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 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 de tous les conteneurs Docker s’exécutant sur 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, reportez-vous à la section Documentation XenCenter.

Le parc supplémentaire de gestion des conteneurs 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’applications 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 fonctionnalités de surveillance. Pour plus d’informations, veuillez consulter 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 plus d’informations, veuillez consulter 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ôle des 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), ce qui permet de terminer rapidement les applications problématiques.

Remarque :

Citrix Hypervisor prend en charge l’installation de packs supplémentaires à l’aide de XenCenter. Pour plus d’informations sur l’installation d’un pack supplémentaire à l’aide de XenCenter, reportez-vous à la section Documentation XenCenter. Si vous préférez installer à l’aide de l’interface de ligne de commande xe, reportez-vous à la section Citrix 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.2.

  2. Installez le XenCenter fourni avec Citrix Hypervisor 8.2.

  3. Installez le pack supplémentaire Gestion des conteneurs disponible à partir de Site 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 les 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 de configuration 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 et RHEL/Centos/OEL 7.x.

Pour préparer manuellement un invité Linux :

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

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

    Pour RHEL/CentOS/OEL 7.x :

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

    systemctl enable docker.service
    <!--NeedCopy-->
    
  4. Démarrer docker.service

    systemctl start docker.service
    <!--NeedCopy-->
    

    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
    <!--NeedCopy-->
    

    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 la commande xscontainer-prepare-vm 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 conteneur et d’afficher les journaux pour gérer et surveiller les applications exécutées sur les 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 Cloud-Config Parameters de l’onglet Général de la machine virtuelle dans XenCenter.
    • Pour les conteneurs fonctionnant sur 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 que ContainerManagement.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 for Windows est installé sur la machine virtuelle et que le réseau de machines virtuelles est configuré comme décrit à la section Configuration réseau requise et sécurité.

  2. Installez la prise en charge du conteneur Windows Server à l’intérieur de la machine virtuelle, comme décrit à la section Documentation 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"
    }
    <!--NeedCopy-->
    
  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
    <!--NeedCopy-->
    

    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
    <!--NeedCopy-->
    

    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 les machines virtuelles gérées par conteneur directement au réseau de gestion de Citrix Hypervisor pour assurer l’isolement 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êchez toutes les connexions entre le réseau de gestion Citrix Hypervisor (qui inclut dom0) et le réseau de machines virtuelles (qui inclut les machines virtuelles gérées par conteneur) d’une manière ou d’une autre.

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 le domaine de contrôle Citrix Hypervisor (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 les conteneurs via l’une des adresses IP annoncées par les outils Citrix VM s’exécutant à l’intérieur de la machine virtuelle. 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 Container Management 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=nomparam-vm_uuid =autre-config  /
  param-key=xscontainer-sshhostkey

vm_uuid est l’UUID de la machine virtuelle

Authentification pour les conteneurs Windows Server

Citrix Hypervisor utilise TLS pour surveiller et contrôler les conteneurs Windows Server. Dans cette instance, Citrix Hypervisor agit en tant que client TLS, et les machines virtuelles Windows Server agissent en tant que serveur 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-certsoption, des certificats d’autorité de certification, de serveur et de client temporaires sont générés pour un pool et une machine virtuelle spécifiques. 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. Ce comportement peut signifier que Citrix Hypervisor peut ne pas afficher l’état du conteneur actuel (renommé/interrompu/non mis en 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.