So richten Sie einen Deis-Cluster auf DigitalOcean ein

Einführung

Deis ist eine private Open Source-Plattform als Service (PaaS), die die Bereitstellung und Verwaltung Ihrer Anwendungen auf Ihren eigenen Servern vereinfacht. Durch den Einsatz von Technologien wie Docker und CoreOS bietet Deis einen Workflow und Skalierungsfunktionen, die denen von Heroku bei einem Hosting-Anbieter Ihrer Wahl ähnlich sind. Deis unterstützt Anwendungen, die in einem Docker-Container ausgeführt werden können, und kann auf jeder Plattform ausgeführt werden, die CoreOS unterstützt.

In diesem Tutorial zeigen wir Ihnen, wie Sie Ihr eigenes Deis-Plattform-Cluster mit drei Maschinen auf DigitalOcean einrichten.

Voraussetzungen

Um dieses Handbuch zu vervollständigen, benötigen Sie Folgendes:

  • Die Möglichkeit, mindestens * 3 Droplets * mit mindestens * 4 GB Speicher * und * 40 GB Speicherplatz * zu erstellen. Dies sind die CoreOS-Maschinen, auf denen die Deis-Plattform installiert wird

  • SSH-Schlüssel zum Hinzufügen zu den Tröpfchen, die zur Authentifizierung bei Verwendung des Werkzeugs "+ deisctl +" verwendet werden

  • SSH-Schlüssel zur Authentifizierung gegenüber dem Builder von Deis

  • Eine Domain, die auf die Cluster-Maschinen verweist, verwendet in diesem Tutorial "+ example.com +" als Domain. Eine Alternative ist die Verwendung von http://xip.io [xip]

Dieses Tutorial basiert stark auf Einrichten eines CoreOS-Clusters auf DigitalOcean. Lesen Sie den Artikel, wenn Sie Probleme beim Erstellen eines CoreOS-Clusters haben.

Wir werden auch das Deis Control Utility, + deisctl + und das Deis installieren client, + deis +, auf einem lokalen Mac OS X-Computer, aber Sie können sie auf Wunsch auch an anderer Stelle installieren, z. B. in einem Ubuntu 14.04-Droplet. Der private SSH-Schlüssel, der dem öffentlichen SSH-Schlüssel entspricht, der zum Erstellen der CoreOS-Droplets verwendet wird, muss auf dem Computer vorhanden sein, auf dem "+ deisctl +" installiert ist.

Generieren Sie eine neue Erkennungs-URL

Um den CoreOS-Cluster zu erstellen, auf dem die Deis-Plattform installiert werden soll, müssen Sie zunächst eine neue Erkennungs-URL generieren, eine eindeutige Adresse, in der CoreOS-Peer-Adressen und -Metadaten gespeichert sind. Der einfachste Weg, dies zu tun, ist die Verwendung von "+ https: // discovery.etcd.io ", einem kostenlosen Discovery-Service. Eine neue Erkennungs-URL durch Aufrufen von https://discovery.etcd.io/new?size=3 in einem Webbrowser oder durch Ausführen des folgenden Befehls " curl +":

curl -w "\n" "https://discovery.etcd.io/new?size=3"

Bei beiden Methoden wird eine eindeutige und aktuelle Erkennungs-URL zurückgegeben, die etwa wie folgt aussieht (der hervorgehobene Teil ist ein eindeutiges Token):

https://discovery.etcd.io/

Sie verwenden die resultierende Erkennungs-URL, um Ihren neuen Deis-Plattform-Cluster zu erstellen. Die gleiche Erkennungs-URL muss im Abschnitt "+ etcd +" der Cloud-Konfiguration jedes CoreOS-Servers angegeben werden, den Sie einem bestimmten Deis-Plattform-Cluster hinzufügen möchten.

Nachdem wir nun eine Erkennungs-URL haben, wollen wir sie der "+ cloud-config +" hinzufügen, mit der wir jeden Rechner unseres Deis-Clusters erstellen.

Deis Benutzerdaten

Um einen Cluster von CoreOS-Maschinen zu erstellen, der in unserem Deis-Cluster verwendet werden soll, verwenden wir eine spezielle "+ cloud-config +" - Datei, die von den Betreuern von Deis bereitgestellt wird. Diese Datei ist im Deis GitHub-Repository verfügbar:

Öffnen Sie die angegebenen Benutzerdaten in einem Texteditor und suchen Sie die Zeile, in der die Discovery-URL definiert ist. Es wird so aussehen:

       --discovery

Entfernen Sie das Kommentarzeichen und ersetzen Sie das hervorgehobene "+ # DISCOVERY_URL +" durch die eindeutige Erkennungs-URL, die Sie im vorherigen Schritt generiert haben.

Dieses Tutorial basiert auf Deis 1.9.0, die in den Beispielbenutzerdaten angegebene Version könnte jedoch aktueller sein. Suchen Sie nach der folgenden Zeile (die hervorgehobenen Zahlen stehen für die Version):

ExecStart=/usr/bin/sh -c 'curl -sSL --retry 5 --retry-delay 2 http://deis.io/deisctl/install.sh | sh -s '

Notieren Sie sich die Versionsnummer. Stellen Sie sicher, dass Sie die Version in den Benutzerdaten verwenden, wenn Sie "+ deisctl " und " deis +" in den folgenden Schritten installieren.

Sie können diese Benutzerdatendatei auf Wunsch irgendwo speichern.

Erstellen Sie CoreOS-Droplets

Nachdem wir die Benutzerdaten haben, die wir verwenden werden, erstellen wir jetzt die CoreOS-Maschinen. Wenn Sie nicht wissen, wie Sie während der Droplet-Erstellung eine + cloud-config + - Datei über user data bereitstellen, lesen Sie bitte https://www.digitalocean.com/community/tutorials/how-to-set-up-a -coreos-cluster-on-digitalocean # Gewusst wie: Cloud-Config-on-Digitalocean bereitstellen Abschnitt [Bereitstellen von Cloud-Config] in unserem CoreOS-Cluster-Lernprogramm.

Erstellen Sie mindestens drei Tröpfchen * in derselben Region * mit den folgenden Spezifikationen:

  • Mindestens * 4 GB Speicher * und * 40 GB Speicherplatz *

  • * Privates Netzwerk * ​​aktiviert, falls verfügbar. Wenn in Ihrer ausgewählten Region kein privates Netzwerk verfügbar ist, bearbeiten Sie die Benutzerdaten und ersetzen Sie jedes Vorkommen von "+ $ private_ipv4 " durch " $ public_ipv4 +"

  • * Benutzerdaten aktivieren * und Benutzerdaten aus dem vorherigen Schritt eingeben

  • Wählen Sie als Linux-Distribution * CoreOS Stable Channel *

  • Wählen Sie Ihren SSH-Schlüssel aus der Liste aus

Wenn Sie die Droplets lieber mit dem Hilfsprogramm "+ docl +" bereitstellen möchten, befolgen Sie die Anweisungen unter here.

Sobald Sie mindestens drei dieser Maschinen erstellt haben, sollten Sie über einen CoreOS-Cluster verfügen, der für die Installation der Deis-Plattform bereit ist. Fahren wir mit der Einrichtung des DNS fort.

DNS konfigurieren

Deis benötigt einen Wildcard-DNS-Eintrag, um richtig zu funktionieren. Wenn die von Ihnen verwendete Top-Level-Domain (TLD) "+ example.com " ist, sind Ihre Anwendungen auf der Ebene " *. Example.com " vorhanden. Zum Beispiel kann auf eine Anwendung namens "app" über " app.example.com +" zugegriffen werden.

Eine Möglichkeit, dies auf DigitalOcean zu konfigurieren, besteht darin, Round-Robin-DNS über das DNS-Kontrollfeld einzurichten. Fügen Sie dazu Ihrer Domain die folgenden Datensätze hinzu:

  • Ein Platzhalter-CNAME-Eintrag auf Ihrer Top-Level-Domain, d. H. Ein CNAME-Eintrag mit "+ * " als Namen und " @ +" als kanonischem Hostnamen

  • Für jede erstellte CoreOS-Maschine wird ein A-Datensatz erstellt, der auf die TLD verweist, d. H. ein A-Record mit dem Namen "+ @ +" und der öffentlichen IP-Adresse des Droplets

Die Zonendatei enthält nun die folgenden Einträge: (Ihre IP-Adressen unterscheiden sich)

DNS Records 1 of 2*   CNAME   @
@   IN A
@   IN A
@   IN A

In diesem Beispiel ist der Deis Router / Controller über + deis.example.com + erreichbar.

Zur Vereinfachung können Sie auch DNS-Einträge für jeden Knoten einrichten:

DNS Records 2 of 2deis-1  IN A
deis-2  IN A
deis-3  IN A

Wenn Sie Hilfe bei der Verwendung des DNS-Kontrollfelds benötigen, lesen Sie this tutorial.

Mit xip.io

Wenn Sie keine eigene Domain einrichten möchten, können Sie "+ xip.io +" verwenden, um Ihr Wildcard-DNS bereitzustellen. Grundsätzlich können Sie die IP-Adresse Ihres Droplets, an die ".xip.io" angehängt ist, als Platzhalterdomäne verwenden, die in die IP-Adresse aufgelöst wird.

Nachdem Sie die Deis-Plattform auf Ihrem Cluster installiert haben, bestimmen Sie, auf welcher CoreOS-Maschine die Einheit + deis-router @ 1.service + mit + deisctl list + -wir installieren + deisctl + im nächsten Abschnitt. Bestimmen Sie dann die öffentliche IP-Adresse dieses Computers. Wenn es "+ 104.131.47.125" ist, können Sie die folgende Domain verwenden, um den Deis-Router zu erreichen:

xip.io exampledeis..xip.io

Übernehmen Sie die Sicherheitsgruppeneinstellungen

Für DigitalOcean Droplets sind standardmäßig keine Firewalls aktiviert. Daher sollten wir einige "+ iptables +" - Regeln hinzufügen, um sicherzustellen, dass unsere Komponenten für Außenstehende nicht zugänglich sind. Das Deis-Repository bietet ein Skript, das genau das kann: here.

curl -O https://raw.githubusercontent.com/deis/deis/master/contrib/util/custom-firewall.sh

Nachdem Sie den Inhalt des Skripts überprüft haben, führen Sie es auf jedem Ihrer Server aus. Mit den zuvor erstellten DNS-Einträgen würden wir beispielsweise die folgenden Befehle ausführen:

ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh

Stellen Sie sicher, dass das Skript auf allen Servern ausgeführt wird.

Installieren Sie Deis Tools

Nachdem wir den CoreOS-Cluster eingerichtet haben, installieren wir das Dienstprogramm und den Client von Deis Control. Sie sollten diese Tools auf dem Computer installieren, von dem aus Sie Ihren Deis-Cluster steuern möchten. Wir werden die Installation auf einem separaten Ubuntu 14.04-Droplet demonstrieren, aber Sie können sie überall installieren, wo Sie möchten.

Installieren Sie Deis Control Utility

Mit dem Deis Control Utility können Sie mit den Deis-Maschinen interagieren und die Deis-Plattform auf dem Cluster installieren.

Wechseln Sie in das Verzeichnis, in dem Sie die Binärdatei + deisctl + installieren möchten. Installieren Sie dann das Deis Control Utility, indem Sie das Installationsskript mit dem folgenden Befehl herunterladen und ausführen (ersetzen Sie die Version durch die Nummer, die in den Benutzerdaten gefunden wurde):

/bin/bash -c 'curl -sSL http://deis.io/deisctl/install.sh | sh -s '

Dies installiert "+ deisctl +" in das aktuelle Verzeichnis und aktualisiert die Deis-Unit-Dateien.

Verknüpfen wir es mit "+ / usr / local / bin", so dass es in Ihrem "+ PATH" steht:

sudo ln -fs $(pwd)/deisctl /usr/local/bin/deisctl

Jetzt können Sie den Befehl + deisctl + verwenden.

Installieren Sie den Deis Client

Der Deis-Client, auch Deis-Befehlszeilenschnittstelle genannt, ermöglicht die Interaktion mit der Deis-Steuereinheit.

Wechseln Sie in das Verzeichnis, in dem Sie die Binärdatei + deis + installieren möchten. Installieren Sie den Deis-Client, indem Sie das Installationsskript mit dem folgenden Befehl herunterladen und ausführen (ersetzen Sie die Version durch die Nummer, die in den Benutzerdaten gefunden wurde):

/bin/bash -c 'curl -sSL http://deis.io/deis-cli/install.sh | sh -s '

Dadurch wird + deis + installiert, der Client für das aktuelle Verzeichnis. Verknüpfen wir es mit "+ / usr / local / bin", so dass es in Ihrem "+ PATH" steht:

sudo ln -fs $(pwd)/deis /usr/local/bin/deis

Der Deis-Client ist installiert. Jetzt können Sie den Befehl + deis + verwenden.

Provision Deis Platform

Ab dem Computer, auf dem Sie die Deis-Tools installiert haben, stellen wir die Deis-Plattform bereit.

Stellen Sie sicher, dass Ihr SSH-Agent ausgeführt wird (und wählen Sie den privaten Schlüssel aus, der den SSH-Schlüsseln entspricht, die Ihren CoreOS-Droplets hinzugefügt wurden):

eval `ssh-agent -s`
ssh-add ~/.ssh/

Als nächstes müssen wir das + DEISCTL_TUNNEL + exportieren, um auf einen unserer Deis-Rechner mit Namen oder öffentlicher IP-Adresse zu verweisen. Wenn Sie die bequemen DNS-Einträge eingerichtet haben, können Sie einen dieser Einträge für den Tunnel verwenden. Zum Beispiel:

export DEISCTL_TUNNEL=

Hier versucht + deisctl + mit dem Cluster zu kommunizieren. Sie können testen, ob es richtig funktioniert, indem Sie "+ diesel list" ausführen. Wenn eine einzelne Ausgabezeile angezeigt wird, kommuniziert das Steuerungsdienstprogramm mit dem angegebenen CoreOS-Computer.

Bevor Sie die Plattform bereitstellen, müssen Sie einen SSH-Schlüssel zu Deis hinzufügen, damit die Verbindung zu den Remote-Hosts während "+ deis run +" hergestellt werden kann:

deisctl config platform set sshPrivateKey=~/.ssh/

Außerdem müssen wir dem Controller mitteilen, unter welchem ​​Domainnamen wir Anwendungen bereitstellen:

deisctl config platform set domain=

Verwenden Sie nach Ausführung der vorherigen Konfigurationsbefehle diesen Befehl, um die Deis-Plattform bereitzustellen:

deisctl install platform

Es wird die folgende Ausgabe angezeigt, die angibt, dass die zum Ausführen von Deis erforderlichen Einheiten im CoreOS-Cluster geladen wurden:

Install Output:● ▴ ■
■ ● ▴ Installing Deis...
▴ ■ ●
Storage subsystem...
deis-store-metadata.service: loaded
...
Done.

Please run `deisctl start platform` to boot up Deis.

Führen Sie diesen Befehl aus, um die Deis-Plattform zu starten:

deisctl start platform

Sobald Sie "Deis gestartet" sehen, wird Ihre Deis-Plattform auf einem Cluster ausgeführt!

Sie können überprüfen, ob alle Deis-Einheiten geladen und aktiv sind, indem Sie den folgenden Befehl ausführen:

deisctl list

Alle Einheiten sollten aktiv sein.

Installiere Deis-store-admin (Optional)

Sie können die Komponente + deis-store-admin + installieren, bevor Sie fortfahren. Dies ist häufig hilfreich bei der Diagnose von Speicherproblemen.

Führen Sie die folgenden Befehle aus, um die Komponente zu installieren:

deisctl install store-admin
deisctl start store-admin

Nachdem Sie die Bereitstellung eines Clusters abgeschlossen haben, registrieren Sie einen Deis-Administrator, um mit der Nutzung der Plattform zu beginnen.

Registrieren Sie einen Deis-Benutzer

Nachdem die Deis-Plattform ausgeführt wird, müssen wir einen Benutzer mit dem Befehl "+ deis " registrieren. Der Befehl ` deis ` kommuniziert mit der Deis-Steuerung über die _router_-Einheit, auf die in unserem Beispiel unter ` deis.example.com +` zugegriffen werden kann:

deis register http://deis.

Sie werden aufgefordert, einen * Benutzernamen *, ein * Passwort * und eine * E-Mail-Adresse * einzugeben. Nach der Bereitstellung dieser Elemente werden Sie automatisch auf der Deis-Plattform angemeldet.

Fügen Sie als nächstes den richtigen SSH-Schlüssel zu + deis + hinzu. Geben Sie den folgenden Befehl ein:

deis keys:add

Sie werden aufgefordert, einen SSH-Schlüssel aus den verfügbaren Schlüsseln auszuwählen. Wählen Sie den Schlüssel aus, den Sie hinzufügen möchten.

Loggen Sie sich bei Deis ein

Wenn Sie sich später anmelden müssen, verwenden Sie den folgenden Befehl:

deis login http://deis.

Sie werden aufgefordert, das zuvor erstellte Login einzugeben.

Beispielanwendung bereitstellen (optional)

Deis unterstützt drei verschiedene Arten, Anwendungen zu erstellen:

  1. Heroku Buildpacks

  2. Dockerfiles

  3. Docker-Bilder

Wir werden zeigen, wie Sie mit dem Heroku Buildpack-Workflow eine Anwendung mithilfe von example-ruby-sinatra bereitstellen, die von Deis bereitgestellt wird.

Wechseln Sie in ein Verzeichnis, in das Sie die Beispielanwendung herunterladen möchten. Führen Sie den folgenden Befehl aus, wenn Sie sich am gewünschten Speicherort befinden, um das Git-Repository zu klonen:

git clone https://github.com/deis/example-ruby-sinatra.git
cd example-ruby-sinatra

Mit dem Befehl + deis create + kann die Anwendung auf der Deis-Steuerung erstellt werden. Führe es jetzt aus:

deis create

Dadurch wird eine Anwendung erstellt und mit dem automatischen Namensalgorithmus von Deis benannt:

deis create output:Creating application... done, created
Git remote deis added

In diesem Fall lautet der Name der Anwendung "+ dapper-yachting +".

Verwenden Sie jetzt zum Bereitstellen der Anwendung "+ git push deis master +". Mach es jetzt:

git push deis master

Nachdem Sie den Befehl zum Bereitstellen ausgeführt haben, werden viele Ausgabezeilen angezeigt. Sobald der Vorgang abgeschlossen ist, wird in der Ausgabe angegeben, dass die Anwendung bereitgestellt wurde, und es wird der automatisch generierte Name und der Zugriff darauf angezeigt:

git push deis master output:...
-----> Launching...
      done, :v2 deployed to Deis



      To learn more, use `deis help` or visit http://deis.io

To ssh://[email protected]:2222/dapper-yachting.git
* [new branch]      master -> master

In diesem Beispiel lautet die URL "+ http: // dapper-yachting.dev.example.com +". Dies ist der Anwendungsname in Kombination mit dem Clusternamen.

Sie können testen, ob dies funktioniert, indem Sie die Anwendungs-URL in einem Webbrowser aufrufen oder den folgenden Befehl zum Einrollen verwenden (in Ihrer eigenen URL ersetzen):

curl http://

Sie sollten eine Ausgabe sehen, die der folgenden ähnelt:

App output:Powered by Deis! Running on container ID a0d35733aad8

Die Beispielanwendung sucht nach der Container-ID, in der sie ausgeführt wird, und gibt sie aus. Glückwunsch! Ihre Deis-Plattform funktioniert!

Fazit

Nachdem Sie ein funktionierendes Deis-Setup haben, versuchen Sie, Deis-Anwendungen mit den beiden anderen Workflows bereitzustellen. Der Workflow dockerfile ähnelt dem Heroku Buildpack-Flow, da er auch "+ git push " für die Bereitstellung verwendet, während der Workflow _docker image_ " deis pull +" für die Bereitstellung verwendet. Außerdem bietet Deis viel mehr Funktionen als hier beschrieben - lesen Sie Ihre Dokumentation, um mehr zu erfahren!