Zero-Downtime Deployments mit Docker Swarm und Portainer - Teil 2/2

Hochverfügbarer Spaß mit Docker Swarm: GitOps Deployments mit Portainer.

Meta: Nico Saia · 05.11.2023 · ⏳ 4 Minuten · Alle Blogs →
Tagsdocker-swarm · apps

Was haben wir bisher erreicht?

In Teil 1 haben wir uns angeschaut, was nochmal die Unterschiede zwischen Rolling Updates und Zero-downtime deployments sind. Anschließend haben wir unseren Stack vorbereitet, sodas wir ein Zero-downtime deployment durchführen können.

In diesem Teil werden wir uns nun anschauen, wie wir unsere Anwendung über Portainer aktualisieren können. Dabei werden wir über GitHub automatisch ein Update anstoßen lassen, sodass wir in Portainer nichts mehr machen müssen.

Vorraussetzungen

Ich setze an dieser Stelle voraus das eine laufende Portainer Instanz existiert und das Projekt aus Teil 1 entweder auf GitHub (wird in diesem Beispiel genutzt) oder einem anderen Versionierungssystem liegt.

Wenn es sich bei dem Projekt um ein privates Repository handelt, müssen wir noch einen GitHub Personal Access Token erstellen. Wie das geht wird weiter unten beschrieben:

GitHub Personal Access Token erstellen

Da unser Projekt in einem privaten Repository liegt müssen wir einen Personal Access Token erstellen. Diesen können wir dann in Portainer hinterlegen sodass Portainer auf unser Repository zugreifen kann.

Auf Github geht das ziemlich einfach und wir müssen nur folgende Schritte durchführen:

  1. Auf GitHub einloggen
  2. Hiernach navigieren wir zu “Settings” und klicken auf “Developer Settings”
  3. Hier klicken wir auf “Personal access tokens” und dann auf “Generate new token”
  4. Wir geben einen Namen für den Token ein und wählen die Berechtigung “repo” aus
  5. Nachdem wir den Token erstellt haben, kopieren wir diesen und speichern ihn an einem sicheren Ort ab.

Das ganze kann auch nochmal in der GitHub Dokumentation nachgelesen werden.


Portainer Stack mit GitHub verknüpfen

Nun legen wir einen neuen Stack in Portainer an und verknüpfen diesen mit unserem GitHub Repository. Dabei stellen wir ein das Portainer automatisch ein Update anstößt sobald wir eine neue Version auf GitHub pushen.

Zunächst legen wir in Portainer einen neuen Stack an:

  1. Wir geben einen Namen für den Stack ein
  2. Wir wählen aus, das unser Projekt in einem Git-Repository liegt
  3. Da unser Projekt in einem privaten Repository liegt, aktivieren wir die Authentication, damit Portainer auf unser Repository zugreifen kann
  4. Hier geben wir unseren GitHub-Benutzernamen ein
  5. Nun kommt der zuvor bereits erstellte GitHub Personal Access Token zum Einsatz diesen fügen wir hier ein. Portainer bietet inzwischen auch die Möglichkeit, diese Token zu speichern, sodass diese nur noch ausgewählt werden müssen.
  6. Anschließend geben wir die Repository-URL ein
  7. Falls die Yaml Datei nicht im Root-Verzeichnis liegt, können wir hier den Pfad angeben.

An dieser Stelle haben wir unser Projekt auf Github mit Portainer verknüpft. Nun müssen wir noch einstellen, dass Portainer automatisch ein Update anstößt, sobald wir eine neue Version auf GitHub pushen.

  1. Wir aktivieren die Option GitOps updates

  2. Hier haben wir nun mehrere möglichkeiten wie Portainer sich die Updates holen kann. Standardmäßig wird Polling verwendet. Das bedeutet, dass Portainer in regelmäßigen Abständen nach Updates schaut. Wir können aber auch Webhooks verwenden. Hierbei wird Portainer von GitHub benachrichtigt, sobald ein Update verfügbar ist. Dazu müssen wir in GitHub noch einen Webhook erstellen. Das würde an dieser Stelle aber zu weit führen. Deswegen verwenden wir hier Polling.

    Wir können auch sehen das Re-pull image und Force redeployment Premium Features sind, die nur in der Businessversion von Portainer verfügbar sind.

    Re-pull image bedeutet das Portainer, das Image neu herunterlädt, sobald ein Update verfügbar ist.

    Force redeployment bedeutet das Portainer die Anwendung neu startet, sobald ein Update verfügbar ist.

  3. Nun muss nur noch auf Button Deploy the stack geklickt werden und Portainer wird das Projekt aus dem Repository ausrollen.

Ich empfehle euch, dass ihr euch einmal die Dokumentation on Portainer dazu anschaut. Ab diesem Punkt können wir Änderungen an unserem Stack auf GitHub vornehmen und Portainer wird diese automatisch ausrollen. Dabei wird die Anwendung nicht offline gehen und wir haben ein Zero-downtime deployment erreicht.

An dieser Stelle zeige ich nicht explizit wie der Update-Prozess über GitHub und Portainer aussieht, da dies den Rahmen sprengen würde. Ich empfehle euch das ihr euch das Ganze einfach mal anschaut. Es ist wirklich sehr einfach und intuitiv.

warning

Falls Sie Interesse an der Business Version von Portainer haben, sprechen Sie uns gerne an. Als offizieller deutscher Portainer-Partner bieten wir Ihnen umfangreiche Beratung und Angebote rund um die Business Lizenzen von Portainer - Kauf auf Rechnung, deutscher Support, und mehr!

ayedo Alien Discord

Werde Teil der ayedo Community

In unserer Discord Community findest du Antworten auf deine Fragen rund um das Thema ayedo, Kubernetes und Open Source. Hier erfährst du in Realtime was es Neues bei ayedo und unseren Partnern gibt und hast die Möglichkeit mit unserem Team in direkten Kontakt zu treten.

Join the Community ↗

Ähnliche Inhalte

Alle Blogs →



Fabian Peter · 27.03.2024 · ⏳ 6 Minuten

Kubernetes für App Entwickler

Kubernetes kann einer Software- oder Digitalisierungs-Agentur auf verschiedene Weise helfen, zusätzliche Umsätze mit dem hochverfügbaren Betrieb von Software zu erwirtschaften: Hochverfügbarkeit: …

Lesen →

Fabian Peter · 27.03.2024 · ⏳ 5 Minuten

PHP in Kubernetes

Durch die Nutzung von Kubernetes können Entwickler und Betriebsteams die Herausforderungen traditioneller Hosting-Umgebungen überwinden und ihre PHP-Anwendungen effizienter, zuverlässiger und …

Lesen →

Fabian Peter · 27.03.2024 · ⏳ 7 Minuten

Was ist die ayedo Cloud?

Willkommen in der ayedo Cloud – Ihrer ultimativen Plattform für Zero-Downtime SaaS-App-Hosting. Entwickelt für die kreativen Köpfe, die die Welt mit ihrer Software bereichern wollen. Ob Sie ein …

Lesen →

Fabian Peter · 27.03.2024 · ⏳ 5 Minuten

Docker Swarm vs Kubernetes

In der Welt der Container-Orchestrierung stehen zwei Technologien im Mittelpunkt der Diskussion: Docker Swarm und Kubernetes. Beide bieten leistungsfähige Plattformen zur Verwaltung von Containern, …

Lesen →

Fabian Peter · 27.03.2024 · ⏳ 4 Minuten

Docker vs Docker Swarm

Docker und Docker Swarm sind eng miteinander verbundene Technologien im Bereich der Containerisierung und Orchestrierung, die jeweils unterschiedliche Aspekte des Managements von Containern abdecken. …

Lesen →


Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →

Kontaktieren Sie uns

Unsere Cloud-Experten beraten Sie gerne und individuell.

Wir antworten in der Regel innerhalb weniger Stunden auf Ihre Nachricht.

Zu Gen-Z für E-Mail? Einfach mal Discord versuchen. Unter +49 800 000 3706 können Sie unter Angabe Ihrer Kontaktdaten auch einen Rückruf vereinbaren. Bitte beachten Sie, dass es keine Möglichkeit gibt, uns telefonisch direkt zu erreichen. Bitte gar nicht erst versuchen. Sollten Sie dennoch Interesse an synchroner Verfügbarkeit via Telefon haben, empfehlen wir Ihnen unseren Priority Support.