So richten Sie einen CoreOS-Cluster auf DigitalOcean ein

Einführung

Wenn Sie beabsichtigen, CoreOS in Ihrer Infrastruktur zu verwenden, möchten Sie zunächst einen CoreOS-Cluster einrichten. Damit CoreOS-Maschinen einen Cluster bilden können, müssen ihre + etcd2 + - Instanzen verbunden sein. In diesem Tutorial erhalten Sie schrittweise Anweisungen zum schnellen Erstellen eines CoreOS-Clusters mit drei Knoten auf DigitalOcean.

Voraussetzungen

Wenn Sie nicht mit den Komponenten vertraut sind, auf denen CoreOS basiert (Docker, etcd2 und Flotte), wird dringend empfohlen, dass Sie https://www.digitalocean.com/community/tutorials/an-introduction-to-coreos-system lesen -Komponenten [Eine Einführung in CoreOS-Systemkomponenten]. Sie sollten dem Abschnitt "+ etcd2 +" besondere Aufmerksamkeit schenken, da diese Komponente für den Clustererkennungsprozess von wesentlicher Bedeutung ist.

SSH-Schlüssel

Auf jedem von Ihnen erstellten CoreOS-Server muss während des Erstellungsvorgangs mindestens ein öffentlicher SSH-Schlüssel installiert sein. Die Schlüssel werden in der Datei mit den autorisierten Schlüsseln des Benutzers "+ core" installiert, und Sie benötigen die entsprechenden privaten Schlüssel, um sich bei Ihrem CoreOS-Server anzumelden.

Wenn Sie noch keinen SSH-Schlüssel mit Ihrem DigitalOcean-Konto verknüpft haben, führen Sie die Schritte 1-3 dieses Tutorials aus: https://www.digitalocean.com/community/tutorials/how-to-use-ssh- Keys-with-Digitalocean-Droplets [Verwendung von SSH-Schlüsseln mit DigitalOcean-Droplets]. Anschließend möchten Sie Ihren privaten Schlüssel zu Ihrem SSH-Agenten auf Ihrem Client-Computer hinzufügen, indem Sie den folgenden Befehl ausführen:

ssh-add

Weitere Informationen zu diesem Schritt finden Sie unter this article.

DigitalOcean Personal Access Token

Wenn Sie vorhaben, die DigitalOcean-API zum Erstellen Ihrer CoreOS-Maschinen zu verwenden, lesen Sie https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2#how-to-generate -a-personal-access-token [dieses Tutorial] enthält Informationen zum Generieren und Verwenden eines persönlichen Zugriffstokens mit Schreibberechtigungen.

Nachdem Sie die Voraussetzungen aus dem Weg geräumt haben, können Sie mit dem Aufbau unseres CoreOS-Clusters beginnen.

Generieren Sie eine neue Erkennungs-URL

Der erste Schritt zum Einrichten eines neuen CoreOS-Clusters besteht darin, eine neue Erkennungs-URL zu generieren, eine eindeutige Adresse, in der CoreOS-Peer-Adressen und -Metadaten gespeichert werden. Der einfachste Weg, dies zu tun, ist die Verwendung von "+ https: // discovery.etcd.io ", einem kostenlosen Discovery-Service. Eine neue Erkennungs-URL kann durch Aufrufen von https://discovery.etcd.io/new in einem Webbrowser oder durch Ausführen des folgenden Befehls ` curl +` generiert werden:

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

Bei beiden Methoden wird eine neue, eindeutige 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 CoreOS-Cluster zu erstellen. Die gleiche Erkennungs-URL muss im Abschnitt "+ etcd2 +" der Cloud-Konfiguration jedes Servers angegeben werden, den Sie einem bestimmten CoreOS-Cluster hinzufügen möchten.

Nachdem wir nun eine Erkennungs-URL haben, schauen wir uns an, wie Sie eine "+ cloud-config" -Datei erstellen, die diese verwendet.

Schreiben Sie eine Cloud-Config-Datei

CoreOS verwendet eine Datei mit dem Namen "+ cloud-config ", mit der Sie die Netzwerkkonfiguration, Systemeinheiten und andere Elemente auf Betriebssystemebene deklarativ anpassen können. Diese Datei ist im YAML-Format geschrieben, bei dem Einrückungen zur Bezeichnung der Datenhierarchie verwendet werden. Die Datei " cloud-config " wird beim Booten einer Maschine verarbeitet und bietet eine Möglichkeit, Ihre Maschinen mit " etcd2 +" - Einstellungen zu konfigurieren, mit denen sie den Cluster ermitteln können, dem sie beitreten sollen.

Wir werden beschreiben, wie man eine minimale "+ Cloud-Konfiguration +" schreibt, um einen funktionierenden CoreOS-Cluster zum Laufen zu bringen. Eine vollständige Liste der Elemente, die mit Cloud-Config konfiguriert werden können, finden Sie in der offiziellen Dokumentation unter official documentation. Sie bieten auch ein hilfreiches Tool, mit dem Sie die Syntax Ihrer Cloud-Konfigurationsdatei überprüfen können: Cloud-Config Validator.

Minimale Cloud-Konfiguration

Wie bereits erwähnt, werden die Peer-Adressen aller CoreOS-Computer in einem Cluster mit der Erkennungs-URL gespeichert. Daher muss jeder Computer in einem Cluster dieselbe Erkennungs-URL verwenden und eine eigene IP-Adresse übergeben, unter der der Dienst "+ etcd2 " erreichbar ist. Diese sind in " cloud-config " unter " etcd2 +" angegeben und werden im folgenden Codeblock angezeigt.

Sie müssen auch einen Abschnitt "+ units " angeben, der die Dienste " etcd2 " und " fleet +" startet, die für einen funktionierenden CoreOS-Cluster erforderlich sind.

Hier ist eine einfache Cloud-Konfigurationsdatei, die mit Ihren CoreOS-Computern verwendet werden kann, um einen neuen Cluster zu erstellen (ersetzen Sie den Wert von "+ discovery" durch die zuvor generierte Erkennungs-URL):

#cloud-config

coreos:
 etcd2:
   # generate a new token for each unique cluster from https://discovery.etcd.io/new:
   discovery: https://discovery.etcd.io/<discovery_token>
   # multi-region deployments, multi-cloud deployments, and Droplets without
   # private networking need to use $public_ipv4:
   advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
   initial-advertise-peer-urls: http://$private_ipv4:2380
   # listen on the official ports 2379, 2380 and one legacy port 4001:
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://$private_ipv4:2380
 fleet:
   public-ip: $private_ipv4   # used for fleetctl ssh command
 units:
   - name: etcd2.service
     command: start
   - name: fleet.service
     command: start

Dieses "+ cloud-config +" - Skript kann verwendet werden, um ein grundlegendes CoreOS einzurichten, das zu Testzwecken verwendet werden kann. Leider ist es nicht sehr sicher. Für eine ernsthaftere Einrichtung sollten Sie ein sicheres CoreOS-Cluster einrichten, indem Sie diesem Lernprogramm folgen: https://www.digitalocean.com/community/tutorials/how-to-secure-your-coreos-cluster-with-tls-ssl -und-Firewall-Regeln [So sichern Sie Ihren CoreOS-Cluster mit TLS / SSL- und Firewall-Regeln].

Erstellen Sie einen CoreOS-Cluster

Nachdem Sie nun wissen, woraus Ihre Cloud-Konfigurationsdatei für jeden Computer in Ihrem neuen CoreOS-Cluster besteht, erstellen wir Ihren CoreOS-Cluster. Da Droplets über die DigitalOcean-Systemsteuerung oder -API erstellt werden können, zeigen wir Ihnen, wie Sie Ihren CoreOS-Cluster mit beiden Methoden erstellen.

DigitalOcean-Systemsteuerung

Besuchen Sie zuerst die DigitalOcean-Systemsteuerung und klicken Sie dann auf die Schaltfläche * Droplet erstellen *.

Wählen Sie als Nächstes CoreOS als Ihre Linux-Distribution aus und wählen Sie dann den Kanal aus, den Sie verwenden möchten (Stable, Beta oder Alpha).

Wählen Sie dann Ihre gewünschte Tropfengröße. Eine kleinere Größe ist in Ordnung, wenn Sie grundlegende Tests durchführen.

Wählen Sie als Nächstes Ihre bevorzugte Datencenter-Region aus.

Wählen Sie unter der Überschrift * Weitere Optionen auswählen * die Optionen * Privates Netzwerk * ​​und * Benutzerdaten * aus. Kopieren Sie Ihr "+ cloud-config +" - Skript und fügen Sie es in das Textfeld "Benutzerdaten" ein. Es sollte ungefähr so ​​aussehen:

Wählen Sie als Nächstes mindestens einen SSH-Schlüssel aus, mit dem Sie sich bei Ihren Droplets anmelden möchten.

Erstellen Sie im Abschnitt * Finalize and create * * mindestens drei * Droplets und geben Sie deren Hostnamen an. In unserem Beispiel nennen wir sie * coreos-01 *, * coreos-02 * und * coreos-03 *:

image: https: //assets.digitalocean.com/site/ControlPanel/cp-coreos-multi-create.png [Create 3 Droplets]

Klicken Sie abschließend auf die Schaltfläche * Erstellen *, um die Droplets zu erstellen, aus denen Ihr CoreOS-Cluster besteht.

Weitere Informationen zum Erstellungsprozess von Tröpfchen mithilfe des DigitalOcean-Kontrollfelds finden Sie unter this leiten.

DigitalOcean API

Wenn Sie die DigitalOcean-API zum Erstellen Ihrer CoreOS-Droplets verwenden, können Sie Ihre Cloud-Konfiguration über den Parameter user_data in Ihrer Droplet-Erstellungs-POST-Anforderung angeben. Fügen Sie einfach das gesamte Skript dort ein.

Nehmen wir an, wir möchten drei 1-GB-Droplets mit den Namen * coreos-01 *, * coreos-02 * und * coreos-03 * mit privatem Netzwerk im NYC3-Rechenzentrum mithilfe des CoreOS-Stable-Channel-Images und der erstellen + cloud-config + Datei, die zuvor angezeigt wurde. Hier ist ein Beispiel für den Befehl "+ curl +", den Sie ausführen würden, um ihn mit der DigitalOcean-API zu erstellen:

curl -X POST "https://api.digitalocean.com/v2/droplets" \
     -d'{"names":["coreos-01","coreos-02","coreos-03"],"region":"nyc3","size":"1GB","private_networking":true,"image":"coreos-stable","user_data":
"#cloud-config

coreos:
 etcd2:
   # generate a new token for each unique cluster from https://discovery.etcd.io/new:
   discovery: https://discovery.etcd.io/<discovery_token>
   # multi-region deployments, multi-cloud deployments, and Droplets without
   # private networking need to use $public_ipv4:
   advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
   initial-advertise-peer-urls: http://$private_ipv4:2380
   # listen on the official ports 2379, 2380 and one legacy port 4001:
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://$private_ipv4:2380
 fleet:
   public-ip: $private_ipv4   # used for fleetctl ssh command
 units:
   - name: etcd2.service
     command: start
   - name: fleet.service
     command: start",
     "ssh_keys":[  ]}' \
     -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json"

Sie müssen Ihre SSH-Schlüssel-ID (s) oder Ihren Fingerabdruck (s) durch "+ <SSH-Schlüssel-ID (s)> " ersetzen und sicherstellen, dass " $ TOKEN +" auf eines Ihrer DigitalOcean Personal Access-Token mit Lese- / Schreibzugriff gesetzt ist .

Nachdem Sie diesen Befehl mit den entsprechenden Ersetzungen ausgeführt haben, wird Ihr CoreOS-Cluster mit drei Knoten erstellt.

Weitere Informationen zur Verwendung der API finden Sie unter this tutorial.

Überprüfen Sie den Cluster

Um zu überprüfen, ob sich unser 3-Computer-Cluster ordnungsgemäß gebildet hat, müssen wir SSH an eines der Cluster-Mitglieder senden.

Melden Sie sich beim * coreos-01 * als "+ core " - Benutzer über SSH an und verwenden Sie die Option " -A +", um Ihren SSH-Agenten weiterzuleiten. Denken Sie daran, die öffentliche IP-Adresse zu ersetzen:

ssh -A core@

Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um alle Mitglieder des Clusters anzuzeigen:

fleetctl list-machines

Sie sollten eine Liste aller Online-Maschinen im Cluster sehen, die durch ihre jeweiligen "+ Peer-Addr +" - IP-Adressen identifizierbar sind. Hier ist ein Beispiel für die Ausgabe:

MACHINE     IP      METADATA
59b2fffd... 10.131.29.141   -
853b0df3... 10.131.63.121   -
cd64a2e3... 10.131.63.120   -

Wenn Sie alle von Ihnen erstellten Maschinen sehen, sind sich alle über "+ etcd2 +" bewusst, und Ihr Cluster wurde ordnungsgemäß gebildet!

Neue Maschinen hinzufügen

Wenn Sie einem vorhandenen CoreOS-Cluster neue Computer hinzufügen möchten, erstellen Sie einfach ein neues Droplet mit der gleichen "+ cloud-config +" (und Erkennungs-URL). Ihr neuer CoreOS-Computer wird automatisch dem vorhandenen Cluster hinzugefügt.

Wenn Sie vergessen haben, welche Erkennungs-URL Sie verwendet haben, können Sie diese bei einem der Mitglieder des Clusters nachschlagen. Verwenden Sie den folgenden Befehl "+ grep +" auf einem Ihrer vorhandenen Computer:

grep DISCOVERY /run/systemd/system/etcd2.service.d/20-cloudinit.conf

Sie sehen eine Zeile, die die ursprüngliche Erkennungs-URL enthält, wie die folgende:

Environment="ETCD_DISCOVERY="

Fazit

Ihr grundlegender CoreOS-Cluster ist eingerichtet, und jetzt können Sie mit dem Testen fortfahren! Wenn Sie einen sicheren CoreOS-Cluster einrichten möchten, folgen Sie diesem Tutorial: https://www.digitalocean.com/community/tutorials/how-to-secure-your-coreos-cluster-with-tls-ssl-and- Firewall-Regeln [So sichern Sie Ihren CoreOS-Cluster mit TLS / SSL und Firewall-Regeln].

In den restlichen Tutorials dieser Reihe erfahren Sie mehr über CoreOS und wie Sie Docker-Container und Service Discovery mit Ihrem CoreOS-Cluster verwenden.