Wir arbeiten viel mit Entwicklungsteams zusammen, die gerade zu OpenShift gewechselt sind, und bemühen uns, ihnen Empfehlungen und Best Practices für die erfolgreiche Erstellung und Implementierung von Anwendungen auf dieser Plattform bereitzustellen. Basierend auf den Ergebnissen dieser Arbeit haben wir unserer Meinung nach 14 Schlüsselpraktiken ausgewählt, die in zwei Kategorien unterteilt werden können: Anwendungszuverlässigkeit und Anwendungssicherheit. Diese Kategorien überschneiden sich, denn je höher die Zuverlässigkeit, desto besser die Sicherheit und umgekehrt. Die Liste der Best Practices lautet wie folgt.
Anwendungszuverlässigkeit
In diesem Abschnitt werden 9 Best Practices zusammengestellt, mit denen Sie die Verfügbarkeit, Verfügbarkeit und Benutzerfreundlichkeit von Apps verbessern können.
1. Speichern Sie die Anwendungskonfiguration nicht in einem Container
Wenn das Container-Image eine Konfiguration für eine bestimmte Umgebung (Dev, QA, Prod) enthält, funktioniert es nicht, es ohne Änderungen zwischen Umgebungen zu übertragen. Dies ist unter dem Gesichtspunkt der Zuverlässigkeit des Freigabeprozesses schlecht, da das in den vorherigen Phasen getestete Image nicht mehr in Produktion gehen wird. Bewahren Sie die Anwendungskonfiguration daher nicht für eine bestimmte Umgebung im Container auf, sondern separat, z. B. mithilfe von ConfigMaps und Secrets.
2. Legen Sie die Ressourcenanforderungen und -grenzen in Pod-Definitionen fest
Ohne eine ordnungsgemäße Anpassung der Ressourcenanforderungen können Anwendungen überwältigende Anforderungen an Speicher und Prozessor stellen. Umgekehrt kann der Cluster mit den expliziten CPU- und Speicheranforderungen der Anwendung effizient versenden, um der Anwendung die angeforderten Ressourcen bereitzustellen.
3. (liveness) (readiness) pod’
: , liveness, , readiness. . OpenShift Platform.
4. PodDisruptionBudget
pod’ , , , autoscaler , . , PodDistruptionBudget.
5. pod’
pod , pod', , , .
6. –
, . -, . . OpenShift Platform.
7.
Prometheus Grafana - .
8. stdout/stderr
OpenShift (ELK, Splunk). – -. , , , , .
9. Circuit breakers, Timeouts, Retries, Rate Limiting
, (Rate Limiting, Circuit Breakers) (Timeouts, Retries). OpenShift Service Mesh, , .
5 , , , .
10.
- , , , . community-, , . , , Docker Hub, – !
11.
. , , .
12. build- , runtime-
Build- , , . runtime- , , .
13. Restricted security context constraint (SCC) – ,
, restricted SCC ( . ). , , restricted SCC .
14. TLS
. , OpenShift, , TLS-, OpenShift Service Mesh , .