Endlich ist es soweit – Freigabe zur Entwicklung mit Kubernetes eines Produktionssystems. In der Demoprojekten und zu Testzwecken habe ich bereits mit Rancher + AWS, Google Kubernetes Engine und weiteren Anbietern „gespielt“. Nun geht es allerdings ans eingemachte, denn ein Live System hat doch meist andere Anforderungen an Sicherheit, Skalierbarkeit und Automation.
Managed Kubernetes
Warum Managed Kubernetes? Erfahrungen mit Rancher hatte ich bereits und kann daher sagen dass das Setup nicht das komplizierte ist, allerdings das Maintaining. Mit Terraform lässt sich relativ schnell alles vorkonfigurieren und deployen, allerdings ist mein Fokus die Weiterentwicklung des Projektes Shopware 6. Hier ist die Infrastruktur nur ein Teil des ganzen und würde einfach zu viel Zeit fressen.
Digital Ocean
Warum Digital Ocean? Es mag vielleicht nicht der schnellste und flexibelste Anbieter auf dem Markt sein, aber mit Sicherheit bietet Digital Ocean alle nötigen Konfigurationsmöglichkeiten. Gerade wenn man sich nur in der VPC von Digital Ocean bewegt ist man sicher und schnell aufgesetzt.
GKE zum Beispiel bietet unendlich viele Setup Möglichkeiten, ist dadurch aber sehr komplex und ein „proof of concept“ auf die Beine zu stellen ist damit umso schwerer.
Verwendete Produkte in Digital Ocean
Droplets
Die meisten unter euch kennen Sie. Eine simpler V-Server der per Click aufgesetzt ist
Diese werden benötigt um den Kubernetes (K8s) Cluster aufzusetzen. Jeder hinterlegte Node in K8s wird später als Droplet angelegt und enthält einen Link zum Cluster.
Kubernetes Cluster
Die K8s Cluster sind nun schon eine Weile im Portfolie von Digital Ocean. Hier wählt Ihr unter zwei K8s Versionen aus, legt euren Nodepool fest (wie viele VMs wollt Ihr – Default habt Ihr ein Limit von 25, dies lässt sich aber auf Anfrage erhöhen).
Managed Databases
Für das testing lässt sich einfach ein Container mit MySQL hochfahren in dem man die DB importiert. Hier spiele Dinge wie Redundanz und High Availability keine Rolle. Geht es aber um eine Produktionsumgebungs sieht das ganze anders aus. Hier möchte man mind. einen Standby Node haben und am besten auch noch eine saubere und schnelle Backup und Recovery Lösung.
Gerade im Bereich Backup punktet Digital Ocean mit einem super PITR (Point in time recovery). Möglich machen dies das Binary Logging in Mysql. Mehr dazu gibt es in einem getrennten Beitrag dazu in dem ich dieses Backup teste während ein Loadtest von Locust läuft und anhand von einer Bestellung das ganze getestet wird. So viel kann ich schon sagen, es funktioniert und zwar erstaunlich gut und schnell.
Auch bietet Shopware 6.4.12.0 bald das Read Only Clustering von Haus aus. Dies könnt Ihr in Managed Databases auch einfach aktivieren und dann in der .env konfigurieren.
Container Registry
Wir arbeiten mit Gitlab und haben unsere Shopware Shops in production Repos abgelegt. Diese müssen in der CI gebuilded und in eine Registry gepusht werden. Hier bietet sich an das ganze auch in Digital Ocean abzubilden. Hier würde ich mir etwas mehr Flexibilität beim Pricing wünschen. Beispiel: 50 Repos zum Preis von 10 USD
Loadbalancer und VPC
Die ganze Infrastrukutur muss natürlich erreichbar sein. Hierfür wird über doctl (der Digital Ocean CLI) ein Loadbalancer mit einer .yaml File erstellt, welcher dann auf den K8s Cluster zugreift.
Die interne Kommunikation wird in diesem Setup nur über das VPC laufen. Sprich es gibt ein internes Subnetz welches für die Droplets, VMs, DBs etc. konfiguriert wurde und automatisch skaliert
Daher ist es auch wichtig das Ihr eure Services alle in der gleichen Zone startet, sonst kann dies zu unnötigen Latenzen und Konfigurationen führen.
Last but not least – Monitoring
Das Monitoring von Digital Ocean ist sehr „basic“ – finde ich aber als zusätzliches Backup von kleinen Instanzen nicht verkehrt.
Euer K8s Cluster solltet Ihr mit Prometheus, Grafana und Loki monitoren. Hier gibt es einige Tech Talks und Tutorials von Digital Ocean -> https://www.digitalocean.com/community/tech_talks/best-practices-in-monitoring-a-kubernetes-cluster-with-prometheus-grafana-and-loki
Abschluss
Jeder der zuvor erwähnten Produkte bekommt im Laufe der nächsten 2-3 Monate einen eigenen Artikel in dem am Beispiel Shopware 6.4.12.0 alles erklärt wird.
Sollte das Thema bei euch Interesse geweckt haben und Ihr möchtet das ganze eventuell auch als Video auf Youtube sehen würde ich mich über einen Kommentar freuen.