Changelog: Kubernetes v1.32
Kubernetes v1.32: Optimierung Ihrer Container-Infrastruktur mit ayedo In der dynamischen Welt der Container-Orchestrierung spielt Kubernetes eine zentrale Rolle. Bei ayedo, den Experten für Docker und …
Moderne Client-Server-Software wird in der Regel als Service bereitgestellt: als selbst-gehostete Web-App oder Software-as-a-Service in der Cloud, die über den Browser oder dedizierte Client-Anwendungen konsumiert wird. Die Minimum Viable App beschreibt eine Web-App die für den Betrieb in Kubernetes optimiert ist und soll dabei helfen, die nach wie vor klaffende Lücke zwischen Entwicklung und Betrieb von Software zu schließen indem sie moderne Best-Practices in ein überprüfbares Framework gießt, an dem die Entwicklung einer Web-App ausgerichtet werden kann.
Die Minimum Viable App zeichnet sich aus durch:
Eine Minimum Viable App kann in jeder beliebigen Programmiersprache geschrieben werden und eine beliebige Kombination von Dependencies (Datenbank, Message-Queue, KV-Storre, etc.) verwenden. Sie dient dem reibungslosen Zusammenspiel von Entwicklung und Betrieb - gemeinhin DevOps genannt.
Eine "App", oder Anwendung, ist ein Konglomerat an Software, in der Regel bestehend aus einer selbst entwickelten Software (unserer Minimum Viable App) und ihren Abhänigkeiten wie Datenbanken, KV-Stores oder Object-Storage.
Der Begriff "App" ist leider maßlos überlagert, weil er alles bezeichnet was Software ist und irgendwie ausführbar oder nutzbar gemacht wird. Unsere App in Kubernetes ist also in der Regel eine "App of Apps". Wir unterscheiden hierbei zwischen unserer Custom App - also dem Code den wir selbst schreiben und als Anwendung benutzbar machen wollen - und etwaigen Dependency-Apps.
Im Kontext der Minimum Viable App konzentrieren wir uns auf die Custom App und betrachten dabei Entwicklungs-Prozesse, Laufzeitumgebung und den Betrieb der Software.
Für unser Verständnis einer "App" ist es irrelevant, ob die Anwendung ein Monolith oder ein Konstrukt aus Microservices ist oder in welcher Programmiersprache die Software geschrieben wurde. Die Minimum Viable App beschäftigt sich mit der kleinsten atomaren Einheit, nämlich einem einzelnen Prozess in einem Container. Ein Monolith ist folglich eine einzelne Custom App während eine Microservice-Architektur ein Konglomerat an Custom Apps darstellt, die untereinander einen Abhängikeitsgraphen bilden. Das Prinzip der Minimum Viable App ist hierbei auf jeden einzelnen Microservice anwendbar.
Eine App könnte also eine Golang-Binary sein, die auf externe Datenbanken zugreift - aber auch PHP- oder Python-Code, der von einem Supervisor wie Nginx oder GUnicorn ausgeführt und dadurch erreichbar gemacht wird.
Die Minimum Viable App (kurz MVA) klärt die Frage, wie man eine isolierte, selbstständig lauffähige Anwendung für den Betrieb in Kubernetes bereitstellt. Sie ist das fehlende Puzzle-Teile an der Schnittstelle zwischen Dev und Ops - ein klarer Vertrag zwischen Entwicklung und Betrieb hinsichtlich der Laufzeitumgebung und der nötigen Anforderungen an die Beschaffenheit und Funktionalität der Software, um einen reibungslosen und für alle Parteien bedienbaren Betrieb der Software zu gewährleisten.
PEP | Titel | Audience |
---|---|---|
1 | Die Programmiersprache ist egal | Betrieb |
2 | Code wird automatisch versioniert | Betrieb |
3 | Abhängigkeiten werden immer explizit definiert | Betrieb |
4 | Die App wird immer als Container-Image und Helm-Chart bereitgestellt | Entwicklung |
5 | Build & Release passieren automatisch | Entwicklung |
6 | (BONUS) Container-Images werden für mehrere Architekturen gebaut | Entwicklung |
7 | Gültige Interfaces sind HTTP, GRPC und WebSocket | Entwicklung |
8 | Die App funktioniert mit dynamischen Hostnamen | Entwicklung |
9 | Um TLS kümmert sich der Ingress Controller (TLS ist immer optional) | Entwickler |
10 | Die App ist zu 100% durch Environment Variablen konfigurierbar | Entwickler |
13 | Lokale Persistenzen sind verboten | Entwickler |
15 | Abhängigkeiten müssen generisch und austauschbar sein (PostgreSQL vs. RDS) | Entwickler |
16 | Externe Abhängikeiten werden nur über Netzwerk angesprochen | Entwickler |
17 | Moderne Verschlüsselungsalgorithmen sind Pflicht | Entwickler |
18 | Lokale User sind verboten | Entwickler |
19 | (BONUS) Stellt Audit-Logs zur Verfügung | Entwickler |
20 | (BONUS) Ist mit externen Secret-Management Systemen integrierbar | Entwickler |
(nicht mit “latest”)
(Semantic Versioning, Conventional Commits)
(Pipelines)
(d.h. benötigt nicht immer den gleichen Hostnamen um zu funktionieren)
(Liste von Client Libraries)
(S3, KV, etc)
(Docker, Helm)
(Postgres vs RDS)
(kein lokal installierter Sendmail)
(nicht mit “latest”)
(z.B. kein htpasswd für Hashes)
(keine eigene User-Verwaltung, keine SSO-Tax)
(kein manuelles Eingreifen nötig, Continuous Deployment)
(Init-Container)
(niemals zur Build-Zeit)
(NICHT in ein File)
(Best-Practice: Info -> Debug)
(Tracing)
(Client-Libraries)
(Exception-Logging, ggf. sowas wie Sentry, Stacktraces vermeiden)
(Ingress, kein nginx-Voodoo im Container)
(cert-manager)
(external-dns/Admin)
Eine Liste aller Technologien die wir unterstützen finden Sie hier.
Kennt ihr das? Ihr schließt eure Ausbildung oder Weiterbildung ab, startet voller Vorfreude in euren ersten Job in einem Softwareunternehmen und plötzlich seid ihr umgeben von lauter Profis mit unglaublichen Skills. 😱
Aber hey, erinnert euch daran: Jeder Experte hat mal klein angefangen. Auch sie hatten ihre Anfänge und Herausforderungen und sind heute noch manchmal von kniffligem Code herausgefordert. Das Beste daran? Sie sind immer bereit zu helfen und ihr Wissen zu teilen, wenn ihr mal feststeckt. 🤝
Teilt eure ersten Job-Erlebnisse mit uns! Wie habt ihr euch gefühlt?
#ErsterJob #SoftwareEntwicklerLeben #VomAnfängerZumProfi #weareayedo #saarland #saarbrücken
Kubernetes v1.32: Optimierung Ihrer Container-Infrastruktur mit ayedo In der dynamischen Welt der Container-Orchestrierung spielt Kubernetes eine zentrale Rolle. Bei ayedo, den Experten für Docker und …
Einleitung In der heutigen Softwareentwicklung, in der KI-gestützte Tools wie GitHub Copilot und ähnliche Assistenten unterstützen, suchen viele Entwickler nach flexibleren und …
Maximale Datensouveränität mit unserer internen RAG-Lösung und der ayedo Cloud Einleitung In der heutigen digitalen Ära ist der effiziente Umgang mit großen Datenmengen entscheidend für den …
Erfolgreiche Partnerschaft: ESCRA und ayedo revolutionieren ZTNA mit Kubernetes und Cloud-Hosting Strategische Partnerschaften sind entscheidend, um Stärken zu bündeln und gemeinsam zu wachsen. Ein …
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.