Sie können fleetctl und Skriptdateien verwenden, um Ihre Containeranwendungen auf CoreOS bereitzustellen. Die Verwendung von XL Deploy zur Automatisierung der Bereitstellung ist jedoch eine großartige Lösung, wenn Sie viele Anwendungen bereitstellen und deren Versionen verfolgen müssen. Was brauchen Sie, um ein XL Deploy-Plugin zu erstellen, mit dem Sie diese Container-Anwendungen auf Ihren CoreOS-Clustern bereitstellen können? XL Deploy kann mit benutzerdefinierten Plugins erweitert werden, die zusätzliche Einsatzmöglichkeiten bieten. Mit XL Rules lassen sich benutzerdefinierte Plugins schnell und mit wenig Aufwand erstellen. In diesem Blog lesen Sie, wie ein Plugin innerhalb weniger Stunden erstellt werden kann.
In einer Reihe von Blogbeiträgen hat Mark van Holsteijn erklärt, wie Sie mit CoreOS und Consul eine hochverfügbare Docker-Container-Plattform erstellen können. In diesen Beiträgen werden Shell-Skripte (mit fleetctl-Befehlen) zur Bereitstellung von Container-Anwendungen verwendet. Auf der Grundlage dieser Skripte habe ich ein XL Deploy-Plugin erstellt, das Konfigurationsdateien für Flotteneinheiten auf einem CoreOS-Cluster bereitstellt.
Die Bereitstellung dieser Container-Anwendungen mit XL Deploy hat eine Reihe von Vorteilen:
- Docker-Container können bereitgestellt werden, ohne dass Skripte für einzelne Anwendungen erstellt, angepasst und gepflegt werden müssen.
- XL Deploy verfolgt die auf den CoreOS-Clustern bereitgestellten Anwendungen und erstellt entsprechende Berichte.
- Weitere Einsatzszenarien können mit geringem Aufwand hinzugefügt werden.
- Die Einsätze sind konsistent und die Konfiguration wird in verschiedenen Umgebungen verwaltet.
- XL Deploy-Berechtigungen können verwendet werden, um den (direkten) Zugriff auf den/die CoreOS-Cluster zu kontrollieren.
Die Erstellung eines XL Deploy-Plugins geht schnell, denn Sie können:
- Verwenden Sie vorhandene XL Deploy-Funktionen, wie das Overthere-Plugin.
- Nutzen Sie die XL Deploy-Vorlagenverarbeitung, um Eigenschaftswerte in Regeln und Deployment-Skripte zu integrieren.
- Nutzen Sie das vereinheitlichte Bereitstellungsmodell von XL Deploy, um die Deltas zu erhalten, die die erforderlichen fleetctl-Bereitstellungsbefehle für jede Art der Bereitstellung (neue, aktualisierte, rückgängig gemachte und Rollback-Bereitstellungen) steuern.
- Verwenden Sie xml- und skriptbasierte Regeln zur Erstellung von Verteilungsaufgaben.
Erste Schritte
- Installieren Sie XL Deploy. Sie können eine kostenlose Version hier herunterladen. Wenn Sie mit XL Deploy nicht vertraut sind, lesen Sie die Dokumentation zu den ersten Schritten.
- Als nächstes fügen Sie die Plugin-Ressourcen in das ext-Verzeichnis Ihrer XL Deploy-Installation ein. Sie finden die Plugin-Ressourcen in diesem Github-Repository. Fügen Sie die Dateien synthetic.xml und xl-rules.xml aus dem Stammverzeichnis des Repositorys hinzu. Fügen Sie außerdem das Verzeichnis scripts und dessen Inhalt hinzu. Starten Sie XL Deploy neu.
- Als nächstes richten Sie einen CoreOS-Cluster ein. Dieser Blogbeitrag erklärt, wie Sie eine solche Plattform lokal einrichten können.
- Jetzt können Sie über Ihren Browser eine Verbindung zu XL Deploy herstellen. Auf der Registerkarte Bereitstellung können Sie die Beispielanwendung importieren, die sich im Ordner sample-app des Github-Repository für Plugin-Ressourcen befindet
- Sie können nun den Ziel-Container für die Bereitstellung auf der Grundlage des Konfigurationselementtyps Overthere.SshHost einrichten. Vergewissern Sie sich, dass Sie über diesen XL Deploy Container eine Verbindung zu Ihrem CoreOS-Cluster herstellen können.
- Als nächstes können Sie eine XL Deploy-Umgebung einrichten, die Ihren Ziel-Container für die Bereitstellung enthält.
- Jetzt können Sie die Registerkarte Bereitstellung verwenden, um Ihre Anwendungen mit Flottenkonfigurationsdateien bereitzustellen und die Bereitstellung rückgängig zu machen.
Erstellung des Plugins Das Plugin besteht aus zwei xml-Dateien und einer Reihe von Skriptdateien. Im Folgenden finden Sie eine Beschreibung der Schritte zur Implementierung des Plugins. Die Bereitstellung von CoreOS-Containeranwendungen basiert auf Konfigurationsdateien für Flotteneinheiten. Daher erstellen wir zunächst eine XL Deploy-Konfiguration Elementtyp-Definition, die eine solche Datei darstellt. Dieser XL Deploy-Einsatztyp wird in der Datei XL Deploy synthetic.xml definiert. Der Ausschnitt unten zeigt den Inhalt dieser Datei. Ich habe den Namen "fleet.DeployedUnit" vergeben.
Die Definition enthält ein Attribut container-type. Der Container Overthere.SshHost wird referenziert. Das Plugin kann einfach den Containertyp Overthere.SshHost verwenden, um sich mit dem CoreOS-Cluster zu verbinden und Flottenbefehle auszuführen. Außerdem habe ich zwei Eigenschaften hinzugefügt. Eine Eigenschaft, mit der Sie die Anzahl der Instanzen angeben können. Beachten Sie, dass XL Deploy Dictionaries verwendet werden können, um die Anzahl der Instanzen für jede Umgebung separat festzulegen. Die zweite Eigenschaft ist ein Flag, das steuert, ob die Instanzen gestartet (oder nur eingereicht und geladen) werden sollen. Wenn Sie eine Flottenkonfigurationsdatei mit fleetctl bereitstellen möchten, können Sie die folgenden drei Befehle eingeben: submit, load und start. In dem Plugin habe ich für jeden dieser fleetctl-Befehle eine eigene Skriptdatei erstellt. Die Bildunterschrift unten zeigt die Skriptdatei zum Laden einer Flottenkonfigurationsdatei. Dieses Ladeskript verwendet die Eigenschaft Dateiname und die Eigenschaft numberOfInstances des Konfigurationselements "fleet.DeployedUnit".
Schließlich kann das Plugin mit XML-basierten Regeln vervollständigt werden, die die Bereitstellungsschritte erstellen. Die Bildunterschrift unten zeigt die Regel, die Schritte hinzufügt, um [1] die Einheitenkonfiguration zu übermitteln und [2] die Einheit zu laden, wenn (eine Version von) der Anwendung bereitgestellt wird.
Mithilfe von Regeln können Sie ganz einfach Logik definieren, um Verteilungsschritte hinzuzufügen. Diese Schritte können den Befehlen, die Sie mit fleetctl ausführen, sehr ähnlich sein. Für dieses Plugin habe ich nur xml-basierte Regeln verwendet. Mit Skriptregeln können Sie Ihrem Plugin mehr Intelligenz hinzufügen. Zum Beispiel kann die Logik des Neustart-Skripts in Regeln und feiner abgestufte Bereitstellungsschritte umgewandelt werden. Weitere Informationen Wenn Sie daran interessiert sind, Ihr eigenes XL Deploy-Plugin zu erstellen, finden Sie in der XL Deploy-Produktdokumentation Anleitungen, die Ihnen den Einstieg erleichtern. Wenn Sie wissen möchten, wie Sie mit CoreOS und Consul eine hochverfügbare Docker-Container-Plattform erstellen können, sind die folgenden Blogs ein guter Ausgangspunkt:
Verfasst von
Thomas Kruitbosch
Unsere Ideen
Weitere Blogs
Contact



