Gestión de contenedores

HASH (0x2c1a078) incluye dos nuevas características para mejorar las implementaciones de contenedores Docker en HASH (0x2c1a078)

  • Compatibilidad con máquinas virtuales CoreOS Linux y configuración de unidades de configuración en la nube

  • Gestió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. El CoreOS Cloud Config Drive permite la personalización de varias opciones de configuración del sistema operativo. Cuando la Administración de contenedores está habilitada en una máquina virtual, HASH (0x2c1a078) toma conocimiento de los contenedores Docker que se ejecutan en la máquina virtual.

Nota:

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

El Parque Suplementario de Administración de Contenedores permite a HASH (0x2c1a078) realizar las siguientes acciones:

  • Consultar las máquinas virtuales
  • Interactuar con las unidades de configuración de la nube
  • Descubrir contenedores de aplicaciones
  • Mostrar contenedores de aplicaciones dentro de la vista de infraestructura de HASH (0x2e6c8e8).

HASH (0x2e6c8e8) también permite la interacción con los contenedores para permitir operaciones de inicio, parada y pausa, y otras capacidades de supervisión. Para obtener más información, consulte Paquete Suplementario 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 característica de administración de contenedores HASH (0x2c1a078) 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 máquinas virtuales.

Paquete Suplementario 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 de Docker y qué contenedores de la máquina virtual se están ejecutando.

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

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 HASH (0x2e6c8e8) para iniciar, detener y pausar (si es compatible con el sistema operativo) contenedores de aplicaciones que permiten la terminación rápida de aplicaciones problemáticas.

Nota:

HASH (0x2c1a078) admite la instalación de paquetes complementarios mediante HASH (0x2e6c8e8). Para obtener información sobre cómo instalar un paquete complementario mediante HASH (0x2e6c8e8), consulte la Ayuda de HASH (0x2e6c8e8). Si prefiere instalar usando la CLI xe, consulte laHASH (0x2c1a078) Paquetes complementarios y la guía DDK.

Administrar contenedores Docker mediante HASH (0x2e6c8e8)

Esta sección contiene información sobre la administración de las máquinas virtuales CoreOS mediante HASH (0x2e6c8e8). Para administrar máquinas virtuales de CoreOS, siga los pasos siguientes:

  1. Instale o actualice su host a HASH (0x2c1a078).

  2. Instale el HASH (0x2e6c8e8) enviado con HASH (0x2c1a078).

  3. Instale el paquete complementario de administración de contenedores disponible en elSitio 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 HASH (0x2e6c8e8), el asistente de 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 HASH (0x2c1a078) para administrar contenedores que se ejecutan dentro de la máquina virtual, cree una unidad de configuración.

    De forma predeterminada, HASH (0x2e6c8e8) 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 requisitos. Para obtener información detallada sobre los parámetros de configuración admitidos, consulte la documentación de CoreOS.

    Advertencia:

    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 máquina virtual. Puede actualizar esta configuración en la ficha Propiedades de la máquina virtual en HASH (0x2e6c8e8).

Nota:

Si migra una máquina virtual administrada por contenedor entre grupos, Administración de contenedores 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 de grupo. Para volver a habilitar la funcionalidad de administración de contenedores para la máquina virtual, actualice la configuración de Cloud Config Drive en las preferencias de la máquina virtual.

Administrar contenedores en otros huéspedes de Linux

Las máquinas virtuales de CoreOS que se crean con la configuración predeterminada de Cloud Config Drive se preparan automáticamente para la administración de contenedores. Solo necesita habilitar la función. Otros huéspedes de Linux se pueden preparar manualmente. Esta funcionalidade é suportada apenas para máquinas virtuales Debian 8, Ubuntu 14.04 e RHEL/Centos/Oel 7.x.

Para preparar un invitado Linux manualmente:

  1. Asegúrese de que la máquina virtual tiene HASH (0x2e68170) instalado y de que la red de la máquina virtual está configurada como se describe enRequisitos de red y seguridad.

  2. Instale Docker, Ncat y SSHD dentro de la máquina virtual.

    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. Habilite el inicio automático 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 de la máquina virtual que utiliza la Administración de contenedores para el acceso de 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 contenedor entre grupos, Administración de contenedores 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 de grupo. Para habilitar de nuevo 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 HASH original (0x2e68218) podría mantener el acceso a la máquina virtual.

Acceder a la consola de Docker Container y a los registros

Para máquinas virtuales Linux, HASH (0x2e6c8e8) permite a los clientes acceder a la consola del contenedor y ver registros para administrar y supervisar aplicaciones que se ejecutan en contenedores Docker. Para acceder a la consola del contenedor y a los registros usando HASH (0x2e6c8e8):

  1. Seleccione 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 HASH (0x2e6c8e8).

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

    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.

Automatice el proceso de autenticación (opcional)

Al acceder a la consola del contenedor y a los registros, los clientes deben introducir las credenciales de inicio de sesión de la máquina virtual 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 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 pestaña General de la máquina virtual en HASH (0x2e6c8e8).
    • 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 la máquina que ejecuta HASH (0x2e6c8e8) y cambie el nombre de la clave comoContainerManagement.ppk .

Administrar contenedores de Windows Server

Los contenedores de Windows Server son 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. HASH (0x2c1a078) Administración de contenedores admite la supervisión y administración de contenedores de Windows Server en sistemas operativos invitados de Windows Server 2016.

Nota:

Las VM 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 máquina virtual tiene HASH (0x2e68170) instalado y de que la red de la máquina virtual está configurada como se describe enRequisitos de red y seguridad.

  2. Instale la compatibilidad con contenedores de Windows Server 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. Crear 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 comandos siguientes en el dominio de control (dom0) en uno de los hosts del grupo:

    Opción 1 (para máquinas virtuales de un solo usuario): HASH (0x2c1a078) genere certificados TLS para esta máquina virtual.

    Importante:

    Esta opción sólo es segura cuando solo un usuario tiene acceso a la máquina virtual. 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 HASH (0x2c1a078) 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 máquina virtual.

Requisitos de red y seguridad

Importante:

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

Para obtener la máxima seguridad de los entornos de virtualización, recomendamos que los administradores dividan la red aislando la red de administración de HASH (0x2c1a078) (con dominio de control HASH (0x2c1a078)) de las VM.

La activación de la administración de contenedores requiere una ruta entre estas dos redes, lo que aumenta el riesgo de que las máquinas virtuales malintencionadas atacen la red de administración (es decir, dom0). Para mitigar el riesgo de permitir el tráfico entre VM y la red de administración, recomendamos la configuración de reglas de firewall para permitir que solo 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

Particionamiento 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 HASH (0x2c1a078) para proporcionar el aislamiento necesario.

Para que la administración de contenedores funcione, las VM administradas deben ser accesibles desde el dominio de control de HASH (0x2c1a078) (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 VM administradas por contenedor. Para supervisar contenedores de Windows Server, la topología de red y los firewalls deben permitir conexiones de Docker TLS (puerto TCP de destino 2376) salientes de dom0 a VM 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 externo con estado. Este firewall debe ser configurado y configurado manualmente por un experto de acuerdo con su negocio específico y sus requisitos de seguridad.

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

Para proteger las conexiones entre las redes:

  • Evite todas las conexiones entre la red de administración HASH (0x2c1a078) (que incluye dom0) y la red de VM (que incluye las VM administradas por contenedor) de cualquier manera.

Agregue excepciones para habilitar Administración de contenedores:

  • Para supervisar el sistema operativo basado en Linux, permita que dom0 tenga conexiones SSH salientes (puerto TCP 22) (NEW y ESTABLECIDO) a VM administradas por contenedor.

  • Para supervisar contenedores de Windows Server, permita que dom0 tenga conexiones de Docker TLS (puerto TCP 2376) salientes (NEW y ESTABLECIDO) a VM administradas por contenedor.

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

Autenticación en sistemas operativos basados en Linux

Administración de contenedores de HASH (0x2c1a078) utiliza un par de claves RSA privado/público de 4096 bits específico del grupo para autenticarse en máquinas virtuales administradas por contenedor. La clave privada se almacena en el dominio de control HASH (0x2c1a078) (dom0). La clave pública respectiva 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 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 contenedor. Este acceso incluye las VM administradas actualmente y las VM administradas en el pasado.

La administración de contenedores de HASH (0x2c1a078) intenta llegar a las máquinas virtuales administradas por contenedor a través de cualquiera de las direcciones IP anunciadas por HASH (0x2e68170) que se ejecutan dentro de la máquina virtual. Después de una conexión inicial, HASH (0x2c1a078) almacena la clave pública de las máquinas virtuales administradas por contenedor y valida que la clave coincide en cualquier conexión posterior. Asegúrese de que solo se pueda contactar con la máquina virtual administrada por contenedor 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, recomendamos que los administradores confirmen la clave de host SSH que obtuvo la Administración de contenedores al realizar la primera conexión a la máquina virtual.

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

HASH (0x2c1a078) utiliza SSL o TLS para supervisar y controlar contenedores de Windows Server. En esta instancia, HASH (0x2c1a078) actúa como cliente SSL/TLS y las VM de Windows Server actúan como servidor SSL/TLS. Las claves se almacenan tanto en Dom0 como en la máquina virtual.

Importante:

  • La clave del 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 máquina virtual

Cuando HASH (0x2c1a078) Container Management genera certificados TLS y claves mediante la–generate-certs opción, se generan certificados temporales de CA, servidor y cliente para un grupo específico y VM. Los certificados usan sha256 hash y son válidos hasta 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 HASH (0x2c1a078) Container Management y Docker, tenga en cuenta los siguientes comportamientos:

  • Cambiar el nombre de un contenedor no activa la actualización de la vista Administración de contenedores. Además, en Ubuntu 14.04, la pausa o la despausa de un contenedor desde fuera de HASH (0x2e6c8e8) no activa la vista para actualizar. Este comportamiento puede significar que HASH (0x2e68218) puede no mostrar el estado de contenedor actual (renombrado/pausado). La causa subyacente es que la vista solo se actualiza después de las notificaciones de eventos 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.