Migrieren eines Docker Compose-Workflows zu Kubernetes

Einführung

Wenn Sie moderne, zustandslose Anwendungen erstellen, ist containerizing your application components der erste Schritt bei der Bereitstellung und Skalierung in Distributed Plattformen. Wenn Sie in der Entwicklung Docker Compose verwendet haben, haben Sie Ihre Anwendung durch Folgendes modernisiert und containerisiert:

  • Extrahieren der erforderlichen Konfigurationsinformationen aus Ihrem Code.

  • Laden Sie den Status Ihrer Anwendung herunter.

  • Verpacken Sie Ihre Anwendung für den wiederholten Gebrauch.

Sie haben auch Service-Definitionen geschrieben, die festlegen, wie Ihre Container-Images ausgeführt werden sollen.

Um Ihre Dienste auf einer verteilten Plattform wie Kubernetes auszuführen, müssen Sie Ihre Compose-Dienstdefinitionen in Kubernetes-Objekte übersetzen. Auf diese Weise können Sie http://assets.digitalocean.com/white-papers/running-digitalocean-kubernetes.pdf Ihre Anwendung stabil skalieren. Ein Tool, das den Übersetzungsprozess für Kubernetes beschleunigen kann, ist kompose, ein Konvertierungstool, mit dem Entwickler Compose-Workflows auf Container-Orchestratoren wie Kubernetes oder https://www.openshift.com/ [verlagern können. OpenShift].

In diesem Lernprogramm übersetzen Sie Compose-Services mit kompose in Kubernetes objects. Sie verwenden die von kompose bereitgestellten Objektdefinitionen als Ausgangspunkt und nehmen Anpassungen vor, um sicherzustellen, dass in Ihrem Setup Secrets, https://kubernetes.io verwendet wird / docs / concepts / services-networking / service / [Services] und PersistentVolumeClaims wie von Kubernetes erwartet. Am Ende des Lernprogramms wird eine Einzelinstanzanwendung Node.js mit einer Datenbank MongoDB in einem Kubernetes-Cluster ausgeführt. Dieses Setup spiegelt die Funktionalität des Codes wider, der unter Containerizing a Node.js beschrieben ist Anwendung mit Docker Compose und ist ein guter Ausgangspunkt, um eine produktionsfertige Lösung zu entwickeln, die sich an Ihren Anforderungen orientiert.

Voraussetzungen

  • Ein Kubernetes 1.10+ -Cluster mit aktivierter rollenbasierter Zugriffssteuerung (RBAC). Für dieses Setup wird ein DigitalOcean Kubernetes cluster verwendet. Sie können jedoch https://www.digitalocean.com/community/tutorials/how-to-create- a-kubernetes-1-11-cluster-using-kubeadm-on-ubuntu-18-04 [Cluster mit einer anderen Methode erstellen].

  • Das Befehlszeilentool "+ kubectl ", das auf Ihrem lokalen Computer oder Entwicklungsserver installiert und für die Verbindung mit Ihrem Cluster konfiguriert ist. Weitere Informationen zur Installation von " kubectl +" finden Sie in der offiziellen Dokumentation unter official documentation.

  • Docker auf Ihrem lokalen Computer oder Entwicklungsserver installiert. Wenn Sie mit Ubuntu 18.04 arbeiten, befolgen Sie die Schritte 1 und 2 unter How To Installieren und Verwenden von Docker unter Ubuntu 18.04; Andernfalls lesen Sie die official documentation, um Informationen zur Installation auf anderen Betriebssystemen zu erhalten. Stellen Sie sicher, dass Sie Ihren Nicht-Root-Benutzer zur Gruppe "+ docker +" hinzufügen, wie in Schritt 2 des verknüpften Lernprogramms beschrieben.

  • Ein Docker Hub Konto. Eine Übersicht über die Einrichtung finden Sie unter diese Einführung in Docker Hub.

Schritt 1 - kompose installieren

Navigieren Sie zu Beginn der Verwendung von kompose zu der GitHub * Releases * -Seite von project und kopieren Sie den Link zur aktuellen Version (Stand dieses Dokuments). Fügen Sie diesen Link in den folgenden Befehl ein, um die neueste Version von kompose herunterzuladen:

curl -L https://github.com/kubernetes/kompose/releases/download/v/kompose-linux-amd64 -o kompose

Einzelheiten zur Installation auf Nicht-Linux-Systemen finden Sie in den Installationsanweisungen unter installation.

Machen Sie die Binärdatei ausführbar:

chmod +x kompose

Verschiebe es in deinen + PATH:

sudo mv ./kompose /usr/local/bin/kompose

Um zu überprüfen, ob es ordnungsgemäß installiert wurde, können Sie eine Versionsprüfung durchführen:

kompose version

Wenn die Installation erfolgreich war, wird die folgende Ausgabe angezeigt:

Output

Wenn + kompose + installiert und einsatzbereit ist, können Sie jetzt den Node.js-Projektcode klonen, den Sie in Kubernetes übersetzen.

Schritt 2 - Klonen und Packen der Anwendung

Um unsere Anwendung mit Kubernetes zu verwenden, müssen wir den Projektcode klonen und die Anwendung packen, damit der Dienst + kubelet + das Image abrufen kann.

Unser erster Schritt ist das Klonen des Repositorys node-mongo-docker-dev von https://github.com/do -community [DigitalOcean Community GitHub-Konto]. Dieses Repository enthält den Code aus dem Setup, der unter Containerizing a Node.js Application beschrieben ist für die Entwicklung mit Docker Compose, in dem anhand einer Demo-Anwendung von Node.js demonstriert wird, wie eine Entwicklungsumgebung mit Docker Compose eingerichtet wird. Weitere Informationen zur Anwendung selbst finden Sie in der Reihe From Containers to Kubernetes with Node.js.

Klonen Sie das Repository in ein Verzeichnis mit dem Namen "++":

git clone https://github.com/do-community/node-mongo-docker-dev.git

Navigiere zum ++ Verzeichnis:

cd

Das Verzeichnis "++" enthält Dateien und Verzeichnisse für eine Hai-Informationsanwendung, die mit Benutzereingaben arbeitet. Es wurde für die Arbeit mit Containern modernisiert: vertrauliche und spezifische Konfigurationsinformationen wurden aus dem Anwendungscode entfernt und für die Einfügung zur Laufzeit überarbeitet, und der Anwendungsstatus wurde in eine MongoDB-Datenbank ausgelagert.

Weitere Informationen zum Entwerfen moderner Anwendungen ohne Status finden Sie unter Architecting Applications for Kubernetes und https://www.digitalocean.com/ community / tutorials / modernizing-applications-for-kubernetes [Anwendungen für Kubernetes modernisieren].

Das Projektverzeichnis enthält ein Dockerfile mit Anweisungen zum Erstellen des Anwendungsimages. Erstellen wir das Image jetzt, damit Sie es auf Ihr Docker Hub-Konto übertragen und in Ihrem Kubernetes-Setup verwenden können.

Erstellen Sie mit dem Befehl +docker build + ` das Bild mit dem Flag