Wir veröffentlichen eine Übersetzung eines Artikels über Vanilla Stack - eine neue Cloud-basierte Open-Source-Technologie, die auf Kubernetes basiert.
Ich bin kürzlich auf den Vanilla Stack gestoßen , der viele Open Source-Komponenten enthält. In diesem Artikel werfen wir einen kurzen Blick auf den Installationsprozess und zeigen Ihnen die verschiedenen Anwendungsfälle.
Vanilla Stack auf einen Blick
Vanilla Stack kann als Kubernetes- Cluster mit vielen Open-Source-Komponenten definiert werden.
Unter ihnen:
- Rook - verwaltet verteilten Speicher (Dateisystem, Block, Objekt),
- OpenStack - Bietet Infrastruktur als Service (IaaS),
- Cloud Foundry - Bietet Platform as a Service (PaaS).
Das folgende Diagramm aus der offiziellen Dokumentation zeigt die globale Stapelarchitektur.
Hinweis: Alle mit Vanilla Stack gelieferten Lösungen (Rook, Cloud Foundry, OpenStack und andere Tools) funktionieren als Pods im zugrunde liegenden Kubernetes-Cluster.
Wie aus dem obigen Diagramm ersichtlich, können Benutzer:
- Führen Sie Anwendungen im Basis-Kubernetes-Cluster aus, indem Sie Bereitstellungen, Dienste, Helmdiagramme usw. erstellen.
- Verwenden Sie Cloud Foundry, um Ihre Anwendung über Code auszuführen (mit einem einfachen
cf push
). - Verwenden Sie OpenStack, um neue Infrastrukturen zu erstellen (virtuelle Maschinen, softwaredefinierte Netzwerke usw.).
Hinweis: Die Hardwareanforderungen hängen von den Komponenten ab, die im Stapel installiert werden.
Das folgende Diagramm ist detaillierter und enthält eine Liste aller nach Kategorien geordneten Komponenten, die mit dem Vanilla Stack geliefert werden können:
Ich denke, dieses Diagramm ist ziemlich genau. Einige Komponenten werden standardmäßig installiert, andere können während der Installation ausgewählt werden.
In diesem Artikel werden die wichtigsten Schritte des Installationsprozesses beschrieben. Um die Aufgabe zu vereinfachen, installieren wir Vanilla Stack auf sechs vom Hoster vorbereiteten virtuellen Maschinen: Drei fungieren als Master-Kubernetes-Knoten und der Rest fungiert als Worker.
Hinweis:Cloud-Anbieter sollten abhängig von den Komponenten ausgewählt werden, die wir installieren möchten, da einige von ihnen möglicherweise nicht die Installationsanforderungen erfüllen. Für die Installation von Rook benötigen wir beispielsweise einen Infrastrukturanbieter, der Blockspeicher bereitstellt.
Wir starten die Installation
Es gibt zwei Möglichkeiten, Vanilla Stack zu installieren. Diese werden im Download-Bereich beschrieben . Wir werden eine Docker-Installation verwenden, die mit dem folgenden Befehl gestartet werden kann:
$ docker run \ --name VanillaStack-installer -d \ -p 8080:8080 \ harbor.vanillastack.io/vanillastack/installer:latest
Auf die Weboberfläche des Installationsprogramms kann über Port 8080 zugegriffen werden. Die Installation kann in zehn einfachen Schritten abgeschlossen werden, die im Folgenden erläutert werden.
Bedarf
Der erste Schritt, Start , definiert die Hardware- und Softwareanforderungen für die Computer, auf denen der Stack installiert wird. In unserem Fall werden wir sechs virtuelle Maschinen verwenden. Jeder läuft unter Ubuntu 20.04 und hat 4 GB RAM / 2 CPUs.
Wie bereits erwähnt, fungieren drei virtuelle Maschinen als Hauptknoten von Kubernetes, und der Rest funktioniert.
# IP addresses of the master nodes
master1 - 159.65.92.123
master2 - 178.62.32.212
master3 - 178.62.40.225
# IP addresses of the worker nodes
worker1 - 178.62.41.87
worker2 - 178.62.27.97
worker3 - 178.62.67.29
Außerdem müssen wir eine Domäne (und einige Unterdomänen) einrichten, um auf den Cluster zugreifen zu können. Wir werden später bei der Konfiguration des Load Balancers auf diesen Schritt zurückkommen.
Geschäftsbedingungen
Das Akzeptieren der Bedingungen ist unser zweiter Schritt. Lesen Sie unbedingt die angegebenen Lizenzinformationen.
Allgemeine Einstellungen
Als nächstes folgt der Schritt Allgemeine Einstellungen . Es ist erforderlich, die Art der Installation anzugeben, die zu uns passt: die Anzahl der Master- und Worker-Knoten und die anfängliche Auslastung.
In unserem Fall wählen wir eine HA-Installation mit drei Hauptknoten, wobei die drei verbleibenden Knoten als Worker fungieren. Rook ist standardmäßig für die Repository-Installation ausgewählt. Wir verwenden hier weder OpenStack noch Cloud Foundry. Dies könnte ein Thema für einen anderen Artikel sein.
Zugriff auf die virtuelle Maschine per SSH-Schlüssel
Der Abschnitt Öffentlicher Schlüssel enthält einen öffentlichen RSA-Schlüssel, der auf jede der virtuellen Maschinen kopiert werden muss. Dieser Schritt ist erforderlich, damit der Installationscomputer (auf dem das Installationsprogramm ausgeführt wird) Ansible-Playbooks ausführen kann, um jede VM zu konfigurieren.
Hinweis: Ansible ist ein Konfigurationsverwaltungssystem. Es werden nur Befehle auf Computern über eine SSH-Verbindung ausgeführt. Im Gegensatz zu Analoga wie Chef und Puppet muss bei Ansible kein Agent installiert sein .
Anweisungen zum Kopieren des Schlüssels finden Sie im Installationsprogramm:
- Speichern Sie den Schlüssel in einer Datei mit dem Namen
key.pub
. - Kopieren Sie den Schlüssel auf den Zielcomputer mit
ssh-copy-id
:
ssh-copy-id -f -i key.pub <username>@<ip-address-of-node>
- Wiederholen Sie dies mit allen Knoten.
Befolgen Sie unter Windows die Anweisungen in diesem Artikel , beginnend mit dem Kopieren des SSH-Schlüssels auf ein Remote-Linux-Gerät.
Knoteninformationen definieren
In der Phase " Knoten" müssen die IP-Adressen und der Benutzer jedes Master- und Worker-Knotens definiert werden.
Wir müssen auch die Knoten definieren, die die Rook Pods starten. Entsprechend den Anforderungen verwenden wir alle drei Worker-Knoten.
Überprüfen der Knotenkonfiguration
In dem Node-Check Schritt überprüfen wir , ob alle Knoten die Anforderungen erfüllen.
Bevor Sie auf die Schaltfläche Validates Nodes klicken, müssen Sie nach unten scrollen und sicherstellen, dass die Rook-Regeln eingehalten werden: Mit jedem Knoten muss ein Raw-Block-Gerät verbunden sein.
Mit dem Befehl
lsblk -f
können wir überprüfen, ob alles richtig konfiguriert ist.
Durch Klicken auf die Schaltfläche Knoten validieren im Installationsprogramm können wir sicherstellen, dass alle Knoten korrekt konfiguriert sind.
Clustereinstellungen
Das erste, was im Schritt " Cluster-Einstellungen" konfiguriert werden muss, ist Pod CIDR und Service CIDR (dh die IP-Bereiche, die zum Bereitstellen von Pod-IPs und virtuellen Service-IPs verwendet werden). In unserem Fall verwenden wir die Standardwerte.
Darüber hinaus müssen wir einen Load Balancer erstellen, um den Datenverkehr zum Master- oder Produktionsknoten umzuleiten.
Aufgrund der Art des von Ihnen verwendeten Cloud-Anbieters können Sie nicht denselben Load Balancer verwenden, um den Datenverkehr auf eine andere Gruppe von Knoten umzuleiten.
Daher werden wir zwei Load Balancer erstellen: vor den Masterknoten
und vor den Workern.
Load Balancer vor Masterknoten
Der erste Load Balancer ist erforderlich, um auf den Cluster-API-Server zuzugreifen. Es sollte wie folgt konfiguriert sein:
- Leiten Sie den TCP-Verkehr von Port 6443 zu demselben Port auf Master-Hosts um.
- Überprüfen Sie regelmäßig den Betrieb der Masterknoten, indem Sie TCP-Anforderungen an Port 6443 senden.
In diesem Fall erhält der Load Balancer die IP-Adresse 159.65.211.35.
Load Balancer vor Worker-Knoten
Der zweite Load Balancer ist erforderlich, um den Zugriff auf den Cluster-Ingress-Controller (die Komponente, die den Zugriff auf Anwendungen im Cluster ermöglicht) bereitzustellen. Seine Einstellungen:
- Leiten Sie den HTTP-Verkehr (Port 80) zu Port 30080 der Worker-Knoten um.
- HTTPS-Verkehr (Port 443) auf Port 30443 der Arbeitsknoten umleiten;
- Überprüfen Sie regelmäßig den Zustand der Arbeitsknoten, die TCP-Anforderungen an Port 30080 senden.
In diesem Fall erhält der Load Balancer die IP 46.101.64.165.
DNS-Einträge konfigurieren
Die IP-Adresse des Load Balancers muss dem Clusterdomänennamen zugeordnet sein. In unserem Artikel verwenden wir
vanilla.techwhale.io
. Für den Zugriff auf den API-Server und die über den Ingress-Controller bereitgestellten Anwendungen sind zusätzliche Subdomänen erforderlich.
Derzeit können wir nur die IP-Adresse eines Load Balancers angeben. In den nächsten Versionen des Installationsprogramms stehen jedoch weitere Optionen zur Verfügung.
Lassen Sie uns das Setup verschlüsseln
Let's Encrypt ist eine weit verbreitete kostenlose Zertifizierungsstelle. Es ermöglicht uns, HTTPS-Zertifikate zu erhalten und automatisch zu erneuern. Kubernetes Let's Encrypt wird häufig über Cert Manager verwendet , die Standardkomponente im Vanilla Stack. Cert Manager kann ein Zertifikat von Let's Encrypt (sowie mehreren anderen Quellen) erhalten und es der Anwendung über Kubernetes Secret zur Verfügung stellen.
Turmkonfiguration
Mit den folgenden Schritten können Sie die zu installierenden Rook- Komponenten (in diesem Fall das Rook-Bedienfeld und die Überwachung) sowie die Anzahl der Wiederholungen eines Datenelements (Replikatebene) auswählen .
Zusätzliche Tools installieren
Im Abschnitt Zusätzliche Tools können Sie angeben, welche Komponenten im Cluster installiert werden sollen.
Die hier aufgeführten Tools sind ziemlich verbreitet. Sie fallen in verschiedene Kategorien:
- Überwachung (Prometheus, Jeager);
- Protokollierung (fließend, Elasticsearch, Grafana);
- Containerregister und Helmkarten-Repository (Hafen);
- Ingress Controller (Nginx).
Dies ist eine bequeme Möglichkeit, alle Komponenten von einem Ort aus zu installieren. Sie können auch später installiert werden, wenn sie zu diesem Zeitpunkt noch nicht ausgewählt sind.
Abonnement
Wenn wir kommerziellen Support abonnieren möchten, können wir in diesem Schritt alle erforderlichen Informationen erhalten.
Support wird von Cloudical bereitgestellt . Es unterstützt Vanilla Stack und bietet Vanilla Cloud , eine neue Option für verwaltete Stapel.
Überprüfen Sie alle Schritte
Hier können wir die Konfigurationsparameter anzeigen und (falls erforderlich) ändern.
Bevor Sie mit dem nächsten Schritt fortfahren und den gesamten Stapel installieren, müssen Sie sicherstellen, dass er
/etc/apt/sources.list
auf jedem Knoten ordnungsgemäß konfiguriert und an die offiziellen Repositorys weitergeleitet wird.
Hinweis: Dieser Schritt ist beispielsweise erforderlich, wenn Ansible in den Standardrepositorys nicht verfügbar ist.
Der einfachste Weg, dies zu beheben, besteht darin, den Inhalt durch die
/etc/apt/sources.list
folgenden Anweisungen zu ersetzen :
Installation
Jetzt ist alles fertig und wir können die Installation unter einer Tasse Tee beginnen.
In den Installationsprotokollen werden Ansible-Playbooks angezeigt, die auf jede VM angewendet werden, um:
- Installieren Sie alle erforderlichen Pakete.
- Einrichten eines Kubernetes-Clusters (drei Hauptknoten / drei Worker);
- Installieren Sie Rook und alle oben ausgewählten Tools.
Die Installation des gesamten Stacks sollte nicht lange dauern.
Hinweis: Bei der Installation des Stacks trat aufgrund der Besonderheiten des verwendeten Cloud-Anbieters ein kleines Problem auf: Der Load Balancer leitet den Datenverkehr an die interne (private) IP-Adresse des Hosts anstatt an die öffentliche um. Der Ingress-Controller wird der externen (öffentlichen) IP-Adresse der Knoten zugeordnet, sodass die Arbeitsknoten als fehlerhaft markiert werden, was falsch ist.
Clusterzugriff
Die Datei
kubeconfig
kann von abgerufen werden
/etc/kubernetes/admin.conf file
.
# Get kubeconfig file
$ ssh root@master1 cat /etc/kubernetes/admin.conf > vanilla.cfg
# Configure local kubectl
$ export KUBECONFIG=$PWD/vanilla.cfg
Wie üblich listen wir zunächst die Knoten in unserem Cluster auf:
$ kubectl get no NAME STATUS ROLES AGE VERSION master1 Ready master 38m v1.19.6 master2 Ready master 37m v1.19.6 master3 Ready master 37m v1.19.6 worker1 Ready worker 37m v1.19.6 worker2 Ready worker 37m v1.19.6 worker3 Ready worker 37m v1.19.6
Darüber hinaus können wir alle im Cluster ausgeführten Pods sowie die Dienste überprüfen, die sie bereitstellen.
Es sieht so aus, als ob alles funktioniert! Der nächste Schritt kann ein Testlauf sein, beispielsweise eine zustandsbehaftete Anwendung, die:
- Verwendet Blockspeicher, der von einem über Rook erstellten Ceph-Cluster bereitgestellt wird.
- weitergeleitet durch den Nginx Ingress Controller;
- verwendet ein TLS-Zertifikat von Let's Encrypt CA, das vom Cert Manager automatisch generiert wird.
Ergebnis
Das Vanilla Stack-Setup war schnell und das Docker-Installationsprogramm ist einfach und unkompliziert. Weitere Parameter sollten bald hinzugefügt werden, um die Benutzerfreundlichkeit zu erhöhen.
Wenn Sie Vanilla Stack nicht installieren möchten, können Sie denselben Stack direkt aus Vanilla Cloud verwenden . Dieses neue Cloud-Angebot wurde im Dezember 2020 gestartet und die erste Beta ist jetzt verfügbar.
Ich empfehle, diesen Stapel genauer zu betrachten, da er eine großartige Möglichkeit ist, mehr über beliebte Open Source-Projekte zu erfahren.