Citrix Hypervisor

Containermanagement

Citrix Hypervisor enthält zwei neue Funktionen zur Verbesserung der Bereitstellungen von Docker Containers auf Citrix Hypervisor

  • Unterstützung für CoreOS Linux VMs und Konfigurieren von Cloud Config Drives

  • Container-Management für CoreOS, Debian 8 und RHEL/Centos/OEL 7

  • Vorschau der Containerverwaltung für Windows Server-Container unter Windows Server 2016 Technologievorschau

CoreOS ist eine minimalistische Linux-Distribution, die für das Hosting von Docker Anwendungen populär geworden ist. Das CoreOS Cloud Config Drive ermöglicht die Anpassung verschiedener Betriebssystemkonfigurationsoptionen. Wenn die Containerverwaltung auf einer VM aktiviert ist, erkennt Citrix Hypervisor alle Docker Container, die auf der VM ausgeführt werden.

Hinweis:

Weitere Informationen zum Installieren von CoreOS-Gästen, zum Konfigurieren von Cloud-Config-Parametern und zum Verwalten von Docker Containern finden Sie in der XenCenter-Dokumentation.

Der Container Management Supplemental Park ermöglicht Citrix Hypervisor die folgenden Aktionen:

  • Abfragen der VMs
  • Interagieren Sie mit Cloud-Konfigurationslaufwerken
  • Anwendungscontainer entdecken
  • Anzeigen von Anwendungscontainern in der Infrastrukturansicht von XenCenter.

XenCenter ermöglicht auch die Interaktion mit den Containern, um Start-, Stopp- und Pausevorgänge sowie andere Überwachungsfunktionen zu ermöglichen. Weitere Informationen finden Sie unter Container-Management-Ergänzungspaket.

Was ist Docker?

Docker ist eine offene Plattform für Entwickler und Systemadministratoren zum Erstellen, Ausliefern und Ausführen verteilter Anwendungen. Ein Docker Container umfasst nur die Anwendung und ihre Abhängigkeiten. Es läuft als isolierter Prozess im Benutzerbereich auf dem Host-Betriebssystem und teilt den Kernel und das Basisdateisystem mit anderen Containern. Weitere Informationen finden Sie unter https://www.docker.com/whatisdocker.

Hinweis:

Die Citrix Hypervisor Container-Verwaltungsfunktion ergänzt, ersetzt jedoch nicht die Docker Umgebung. Sie können eines der vielen verfügbaren Docker Verwaltungstools verwenden, um einzelne Docker Engine-Instanzen in den VMs zu verwalten.

Container-Management-Ergänzungspaket

Das Container-Management-Supplemental Pack bietet:

Überwachung und Sichtbarkeit: Ermöglicht Ihnen, zu sehen, welche VMs für Docker Hosting verwendet werden und welche Container auf der VM ausgeführt werden.

Diagnose: Der Zugriff auf grundlegende Containerinformationen wie weitergeleitete Netzwerkports und den Namen des ursprünglichen Docker Images wird bereitgestellt. Diese Funktion kann helfen, Untersuchungen zu Problemen zu beschleunigen, bei denen entweder die Infrastruktur- und Anwendungsschichten betroffen sind.

Leistung: Gibt einen Einblick in die Container, die auf dieser VM ausgeführt werden. Abhängig von den vom Betriebssystem bereitgestellten Informationen liefert es Informationen über die Prozesse und Anwendungen, die auf dem Container ausgeführt werden, sowie die verbrauchte CPU-Ressource.

Control Applications: Ermöglicht die Verwendung von XenCenter zum Starten, Beenden und Anhalten (sofern vom Betriebssystem unterstützt) von Anwendungscontainern, die eine schnelle Beendigung problematischer Anwendungen ermöglichen.

Hinweis:

Citrix Hypervisor unterstützt die Installation von Supplemental Packs mit XenCenter. Weitere Informationen zum Installieren eines Zusatzpakets mit XenCenter finden Sie im XenCenter-Dokumentation. Wenn Sie es vorziehen, die Xe CLI zu installieren, lesen Sie die Citrix Hypervisor Supplemental Packs und das DDK-Handbuch.

Verwalten von Docker Containern mithilfe von XenCenter

Dieser Abschnitt enthält Informationen zum Verwalten Ihrer CoreOS-VMs mit XenCenter. Führen Sie die folgenden Schritte aus, um CoreOS-VMs zu verwalten:

  1. Installieren oder aktualisieren Sie Ihren Host auf Citrix Hypervisor 8.2.

  2. Installieren Sie XenCenter, das im Lieferumfang von Citrix Hypervisor 8.2 enthalten ist.

  3. Installieren Sie das Container Management Supplemental Pack, das von Citrix Website.

  4. Erstellen Sie eine CoreOS-VM und schließen Sie ein Konfigurationslaufwerk für die VM ein.

    Wenn Sie eine CoreOS-VM in XenCenter erstellen, werden Sie vom Assistenten für neue VM aufgefordert, cloud-config-Parameter für Ihre VM anzugeben. Das Konfigurationslaufwerk stellt Benutzerdaten für die VM-Instanz bereit. Wenn Sie Citrix Hypervisor verwenden möchten, um Container zu verwalten, die innerhalb der VM ausgeführt werden, erstellen Sie ein Konfigurationslaufwerk.

    Standardmäßig enthält XenCenter einen vordefinierten Satz von Parametern auf der Seite “Cloud-Config-Parameter “. Sie können diese Parameter basierend auf Ihren Anforderungen ändern. Ausführliche Informationen zu unterstützten Konfigurationsparametern finden Sie in der CoreOS-Dokumentation.

    Warnung:

    Containerverwaltung funktioniert möglicherweise nicht, wenn Sie kein Konfigurationslaufwerk für die VM erstellen.

  5. Aktivieren Sie die Containerverwaltung für die VM. Sie können diese Einstellung auf der Registerkarte Eigenschaften der VM in XenCenter aktualisieren.

Hinweis:

Wenn Sie eine Container Managed VM zwischen Pools migrieren, funktioniert die Containerverwaltung nicht mehr für die VM. Dieses Verhalten liegt daran, dass die Containerverwaltung mithilfe eines poolspezifischen Schlüssels implementiert wird. Um die Container-Management-Funktionalität für die VM erneut zu aktivieren, aktualisieren Sie die Cloud Config Drive-Konfiguration in den VM-Voreinstellungen.

Verwalten von Containern auf anderen Linux-Gästen

CoreOS-VMs, die mit der standardmäßigen Cloud Config Drive-Konfiguration erstellt werden, werden automatisch für die Container-Verwaltung vorbereitet. Sie müssen nur die Funktion aktivieren. Andere Linux-Gäste können manuell vorbereitet werden. Diese Funktion wird nur für VMs von Debian 8 und RHEL/CentOS/OEL 7.x unterstützt.

So bereiten Sie einen Linux-Gast manuell vor:

  1. Stellen Sie sicher, dass auf der VM Citrix VM Tools für Linux installiert sind und dass das VM-Netzwerk wie unter beschrieben konfiguriert ist Netzwerkanforderungen und -sicherheit.

  2. Installieren Sie Docker, Ncat und SSHD in der VM.

    Für RHEL/Centos/OEL 7.x:

    yum install docker nmap openssh-server
    
  3. Aktivieren Sie Autostart für docker.service:

    systemctl enable docker.service
    
  4. Starten Sie docker.service

    systemctl start docker.service
    

    Verwenden Sie einen Nicht-Root-Benutzer für die Container-Verwaltung. Fügen Sie den Benutzer zur Gruppe ‘docker’ hinzu, um Zugriff auf Docker zu gewähren.

  5. Bereiten Sie die VM für die Containerverwaltung vor. Führen Sie den folgenden Befehl für die Steuerdomäne (dom0) auf einem der Hosts im Pool aus:

    xscontainer-prepare-vm -v vm_uuid -u username
    

    Wo vm_uuid ist die zu vorbereitende VM und username der Benutzername auf der VM, die die Containerverwaltung für den Verwaltungszugriff verwendet.

Das Vorbereitungsskript führt Sie durch den Prozess und aktiviert automatisch die Containerverwaltung für diese VM.

Hinweis:

Wenn Sie eine Container Managed VM zwischen Pools migrieren, funktioniert die Containerverwaltung nicht mehr für die VM. Dieses Verhalten liegt daran, dass die Containerverwaltung mithilfe eines poolspezifischen Schlüssels implementiert wird. Führen Sie den Befehl xscontainer-prepare-vm neu auf der VM aus, um die Container-Management-Funktionalität für die VM zu aktivieren. Auch nach dem Ausführen dieses Befehls behält der ursprüngliche Citrix Hypervisor -Pool möglicherweise den Zugriff auf die VM.

Zugriff auf die Docker Container-Konsole und die Protokolle

Bei Linux-VMs ermöglicht XenCenter Kunden den Zugriff auf die Containerkonsole und das Anzeigen von Protokollen zur Verwaltung und Überwachung von Anwendungen, die auf Docker Containern ausgeführt werden. So greifen Sie mit XenCenter auf die Containerkonsole und die Protokolle zu:

  1. Wählen Sie den Container im Bereich Ressourcen aus.

  2. Klicken Sie im Abschnitt Allgemeine Eigenschaften des Containers auf Ansichtskonsole, um die Containerkonsole anzuzeigen. Klicken Sie auf Protokoll anzeigen, um die Konsolenprotokolle anzuzeigen. Diese Aktion öffnet einen SSH-Client auf dem Computer, auf dem XenCenter ausgeführt wird.

  3. Melden Sie sich bei entsprechender Aufforderung am SSH-Client mit dem Benutzernamen und dem Kennwort der VM an.

    Hinweis:

    Kunden können den Authentifizierungsprozess automatisieren, indem sie ihre öffentlichen/privaten SSH-Schlüssel konfigurieren. Weitere Informationen finden Sie im folgenden Abschnitt.

Automatisieren des Authentifizierungsprozesses (optional)

Beim Zugriff auf die Containerkonsole und die Protokolle müssen Kunden die Anmeldeinformationen der VM eingeben, um SSH-Verbindungen zu authentifizieren. Kunden können jedoch den Authentifizierungsprozess automatisieren, um die Eingabe der Anmeldeinformationen zu vermeiden. Befolgen Sie die folgenden Anweisungen, um den automatischen Authentifizierungsprozess zu konfigurieren:

  1. Generieren Sie ein öffentliches/privates Schlüsselpaar.

  2. Fügen Sie den öffentlichen SSH-Schlüssel zum Benutzerverzeichnis auf der VM hinzu, auf der der Container ausgeführt wird.

    • Fügen Sie für Container, die auf einer CoreOS-VM ausgeführt werden, den öffentlichen Schlüssel zum Abschnitt Cloud-Config-Parameter auf der Registerkarte Allgemein der VM in XenCenter hinzu.
    • Für Container, die unter RHEL/CentOS/Oracle Linux 7 und Debian 8 ausgeführt werden, fügen Sie den öffentlichen Schlüssel manuell zu hinzu ~/.ssh/authorized_keys.
  3. Fügen Sie den privaten SSH-Schlüssel dem %userprofile% Verzeichnis auf dem Computer hinzu, auf dem XenCenter ausgeführt wird, und benennen Sie den Schlüssel um ContainerManagement.ppk.

Verwalten von Windows Server-Containern

Windows Server-Container sind Teil des Windows Server 2016-Gastbetriebssystems. Sie ermöglichen die Kapselung von Windows-Anwendungen, indem Prozesse in ihren eigenen Namespace isoliert werden. Citrix Hypervisor Container Management unterstützt die Überwachung und Verwaltung von Windows Server-Containern unter Windows Server 2016-Gastbetriebssystemen.

Hinweis:

Windows Server 2016-VMs müssen mit einer oder mehreren statischen IP-Adressen für die TLS-Kommunikation konfiguriert werden, da TLS-Serverzertifikate an bestimmte IP-Adressen gebunden sind.

So bereiten Sie Windows Server-Container für die Containerverwaltung vor:

  1. Stellen Sie sicher, dass auf der VM Citrix VM Tools für Windows installiert sind und dass das VM-Netzwerk wie unter beschrieben konfiguriert ist Netzwerkanforderungen und -sicherheit.

  2. Installieren Sie die Windows Server-Container-Unterstützung in der VM, wie unter beschrieben Microsoft-Dokumentation. Windows Server-Container sind keine Hyper-V-Container.

  3. Erstellen Sie eine Datei, die daemon.json im Ordner C:\ProgramData\docker\config mit dem Inhalt aufgerufen wird:

    {
        "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. Bereiten Sie die VM für die Containerverwaltung vor. Führen Sie einen der folgenden Befehle für die Steuerdomäne (dom0) auf einem der Hosts im Pool aus:

    Option 1 (für VMs mit Einzelbenutzern): Lassen Sie Citrix Hypervisor TLS-Zertifikate für diese VM generieren.

    Wichtig:

    Diese Option ist nur dann sicher, wenn nur ein einzelner Benutzer Zugriff auf die VM hat. Der TLS-Server und die Clientschlüssel werden mithilfe einer virtuellen CD in die VM eingefügt. Diese Informationen können von böswilligen Benutzern während der Vorbereitung kopiert werden.

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

    Wobei vm_uuid die zu vorbereitende VM ist. Folgen Sie den Anweisungen auf dem Bildschirm, um die Vorbereitung von Windows Server-Containern abzuschließen. Es beinhaltet die Interaktion mit dom0 und der VM.

    Option 2: So konfigurieren Sie Citrix Hypervisor mit extern generierten TLS-Zertifikaten

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

    Wobei vm_uuid die zu vorbereitende VM ist, client_cert das TLS-Clientzertifikat, client_key ist der TLS-Clientschlüssel und ca_cert das Zertifizierungsstellenzertifikat. Bei dieser Option wird davon ausgegangen, dass Docker bereits für TLS innerhalb der VM konfiguriert ist.

Netzwerkanforderungen und -sicherheit

Wichtig:

Damit das Container-Management funktioniert, kann es notwendig sein, die Sicherheitsanforderungen bezüglich der Netzwerkisolierung zu lockern.

Für maximale Sicherheit von Virtualisierungsumgebungen wird empfohlen, dass Administratoren das Netzwerk partitionieren, indem sie das Verwaltungsnetzwerk von Citrix Hypervisor (mit Citrix Hypervisor Control Domain) von den VMs isolieren.

Die Aktivierung der Containerverwaltung erfordert eine Route zwischen diesen beiden Netzwerken, wodurch das Risiko von bösartigen VMs erhöht wird, dass das Verwaltungsnetzwerk (d. h. dom0) angegriffen wird. Um das Risiko zu minimieren, dass Datenverkehr zwischen VM und dem Verwaltungsnetzwerk zugelassen wird, empfehlen wir die Konfiguration von Firewall-Regeln, damit nur vertrauenswürdige Quellen eine Verbindung zwischen den beiden Netzwerken herstellen können.

Verwenden Sie diese Funktion in den folgenden Fällen nicht in der Produktion:

  • Wenn diese empfohlene Netzwerkkonfiguration nicht mit Ihrem Risikoprofil übereinstimmt
  • Wenn Ihnen die erforderliche Netzwerk- oder Firewall-Expertise fehlt, um diese Route ausreichend für Ihren speziellen Anwendungsfall zu sichern

Netzwerkpartitionierung und Firewalls

Verbinden Sie wie bei anderen VMs keine Container-verwalteten VMs direkt mit dem Verwaltungsnetzwerk von Citrix Hypervisor, um die erforderliche Isolation zu gewährleisten.

Damit die Containerverwaltung funktioniert, müssen verwaltete VMs über die Controldomäne von Citrix Hypervisor (dom0) erreichbar sein. Um Container auf Linux-basierten Betriebssystemen zu überwachen, müssen die Netzwerktopologie und Firewalls ausgehende SSH-Verbindungen von dom0 zu Container-verwalteten VMs zulassen. Um Windows Server-Container zu überwachen, müssen die Netzwerktopologie und Firewalls ausgehende Docker TLS-Verbindungen (Ziel-TCP-Port 2376) von dom0 zu Container-verwalteten VMs zulassen.

Um das Risiko zu minimieren, dass Datenverkehr zwischen VM und dem Verwaltungsnetzwerk zugelassen wird, übergeben Sie den gesamten Datenverkehr über eine externe statusbehaftete Firewall. Diese Firewall muss manuell von einem Experten entsprechend Ihrer geschäftlichen und sicherheitstechnischen Anforderungen eingerichtet und konfiguriert werden.

Der folgende Abschnitt enthält eine Beispielkonfiguration:

So sichern Sie Verbindungen zwischen den Netzwerken:

  • Verhindern Sie alle Verbindungen zwischen dem Citrix Hypervisor Verwaltungsnetzwerk (einschließlich dom0) und dem VM-Netzwerk (einschließlich containerverwalteter VMs) in beiden Fällen.

Fügen Sie Ausnahmen für die Aktivierung der Container-Verwaltung hinzu:

  • Um Linux-basiertes Betriebssystem zu überwachen, erlauben Sie dom0, ausgehende SSH-Verbindungen (TCP-Port 22) zu Container-verwalteten VMs zu haben (NEW und ESTABLISHED).

  • Um Windows Server-Container zu überwachen, lassen Sie dom0 ausgehende Docker TLS-Verbindungen (TCP-Port 2376) zu Container-verwalteten VMs (NEW und ESTABLISHED) zu.

  • Container-verwaltete VMs erlauben, auf (ESTABLISHED) SSH- und Docker TLS-Verbindungen zu antworten, die von dom0 initiiert wurden.

Authentifizierung auf Linux-basierten Betriebssystemen

Die Containerverwaltung von Citrix Hypervisor verwendet ein poolspezifisches 4096-Bit-privates/öffentliches RSA-Key-Paar, um sich auf Container-verwalteten VMs zu authentifizieren. Der private Schlüssel wird in der Citrix Hypervisor -Steuerdomäne (dom0) gespeichert. Der jeweilige öffentliche Schlüssel wird während der Vorbereitung in Container Managed VMs registriert, entweder mit dem Cloud Config Drive oder der ~user/.ssh/authorized_keys Datei. Wie bei allen privaten und öffentlichen Schlüsselpaaren üblich, muss der private Schlüssel sicher aufbewahrt werden, da er einen kennwortlosen Zugriff auf alle Container Managed VMs ermöglicht. Dieser Zugriff umfasst sowohl derzeit verwaltete VMs als auch in der Vergangenheit verwaltete VMs.

Die Containerverwaltung von Citrix Hypervisor versucht, Container Managed VMs über eine der IP-Adressen zu erreichen, die von den Citrix VM-Tools in der VM angekündigt werden. Nach einer ersten Verbindung speichert Citrix Hypervisor den öffentlichen Schlüssel von Container-verwalteten VMs und überprüft, ob der Schlüssel bei jeder nachfolgenden Verbindung übereinstimmt. Stellen Sie sicher, dass nur die Container-verwaltete VM über die angekündigte IP kontaktiert werden kann (mit IP Source Guard oder ähnlichen Mitteln). Wenn die Netzwerktopologie dieses Verhalten nicht gewährleisten kann, empfehlen wir Administratoren, den SSH-Hostschlüssel zu bestätigen, den die Containerverwaltung beim Herstellen der ersten Verbindung mit der VM erhalten hat.

Auf den Schlüssel kann mit dem folgenden Befehl zugegriffen werden:

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

vm_uuid ist die UUID der VM

Authentifizierung für Windows Server-Container

Citrix Hypervisor verwendet TLS, um Windows Server-Container zu überwachen und zu steuern. In diesem Fall fungiert Citrix Hypervisor als TLS-Client, und Windows Server-VMs fungieren als TLS-Server. Schlüssel werden sowohl in Dom0 als auch in der VM gespeichert.

Wichtig:

  • Der Clientschlüssel muss sicher aufbewahrt werden, da er einen kennwortlosen Zugriff auf Docker auf der VM ermöglicht
  • Der Serverschlüssel muss sicher aufbewahrt werden, da er zur Authentifizierung der Überwachungsverbindung zur VM dient.

Wenn Citrix Hypervisor Container Management TLS-Zertifikate und -Schlüssel mit der –generate-certs Option generiert, werden temporäre Zertifizierungsstellen-, Server- und Clientzertifikate für einen bestimmten Pool und eine VM generiert. Zertifikate verwenden sha256-Hash und sind bis zu 2*365 Tage gültig. Nach dieser Zeit wiederholen Sie die Vorbereitung. Die TLS-Verbindung wird immer mit einer AES128-SHA-Chiffre hergestellt.

Notizen

Beachten Sie bei der Verwendung von Citrix Hypervisor Container Management und Docker die folgenden Verhaltensweisen:

  • Durch das Umbenennen eines Containers wird die Containerverwaltungsansicht nicht aktualisiert. Dieses Verhalten kann bedeuten, dass Citrix Hypervisor möglicherweise nicht den aktuellen Container-Status (umbenannt/pausiert/nicht angehalten) anzeigt. Die zugrunde liegende Ursache ist, dass die Ansicht nur nach Docker Ereignisbenachrichtigungen aktualisiert wird. Als Problemumgehung kann die Aktualisierung ausgelöst werden, indem eine Aktion (d. h. Starten oder Stoppen) für einen nicht verwandten Container auf derselben VM ausgeführt wird.