Best Practices: Wie man Anwendungen für Kubernetes architekt

Best Practices: Wie man Anwendungen für Kubernetes architekt

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Jan 21, 2020

Auf einen Blick: Best Practices für die Architektur von Anwendungen auf Kubernetes umfassen das Containerisieren von Anwendungen, die Nutzung von Helm für die Bereitstellung sowie die Implementierung von Gesundheitschecks mit Liveness- und Readiness-Probes. Die Befolgung der 12-Faktor-Anwendungsmethodik verbessert die cloud-nativen Kompatibilität, während die Nutzung von Kubernetes-Operatoren Verwaltungsaufgaben automatisiert.

  • Anwendungen müssen als Container-Abbildungen verpackt werden.
  • Nutzen Sie Helm, um Anwendungen effektiv bereitzustellen.
  • Implementiere Liveness- und Readiness Probes für Gesundheitschecks der Anwendung.

Eine produktionsfähige Anwendung für Kubernetes zu gestalten ist keine leichte Aufgabe, aber Richtlinien und Best Practices stehen zur Verfügung, um sicherzustellen, dass Ihre Anwendung alle notwendigen Anforderungen einer Produktionsumgebung erfüllt.

Das Microservice-Muster hat dazu beigetragen, die Art und Weise zu entwickeln, wie Anwendungen gebaut werden. Aufgrund dieser Veränderung sollten die Plattformen, die Ihre App ausführen können, bei der Entwicklung berücksichtigt werden. Tatsächlich hat Kubernetes selbst – eine äußerst beliebte Plattform zur Container-Orchestrierung – die Art und Weise, wie wir Apps bauen und bereitstellen, drastisch verändert. Hier sind also einige Tipps, die Sie beachten sollten, bevor Sie Ihre Anwendung auf Kubernetes ausführen.

Deine App muss ein Container-Image sein

Da K8s eine Container-Orchestrierungs-Engine ist, muss Ihre Anwendung in einem Container-Image verpackt werden, damit sie in einem K8s-Cluster ausgeführt werden kann. Dies gehört zu den grundlegendsten Anforderungen für den Aufbau von Microservices, da es direkt mit der Funktionsweise von Kubernetes als Plattform verknüpft ist.

Idealerweise solltest du dein Anwendungsimage in einem privaten Repository für sichere Speicherung aufbewahren. Zum Beispiel kannst du ein Docker-Image erstellen und dieses Image in ein privates Docker-Repository pushen, von dem Kubernetes dann dein Image abrufen kann.

Standardmäßig unterstützt Kubernetes Container-Runtimes in:

Befolge Best Practices für die Laufzeit, die du verwendest. Die für Docker findest du hier.

Helm ist dein Freund

Wenn Sie noch nie Helm-Diagramme verwendet haben, verpassen Sie etwas. Helm ist die de-facto-Methode, um Anwendungen in Produktionsqualität in Kubernetes einzuführen. Es ermöglicht Ihnen, Ihre Anwendung in Diagrammen zu beschreiben – sodass Sie versionen, veröffentlichen, teilen und andere nützliche Dinge mit Ihrer Anwendung tun können. Es ist Kubernetes yum oder apt-get der Einfachheit halber.

Ein typisches Helmdiagramm sieht ungefähr so aus:

    YOUR-CHART-NAME/
 |
 |- .helmignore        [Files to ignore]
 |
 |- Chart.yaml         [Data about the chart. E.g Version etc] 
 |
 |- values.yaml        [This is the variable file.] 
 |
 |- charts/            [Specify other needed charts]
 |
 |- templates/         [This hold all the manifests for the application. E.g yaml files]

Hinweis: Die Verwendung eines CLI-Tools wie kubectl sollte nur in der Entwicklung oder zum Debugging verwendet werden – niemals für die Bereitstellung in der Produktion.

Verwenden Sie Liveness- und Readiness-Sonden

Eine ungesunde Anwendung kann zu Umsatzverlusten führen. Glücklicherweise bietet Kubernetes zwei zentrale Konzepte, um die Gesundheit (oder den Ausfall) Ihrer Anwendungen zu überprüfen:

  • Liveness-Proben. Du sagst dem Kubelet, dass er den Container beenden soll, auf dem deine Anwendung läuft, falls die Sonde fehlschlägt.
  • Readiness Probes. Du sagst dem Kubelet, dass er sicherstellen soll, dass der Service-Load Balancer, der die Anwendung anbietet, den Datenverkehr nicht an diese Anwendung weiterleitet, falls die Probe fehlschlägt.

Liveness- und Readiness-Probes in Ihrem Manifest zu verwenden, ist eine großartige Möglichkeit, die Gesundheit Ihrer Anwendung vor und nach dem Start in einem Cluster zu kontrollieren und zu wissen. Sobald Ihre App die Probe besteht, sendet der Dienst den Datenverkehr an die Anwendung.

12-Faktor, falls nicht.

Die Bereitstellung deiner Anwendung in einem Kubernetes-Cluster ist großartig. Wenn deine Anwendung jedoch nicht cloud-native ist, ist die Wahrscheinlichkeit groß, dass sie mit Kubernetes nicht gut funktioniert. Eine gute Faustregel ist, die 12-Faktor-Anwendungsmethodik zu befolgen.

Einige Vorteile der Befolgung der 12 Faktoren:

  • Das Hochskalieren ist einfach, mit begrenzten Änderungen an Werkzeugen oder Architektur.
  • Dev, Stage und Produktion sind so nah wie möglich, weil keine Konfigurationswerte fest in den Konfigurationsdateien verankert sind.
  • Stellt sicher, dass der Dienst einen sauberen Vertrag mit dem Betriebssystem hat. (Das heißt, es ist ihm egal, auf welchem Betriebssystem er läuft.)
  • Dienste lassen sich problemlos in jede öffentliche oder private Cloud einsetzen.

Der Bediener nutzt Ihr Fachwissen

Ein Hauptgrund, warum Kubernetes so mächtig ist? Ist die Tatsache, dass man es erweitern kann. Mit anderen Worten: Man kann sein Anwendungsdomänenwissen anwenden, um einen eigenen Controller und eigene Ressourcen in Kubernetes zu erstellen, die wissen, wie Ihre Anwendung funktionieren sollte und bestimmte Aufgaben bei Bedarf erledigt. Genau dafür ist das Kubernetes-Operator-Muster da.

Ein Teil der Architektur Ihrer Anwendung für k8s besteht darin, ausreichend zu planen, um zu wissen, welche Art von Automatisierung Ihre Anwendung benötigt – und ob Sie den k8s-Operator für diese Automatisierungsaufgaben nutzen können. Der Operator ist besonders nützlich, wenn Sie eine stateful Application haben, bei der Sie gelegentlich eine Art Admin-Aufgabe ausführen müssen, wie das Machen und Wiederherstellen von Backups des Zustands dieser Anwendung. In diesem Szenario müssten Sie einen benutzerdefinierten Controller und eine eigene Ressource erstellen, um diese Aufgabe zu erledigen, weil Kubernetes nicht weiß, wie man diese Aufgabe direkt erledigt.

Die Architektur Ihrer Anwendung für Kubernetes ist nicht einfach, aber wenn Sie diese Best Practices befolgen, können Sie eine gut architektonierte Anwendung im K8s-Cluster haben. Beginnen Sie mit diesen Anwendungstipps und verbessern Sie den Architekturprozess kontinuierlich.

Zusätzliche Ressourcen

Mehr zu Kubernetes finden Sie in diesen Ressourcen:

DevOps-Leitfaden

  1. Was ist DevOps? Eine umfassende Einführung
  2. Eine kurze Geschichte von DevOps
  3. Einführung in die DevOps-Architektur
  4. Automatisierung in DevOps: Warum und wie man DevOps-Praktiken automatisiert
  5. Was ist CI/CD? Kontinuierliche Integration und kontinuierliche Lieferung erklärt
  6. Wie man eine CI/CD-Pipeline mit Jenkins aufbaut
  7. DevOps-Metriken zur Optimierung von CI/CD-Pipelines
  8. Kontinuierliche Liefermetriken
  9. Ist Continuous Integration in Continuous Deployment ein Fortschritt – oder nicht?
  10. Unterschiede zwischen Continuous Integration (CI), Delivery (CD) und Deployment
  11. Quellcode und Versionskontrolle in DevOps
  12. Was ist kontinuierliche Testung?
  13. Testautomatisierungs-Frameworks: Der ultimative Leitfaden
  14. Release Management in DevOps
  15. Erklärt: Monitoring & Telemetrie in DevOps
  16. Anwendungs-Leistungsmanagement in DevOps
  17. DevOps-Orchestrierung im SDLC
  18. Einführung in Datenbank-DevOps
  19. Die Rolle der Microservices in DevOps
  20. Die Rolle der Virtualisierung in DevOps
  21. Container & DevOps: Wie Container in DevOps-Lieferpipelines passen
  22. Was ist eine Containerpipeline?
  23. Was ist eine DevOps-Toolchain?
  24. Verwaltung von Containern und Code für DevOps
  25. Die Rolle von Agile in DevOps
  26. Die Rolle der Cloud in DevOps
  27. Was ist FinDevOps?
  28. Top-DevOps-Trends im Jahr 2022
  29. DevOps-Werte & Prinzipien
  30. DevOps-Kennzahlen und KPIs
  31. DevOps-Ratschläge für kleine, mittlere und große Organisationen
  32. DevOps-Teamstruktur
  33. Top-DevOps-Bücher, die man heute lesen sollte
  34. Buchrezension von The Phoenix Project: DevOps For Everyone
  35. DevOps-Influencer: 11 DevOps-Experten, denen Sie auf Twitter folgen können
  36. GitHub, GitLab, Bitbucket & Azure DevOps: Was ist der Unterschied?
  37. Best Practices: Wie man Anwendungen für Kubernetes architekt
  38. Konfigurationsmanagement in DevOps
  39. DevOps-Verzweigungsstrategien erklärt
  40. DevOps-Jobbezeichnungen, Rollen und Verantwortlichkeiten
  41. Testen in DevOps: Konzepte, Best Practices und mehr
  42. Der vollständige DevOps-Zertifizierungsleitfaden für 2022
  43. Was ist das Kubernetes-Operator-Muster?

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.