Gestión de contenedores

Citrix Hypervisor incluye dos nuevas características para mejorar las implementaciones de Docker Containers en Citrix Hypervisor

  • Compatibilidad con máquinas virtuales CoreOS Linux y configuración de Cloud Config Drives

  • Administración de contenedores para CoreOS, Debian 8, Ubuntu 14.04 y RHEL/Centos/OEL 7

  • Vista previa de la administración de contenedores para contenedores de Windows Server en Windows Server 2016 Technology Preview

CoreOS es una distribución minimalista de Linux que se ha vuelto popular para alojar aplicaciones Docker. CoreOS Cloud Config Drive permite la personalización de varias opciones de configuración del sistema operativo. Cuando Container Management está habilitado en una máquina virtual, Citrix Hypervisor se da cuenta de cualquier contenedor Docker que se ejecuta en la máquina virtual.

Nota:

Para obtener información sobre cómo instalar invitados de CoreOS, configurar los parámetros de Cloud-Config y administrar contenedores de Docker, consulte la Ayuda de XenCenter. Presione F1 o haga clic en Ayuda .

El parque suplementario de administración de contenedores permite a Citrix Hypervisor realizar las siguientes acciones:

  • Consultar las VM
  • Interactuar con Cloud Config Drives
  • Descubrir contenedores de aplicaciones
  • Muestra los contenedores de aplicaciones en la vista Infraestructura de XenCenter.

XenCenter también permite la interacción con los contenedores para permitir operaciones de inicio, detención y pausa, así como otras funciones de supervisión. Para obtener más información, consulte Paquete complementario de administración de contenedores.

Qué es Docker

Docker es una plataforma abierta para desarrolladores y administradores de sistemas para crear, enviar y ejecutar aplicaciones distribuidas. Un contenedor Docker comprende solo la aplicación y sus dependencias. Se ejecuta como un proceso aislado en el espacio de usuario en el sistema operativo host, compartiendo el núcleo y el sistema de archivos base con otros contenedores. Para obtener más información, consulte https://www.docker.com/whatisdocker.

Nota:

La función Citrix Hypervisor Container Management complementa, pero no reemplaza, el entorno Docker. Puede utilizar una de las muchas herramientas de administración de Docker disponibles para administrar instancias individuales de Docker Engine en las VM.

Paquete complementario de administración de contenedores

El Paquete Suplementario de Administración de Contenedores proporciona:

Supervisión y visibilidad: le permite ver qué máquinas virtuales están en uso para el alojamiento Docker y qué contenedores de la máquina virtual se están ejecutando.

Diagnósticos: se proporciona acceso a la información básica del contenedor, como los puertos de red reenviados y el nombre de la imagen Docker original. Esta característica puede ayudar a acelerar las investigaciones sobre problemas en los que la infraestructura y las capas de aplicaciones pueden afectar.

Rendimiento: proporciona información sobre qué contenedores se están ejecutando en esa máquina virtual. Dependiendo de la información proporcionada por el sistema operativo, proporciona información sobre los procesos y aplicaciones que se ejecutan en el contenedor y el recurso de CPU consumido.

Aplicaciones de control: permite utilizar XenCenter para iniciar, detener y pausar contenedores de aplicaciones (si lo admite el sistema operativo), lo que permite la terminación rápida de aplicaciones problemáticas.

Nota:

Citrix Hypervisor admite la instalación de paquetes suplementarios mediante XenCenter. Para obtener información sobre cómo instalar un paquete complementario con XenCenter, consulte la Ayuda de XenCenter. Si prefiere instalar usando la CLI xe, consultePaquetes suplementarios de Citrix Hypervisor y la guía DDK.

Administrar contenedores de Docker mediante XenCenter

Esta sección contiene información sobre la administración de las VM de CoreOS mediante XenCenter. Para administrar las máquinas virtuales CoreOS, siga estos pasos:

  1. Instale o actualice su host a Citrix Hypervisor 8.0.

  2. Instale XenCenter incluido con Citrix Hypervisor 8.0.

  3. Instale el paquete complementario de administración de contenedores disponible enSitio web de Citrix.

  4. Cree una máquina virtual CoreOS e incluya una unidad de configuración para la máquina virtual.

    Cuando crea una máquina virtual CoreOS en XenCenter, el Asistente para nueva máquina virtual le pide que especifique los parámetros de configuración de nube para su máquina virtual. La unidad de configuración proporciona datos de usuario para la instancia de VM. Si planea usar Citrix Hypervisor para administrar contenedores que se ejecutan dentro de la máquina virtual, cree una unidad de configuración.

    De forma predeterminada, XenCenter incluye un conjunto predefinido de parámetros en la página Parámetros de configuración de nube. Puede modificar estos parámetros en función de sus necesidades. Para obtener información detallada sobre los parámetros de configuración admitidos, consulte la documentación de CoreOS.

    Advertencia:

    La administración de contenedores puede no funcionar si no crea una unidad de configuración para la máquina virtual.

  5. Habilite la administración de contenedores para la VM. Puede actualizar esta configuración en la ficha Propiedades de la VM en XenCenter.

Nota:

Si migra una máquina virtual administrada por contenedores entre grupos, Container Management deja de funcionar para la máquina virtual. Este comportamiento se debe a que la administración de contenedores se implementa utilizando una clave específica del grupo. Para volver a habilitar la funcionalidad de administración de contenedores para la VM, actualice la configuración de Cloud Config Drive en las preferencias de VM.

Administrar contenedores en otros huéspedes de Linux

Las máquinas virtuales CoreOS que se crean con la configuración predeterminada de Cloud Config Drive se preparan automáticamente para la administración de contenedores. Solo es necesario habilitar la función. Otros huéspedes Linux se pueden preparar manualmente. Esta función es compatible únicamente con máquinas virtuales Debian 8, Ubuntu 14.04 y RHEL/Centos/OEL 7.x.

Para preparar manualmente un invitado Linux:

  1. Asegúrese de que la VM tenga instalado Citrix VM Tools y de que la red de VM esté configurada como se describe en Requisitos y seguridad de la red.

  2. Instale Docker, Ncat y SSHD dentro de la VM.

    Para Ubuntu 14.04:

    apt-get install docker.io nmap openssh-server
    

    Para RHEL/Centos/OEL 7.x:

    yum install docker nmap openssh-server
    
  3. Habilitar autostart para docker.service:

    systemctl enable docker.service
    
  4. Iniciar docker.service

    systemctl start docker.service
    

    Utilice un usuario que no sea root para la administración de contenedores. Agregue el usuario al grupo ‘acoplador’ para proporcionar acceso a Docker.

  5. Prepare la máquina virtual para la administración de contenedores; ejecute el siguiente comando en el dominio de control (dom0) en uno de los hosts del grupo:

    xscontainer-prepare-vm -v vm_uuid -u username
    

    Dóndevm_uuid está la máquina virtual que se va a preparar yusername es el nombre de usuario en la máquina virtual que la Administración de contenedores utiliza para el acceso a la administración.

El script de preparación le guía a través del proceso y habilita automáticamente la administración de contenedores para esta máquina virtual.

Nota:

Si migra una máquina virtual administrada por contenedores entre grupos, Container Management deja de funcionar para la máquina virtual. Este comportamiento se debe a que la administración de contenedores se implementa utilizando una clave específica del grupo. Para volver a habilitar la funcionalidad de administración de contenedores para la máquina virtual, ejecute elxscontainer-prepare-vm comando de nuevo en la máquina virtual. Incluso después de ejecutar este comando, el grupo de Citrix Hypervisor original podría mantener el acceso a la máquina virtual.

Acceder a la consola de Docker Container y a los registros

Para las máquinas virtuales Linux, XenCenter permite a los clientes acceder a la consola contenedora y ver registros para administrar y supervisar aplicaciones que se ejecutan en contenedores Docker. Para acceder a la consola contenedora y a los registros mediante XenCenter:

  1. Select el contenedor en el panel Recursos .

  2. En la sección Propiedades generales del contenedor , haga clic en Ver consola para ver la consola del contenedor. Para ver los registros de la consola, haga clic en Ver registro. Esta acción abre un cliente SSH en el equipo que ejecuta XenCenter.

  3. Cuando se le solicite, inicie sesión en el cliente SSH utilizando el nombre de usuario y la contraseña de VM.

    Nota:

    Los clientes pueden automatizar el proceso de autenticación configurando sus claves SSH públicas/privadas. Consulte la siguiente sección para obtener más información.

Automatizar el proceso de autenticación (opcional)

Al acceder a la consola del contenedor y a los registros, se requiere que los clientes introduzcan las credenciales de inicio de sesión de la VM para autenticar las conexiones SSH. Sin embargo, los clientes pueden automatizar el proceso de autenticación para evitar introducir las credenciales manualmente. Siga las instrucciones siguientes para configurar el proceso de autenticación automática:

  1. Generar un par de claves públicas/privadas.

  2. Agregue la clave SSH pública al directorio de usuario en la máquina virtual que ejecuta el contenedor.

    • Para los contenedores que se ejecutan en una máquina virtual CoreOS, agregue la clave pública a la sección Parámetros de configuración de nube en la ficha General de la máquina virtual en XenCenter.
    • Para los contenedores que se ejecutan en Ubuntu 14.04, RHEL/Centos/Oracle Linux 7 y Debian 8, agregue manualmente la clave pública a~/.ssh/authorized_keys.
  3. Agregue la clave SSH privada al%userprofile% directorio en el equipo que ejecuta XenCenter y cambie el nombre de la clave comoContainerManagement.ppk .

Administrar contenedores de Windows Server

Los contenedores de Windows Server forman parte del sistema operativo invitado de Windows Server 2016. Permiten la encapsulación de aplicaciones de Windows aislando procesos en su propio espacio de nombres. Citrix Hypervisor Container Management admite la supervisión y administración de contenedores de Windows Server en sistemas operativos invitados de Windows Server 2016.

Nota:

Las máquinas virtuales de Windows Server 2016 deben configurarse con una o más direcciones IP estáticas para la comunicación TLS, ya que los certificados de servidor TLS están enlazados a determinadas direcciones IP.

Para preparar contenedores de Windows Server para la administración de contenedores:

  1. Asegúrese de que la VM tenga instalado Citrix VM Tools y de que la red de VM esté configurada como se describe en Requisitos y seguridad de la red.

  2. Instale la compatibilidad con Windows Server Container dentro de la máquina virtual como se describe enDocumentación de Microsoft. Los contenedores de Windows Server no son contenedores de Hyper-V.

  3. Cree un archivo llamadodaemon.json en la carpetaC:\ProgramData\docker\config con el contenido:

    {
        "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. Prepare la máquina virtual para la administración de contenedores; ejecute uno de los siguientes comandos en el dominio de control (dom0) en uno de los hosts del grupo:

    Opción 1 (para máquinas virtuales de un solo usuario): haga que Citrix Hypervisor genere certificados TLS para esta máquina virtual.

    Importante:

    Esta opción solo es segura cuando solo un usuario tiene acceso a la VM. El servidor TLS y las claves de cliente se inyectan en la máquina virtual mediante un CD virtual. Esta información puede ser copiada por usuarios malintencionados durante la preparación.

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

    Donde vm_uuid es la máquina virtual que se va a preparar. Siga las instrucciones que aparecen en pantalla para completar el proceso de preparación de contenedores de Windows Server. Implica interactuar con dom0 y la VM.

    Opción 2: Para configurar Citrix Hypervisor con certificados TLS generados externamente

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

    Donde vm_uuid es la máquina virtual que se va a preparar, client_cert es el certificado de cliente TLS, client_key es la clave de cliente TLS y ca_cert es el certificado de CA. Esta opción supone que Docker ya está configurado para TLS dentro de la VM.

Requisitos de red y seguridad

Importante:

Para que la administración de contenedores funcione, puede ser necesario relajar los requisitos de seguridad relacionados con el aislamiento de la red.

Para lograr la máxima seguridad de los entornos de virtualización, se recomienda que los administradores dividan la red aislando la red de administración de Citrix Hypervisor (con Citrix Hypervisor Control Domain) de las máquinas virtuales.

Habilitar la administración de contenedores requiere una ruta entre estas dos redes, lo que aumenta el riesgo de que las VM malintencionadas ataquen a la red de administración (es decir, dom0). Para mitigar el riesgo de permitir el tráfico entre la VM y la red de administración, recomendamos la configuración de reglas de firewall para permitir que sólo las fuentes de confianza inicien una conexión entre las dos redes.

No utilice esta función en producción en los siguientes casos:

  • Si esta configuración de red recomendada no coincide con su perfil de riesgo
  • Si carece de la experiencia necesaria en red o firewall para proteger esta ruta lo suficiente para su caso de uso específico

Partición de red y firewalls

Al igual que con otras máquinas virtuales, no conecte las máquinas virtuales administradas por contenedor directamente a la red de administración de Citrix Hypervisor para proporcionar el aislamiento necesario.

Para que la administración de contenedores funcione, las máquinas virtuales administradas deben ser accesibles desde el dominio de control del hipervisor de Citrix (dom0). Para supervisar contenedores en sistemas operativos basados en Linux, la topología de red y los firewalls deben permitir conexiones SSH salientes desde dom0 a máquinas virtuales administradas por contenedores. Para supervisar los contenedores de Windows Server, la topología de red y los firewalls deben permitir conexiones de Docker TLS (puerto TCP de destino 2376) salientes desde dom0 a máquinas virtuales administradas por contenedor.

Para mitigar el riesgo de permitir el tráfico entre la VM y la red de administración, pase todo el tráfico a través de un firewall con estado externo. Este firewall debe configurarlo manualmente y configurarlo un experto de acuerdo con sus requisitos específicos de seguridad y negocio.

La siguiente sección contiene un ejemplo de configuración:

Para proteger las conexiones entre las redes:

  • Impedir todas las conexiones entre la red de administración de Citrix Hypervisor (que incluye dom0) y la red de VM (que incluye máquinas virtuales administradas por contenedor) de cualquier manera.

Agregue excepciones para habilitar la administración de contenedores:

  • Para supervisar el sistema operativo basado en Linux, permita que dom0 tenga conexiones SSH (puerto TCP 22) de salida (tanto NUEVO como ESTABLECIDO) a máquinas virtuales administradas por contenedores.

  • Para supervisar los contenedores de Windows Server, permita que dom0 tenga conexiones salientes de Docker TLS (puerto TCP 2376) (tanto NUEVO como ESTABLECIDO) a máquinas virtuales administradas por contenedores.

  • Permitir que las VM administradas por contenedor respondan a las conexiones SSH y Docker TLS iniciadas por dom0.

Autenticación en sistemas operativos basados en Linux

La administración de contenedores de Citrix Hypervisor utiliza un par de claves RSA privado/público específico de 4096 bits para autenticarse en máquinas virtuales administradas por contenedores. La clave privada se almacena en el dominio de control de Citrix Hypervisor (dom0). La clave pública correspondiente se registra en las máquinas virtuales administradas por contenedores durante la preparación, ya sea mediante Cloud Config Drive o~user/.ssh/authorized_keys un archivo. Como es habitual con todos los pares de claves privadas/públicas, la clave privada debe mantenerse de forma segura, ya que permite el acceso sin contraseña a todas las máquinas virtuales administradas por contenedores. Este acceso incluye tanto máquinas virtuales administradas actualmente como máquinas virtuales administradas en el pasado.

La administración de contenedores de Citrix Hypervisor intenta llegar a las máquinas virtuales administradas por contenedores a través de cualquiera de las direcciones IP anunciadas por Citrix VM Tools que se ejecutan dentro de la máquina virtual. Después de una conexión inicial, Citrix Hypervisor almacena la clave pública de las máquinas virtuales administradas por contenedor y valida que la clave coincida con cualquier conexión posterior. Asegúrese de que sólo se puede contactar con la máquina virtual administrada por contenedores a través de su IP anunciada (utilizando IP Source Guard o medios similares). Si la topología de red no puede garantizar este comportamiento, se recomienda que los administradores confirmen la clave de host SSH que obtuvo Container Management al realizar la primera conexión a la VM.

Se puede acceder a la clave mediante el siguiente comando:

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

vm_uuid es el UUID de la VM

Autenticación para contenedores de Windows Server

Citrix Hypervisor utiliza SSL o TLS para supervisar y controlar los contenedores de Windows Server. En este caso, Citrix Hypervisor actúa como cliente SSL/TLS y las máquinas virtuales de Windows Server actúan como servidor SSL/TLS. Las claves se almacenan tanto en Dom0 como en la VM.

Importante:

  • La clave de cliente debe mantenerse de forma segura, ya que permite el acceso sin contraseña a Docker en la VM
  • La clave del servidor debe mantenerse de forma segura, ya que sirve para autenticar la conexión de supervisión a la VM

Cuando Citrix Hypervisor Container Management genera certificados y claves TLS mediante la–generate-certs opción, se generan certificados temporales de CA, servidor y cliente para un grupo y VM específicos. Los certificados usan hash sha256 y son válidos hasta por 2*365 días. Después de este tiempo, repita la preparación. La conexión TLS siempre se establece utilizando un cifrado AES128-SHA.

Notas

Cuando utilice Citrix Hypervisor Container Management y Docker, tenga en cuenta los siguientes comportamientos:

  • Cambiar el nombre de un contenedor no activa la vista Administración de contenedores para actualizar. Además, en Ubuntu 14.04, la pausa o la despausa de un contenedor desde fuera de XenCenter no activa la actualización de la vista. Este comportamiento puede significar que Citrix Hypervisor puede no mostrar el estado actual del contenedor (renombrado, pausado o sin pausa). La causa subyacente es que la vista solo se actualiza después de las notificaciones de eventos de Docker. Como solución alternativa, la actualización se puede activar realizando una acción (es decir, iniciar o detener) en un contenedor no relacionado en la misma máquina virtual.