Best Practices und Empfehlungen für den Einsatz von Containern und Kubernetes in Produktionsumgebungen

Best Practices und Empfehlungen für den Einsatz von Containern und Kubernetes in Produktionsumgebungen
Das Ökosystem der Containerisierungstechnologien entwickelt sich schnell und verändert sich ständig, weshalb es in diesem Bereich an bewährten Arbeitspraktiken mangelt. Dennoch wird Kubernetes und Container immer häufiger eingesetzt – sowohl zur Modernisierung alter Anwendungen als auch zur Entwicklung neuer Cloud-Anwendungen. 

Der Befehl Kubernetes aaS von Mail.ru hat Prognosen, Empfehlungen und Best Practices für Marktführer von Gartner, 451 Research, StacxRoх und anderen gesammelt. Diese helfen, die Bereitstellung von Containern in Produktionsumgebungen zu gewährleisten und zu beschleunigen.

Wie erkennt man, ob Ihr Unternehmen bereit ist, Container in einer Produktionsumgebung bereitzustellen?

Laut Gartner, wird im Jahr 2022 mehr als 75 % der Organisationen containerisierte Anwendungen in der Produktion nutzen. Das ist erheblich mehr als derzeit, wo weniger als 30 % der Unternehmen solche Anwendungen verwenden. 

Laut 451 Research, wird der prognostizierte Markt für den Einsatz von ContainTechnologien im Jahr 2022 bei 4,3 Milliarden USD liegen. Das übersteigt die Beträge, die 2019 prognostiziert wurden, mehr als doppelt, mit einer Marktwachstumsrate von 30%.

In Umfrage von Portworx und Aqua Security 87 % der Befragten gaben an, derzeit Container-Technologien zu nutzen. Zum Vergleich: Im Jahr 2017 waren es nur 55 % der Befragten. 

Trotz des steigenden Interesses und der wachsenden Einführung von Containern erfordert deren Einsatz in der Produktion Schulungen aufgrund technologischer Unreife und fehlendem Know-how. Organisationen sollten realistisch ihre Geschäftsprozesse betrachten, die eine Containerisierung von Anwendungen benötigen. IT-Führungskräfte sollten prüfen, ob sie über die notwendigen Fähigkeiten verfügen, um voranzukommen, insbesondere in Anbetracht des schnellen Lernbedarfs. 

Gartner-Experten sind der Meinung, dass die Fragen im Bild unten dabei helfen können, herauszufinden, ob Sie bereit sind, Container in der Produktion einzusetzen:

Best Practices und Empfehlungen für den Einsatz von Containern und Kubernetes in Produktionsumgebungen

Die häufigsten Fehler bei der Anwendung von Containern in der Produktion

Organisationen unterschätzen oft den Aufwand, der erforderlich ist, um Container in der Produktion zu betreiben. Gartner fand heraus dass es mehrere häufige Fehler in den Szenarien von Kunden bei der Anwendung von Containern in Produktionsumgebungen gibt:

Best Practices und Empfehlungen für den Einsatz von Containern und Kubernetes in Produktionsumgebungen

Wie man die Sicherheit von Containern gewährleistet

Sicherheit sollte nicht auf die lange Bank geschoben werden. Sie muss in den DevOps-Prozess integriert werden, weshalb sogar der spezielle Begriff DevSecOps entstanden ist. Organisationen müssen die Planung des Schutzes der Containerumgebung über den gesamten Lebenszyklus der Entwicklung hinweg berücksichtigen, der den Build- und Entwicklungsprozess, die Bereitstellung und die Ausführung der Anwendung umfasst.

Empfehlungen von Gartner

  1. Integrieren Sie den Prozess der Bildscanung von Anwendungen zur Identifizierung von Schwachstellen in die Continuous Integration/Continuous Delivery (CI/CD) Pipeline. Anwendungen werden während der Build- und Betriebsphasen gescannt. Heben Sie die Notwendigkeit hervor, Komponenten mit Open-Source-Code, Bibliotheken und Frameworks zu scannen und zu identifizieren. Die Nutzung alter, anfälliger Versionen durch Entwickler ist eine der Hauptursachen für Container-Schwachstellen.
  2. Verbessern Sie die Konfiguration mithilfe der Tests des Center for Internet Security (CIS), die sowohl für Docker als auch für Kubernetes verfügbar sind.
  3. Setzen Sie unbedingt Zugangskontrollen ein, gewährleisten Sie eine klare Rollenverteilung und implementieren Sie eine Geheimnisverwaltungspolitik. Vertrauliche Informationen, wie Secure Sockets Layer (SSL)-Schlüssel oder Datenbankanmeldeinformationen, werden vom Orchestrator oder von Drittanbieterdiensten verschlüsselt und zur Laufzeit bereitgestellt.
  4. Vermeiden Sie Container mit erhöhten Rechten durch Sicherheitsrichtlinien, um potenzielle Sicherheitsrisiken zu minimieren.
  5. Nutzen Sie Sicherheitswerkzeuge, die Whitelists, verhaltensbasiertes Monitoring und Anomalieerkennung bieten, um böswillige Aktivitäten zu verhindern.

Empfehlungen von StacxRox:

  1. Nutzen Sie die integrierten Funktionen von Kubernetes. Richten Sie den Zugriff für Benutzer über Rollen ein. Stellen Sie sicher, dass Sie keine unnötigen Berechtigungen an Einzelpersonen vergeben, auch wenn es einige Überlegungen zur Minimierung der erforderlichen Berechtigungen erfordert. Es mag verlockend erscheinen, einem Cluster-Administrator umfangreiche Privilegien einzuräumen, da dies zu Beginn Zeit spart. Jedoch können Kompromisse oder Fehler im Konto später verheerende Folgen haben. 
  2. Vermeiden Sie die doppelte Vergabe von Zugriffsrechten. Manchmal kann es hilfreich sein, verschiedene Rollen zu überlappen, aber dies kann zu Betriebsproblemen führen und 'tote Zonen' beim Entfernen von Berechtigungen schaffen. Außerdem ist es wichtig, nicht verwendete und inaktive Rollen zu löschen.
  3. Richten Sie Netzwerk-Richtlinien ein: Isolieren Sie Module, um den Zugriff einzuschränken; erlauben Sie ausdrücklich den Internetzugang für die Module, die dies benötigen, mithilfe von Labels; ermöglichen Sie explizit die Kommunikation zwischen den Modulen, die miteinander kommunizieren müssen. 

Wie man die Überwachung von Containern und den darin betriebenen Diensten organisiert

Sicherheit und Überwachung — wichtige Herausforderungen für Unternehmen bei der Bereitstellung von Kubernetes-Clustern. Entwickler konzentrieren sich meistens stärker auf die Funktionen der Anwendungen, die sie entwickeln, als auf die Aspekte der Überwachung dieser Anwendungen.

Empfehlungen von Gartner:

  1. Versuchen Sie, den Zustand von Containern oder den darin befindlichen Diensten zusammen mit der Überwachung der Host-Systeme zu überwachen.
  2. Bevorzugen Sie Anbieter und Tools mit tiefer Integration in die Container-Orchestrierung, insbesondere Kubernetes.
  3. Wählen Sie Tools, die detaillierte Protokollierung, automatisches Entdecken von Diensten und Echtzeitempfehlungen unter Verwendung von Analytik und/oder maschinellem Lernen bereitstellen.

Im SolarWinds-Blog wird empfohlen,:

  1. Tools zur automatischen Erkennung und Verfolgung von Containerkennzahlen, zur Korrelation von Leistungsmetrik wie CPU, Speicher und Betriebszeit zu verwenden.
  2. Optimale Kapazitätsplanung sicherstellen, indem der Zeitpunkt der Kapazitätsabnutzung auf Basis der Containerüberwachungsdaten prognostiziert wird.
  3. Überwachen Sie die in Containern betriebenen Anwendungen hinsichtlich Verfügbarkeit und Leistung. Dies ist sowohl für die Kapazitätsplanung als auch für die Behebung von Leistungsproblemen von Nutzen.
  4. Automatisieren Sie Arbeitsabläufe, indem Sie Unterstützung für Verwaltung und Skalierung von Containern und ihren Bereitstellungsumgebungen bereitstellen.
  5. Automatisieren Sie den Zugriffskontrollprozess, um die Benutzerdatenbank zu überwachen, veraltete und Gastkonten zu deaktivieren und überflüssige Berechtigungen zu entfernen.
  6. Stellen Sie sicher, dass Ihr Toolkit in der Lage ist, diese Container und Anwendungen in verschiedenen Umgebungen (Cloud-, On-Premise- oder Hybrid-Umgebungen) zu überwachen, um die Leistung in der Infrastruktur, im Netzwerk, in den Systemen und in den Anwendungen zu visualisieren und abzugleichen.

Wie man Daten speichert und ihre Sicherheit gewährleistet

Mit der zunehmenden Zahl von zustandsbehafteten Arbeitscontainern müssen Kunden die Daten außerhalb des Hosts berücksichtigen sowie die Notwendigkeit, diese Daten zu schützen. 

Laut Umfrage von Portworx und Aqua Security, wobei die Datensicherheit an erster Stelle der von den meisten Befragten genannten Sicherheitsprobleme steht (61%). 

Datenverschlüsselung ist eine grundlegende Sicherheitsstrategie (64%), aber die Befragten setzen auch auf die Überwachung der Ausführung (49%), das Scannen nach Schwachstellen in Registrierungsdaten (49%), das Scannen nach Schwachstellen in CI/CD-Pipelines (49%) und die Blockierung von Anomalien durch Runtime-Schutz (48%).

(49%), Schwachstellenscans in Registries (49%), Schwachstellenscans in CI/CD-Pipelines (49%) und Anomalieblockierung durch Echtzeitschutz (48%).

Empfehlungen von Gartner:

  1. Wählen Sie Lösung zur Datenspeicherung, die auf den Prinzipien der Mikroservice-Architekturbasieren. Achten Sie darauf, dass sie den Anforderungen an die Datenspeicherung für Container-Services entsprechen, hardwareunabhängig sind, über APIs verwaltet werden, eine verteilte Architektur unterstützen und sowohl lokale Bereitstellung als auch Bereitstellung in der Public Cloud ermöglichen.
  2. Vermeiden Sie proprietäre Plugins und Schnittstellen. Wählen Sie Anbieter, die die Integration mit Kubernetes unterstützen und Standard-Schnittstellen wie CSI (Container Storage Interfaces) bieten.

Wie man mit Netzwerken arbeitet

Das traditionelle Modell eines Unternehmensnetzwerks, in dem IT-Spezialisten Entwicklungs-, Test-, Qualitäts- und Produktionsumgebungen für jedes Projekt schaffen, stimmt nicht immer gut mit dem Arbeitsablauf der kontinuierlichen Entwicklung überein. Darüber hinaus umfassen Container-Netzwerke mehrere Ebenen.

In Im Magalix-Blog haben wir allgemeine Richtlinien zusammengestellt, die bei der Implementierung einer clusterbasierten Netzwerk-Lösung beachtet werden sollten:

  1. Pods, die auf demselben Knoten geplant sind, müssen in der Lage sein, Daten mit anderen Modulen auszutauschen, ohne NAT (Network Address Translation) zu verwenden.
  2. Alle System-Demons (Hintergrundprozesse, z. B. kubelet), die auf einem bestimmten Knoten laufen, können mit Pods kommunizieren, die auf demselben Knoten laufen.
  3. Pods, die das Host-Netzwerk nutzen, sollten in der Lage sein, mit allen anderen Pods auf allen anderen Knoten zu kommunizieren, ohne NAT zu verwenden. Bitte beachten Sie, dass das Host-Netzwerk nur auf Linux-Hosts unterstützt wird.

Netzwerklösungen sollten eng mit den Kernfunktionen und Richtlinien von Kubernetes integriert sein. IT-Leiter sollten nach einer hohen Automatisierung der Netzwerkinfrastruktur streben, um Entwicklern die richtigen Werkzeuge und ausreichend Flexibilität zu bieten.

Empfehlungen von Gartner:

  1. Überprüfen Sie, ob Ihr CaaS (Container as a Service) oder Ihr SDN (Software Defined Network) Kubernetes-Netzwerke unterstützt. Wenn nicht oder wenn die Unterstützung unzureichend ist, verwenden Sie für Ihre Container eine CNI (Container Network Interface), die die erforderlichen Funktionen und Richtlinien unterstützt.
  2. Stellen Sie sicher, dass Ihr CaaS oder PaaS (Platform as a Service) die Einrichtung von eingehenden Controllern und/oder Lastenverteilern unterstützt, die den eingehenden Verkehr zwischen den Knoten des Clusters verteilen. Wenn diese Funktion nicht verfügbar ist, prüfen Sie den Einsatz von externen Proxys oder Service-Mesh-Mechanismen.
  3. Schulen Sie Ihre Netzwerkingenieure im Umgang mit Linux-Netzwerken und Netzwerkautomatisierungswerkzeugen, um die Fähigkeiten zu verbessern und die Flexibilität zu erhöhen.

Wie man den Lebenszyklus von Anwendungen verwaltet

Für die automatisierte und nahtlose Bereitstellung von Anwendungen sollten Sie die Container-Orchestrierung mit weiteren Automatisierungstools ergänzen, wie z. B. Infrastructure as Code (IaC)-Produkten. Dazu gehören Chef, Puppet, Ansible und Terraform. 

Außerdem sind Automatisierungswerkzeuge für den Build- und Release-Prozess von Anwendungen erforderlich (siehe „Magischer Quadrant für die Orchestrierung von Anwendungs-Deployments“). Container bieten ebenfalls Skalierungsoptionen, ähnlich wie sie beim Einsatz von virtuellen Maschinen (VMs) verfügbar waren. Daher benötigen IT-Leiter Werkzeuge für das Container-Lifecycle-Management.

Empfehlungen von Gartner:

  1. Legen Sie Standards für Basiscontainer-Images fest, wobei Größe, Lizenzierung und Flexibilität zur Integration von Komponenten durch Entwickler berücksichtigt werden sollten.
  2. Verwenden Sie Configuration-Management-Systeme zur Verwaltung des Lebenszyklus von Containern, die Konfigurationen in Schichten basierend auf Basis-Images speichern, die in öffentlichen oder privaten Repositories vorhanden sind.
  3. Integrieren Sie die CaaS-Plattform mit Automatisierungstools, um den gesamten Anwendungsworkflow zu automatisieren.

Wie Sie Container mit Orchestrierern verwalten

Die grundlegenden Funktionen für das Bereitstellen von Containern werden auf den Ebenen der Orchestrierung und Planung bereitgestellt. Bei der Planung werden Container auf den optimalsten Hosts im Cluster platziert, wie es die Anforderungen der Orchestrierungsebene vorgeben. 

Kubernetes hat sich de facto als der Standard für die Containerorchestrierung etabliert, unterstützt von einer aktiven Gemeinschaft und den meisten führenden kommerziellen Anbietern. 

Empfehlungen von Gartner:

  1. Definieren Sie die grundlegenden Anforderungen an Sicherheitsmanagement, Monitoring, Richtlinienverwaltung, Datenspeicherung, Netzwerkmanagement und den Lebenszyklus von Containern.
  2. Wählen Sie basierend auf diesen Anforderungen das Tool aus, das am besten zu Ihren Bedürfnissen und Nutzungsszenarien passt.
  3. Nutzen Sie die Gartner-Studien (siehe "Wie man das Bereitstellungsmodell für Kubernetes auswählt"), um die Vor- und Nachteile verschiedener Modelle für die Bereitstellung von Kubernetes zu verstehen und das passendste für Ihre Aufgabe auszuwählen.
  4. Wählen Sie einen Anbieter, der hybride Orchestrierung für Container in mehreren Umgebungen bieten kann, mit enger Integration zu Backends, gemeinsamen Managementplänen und abgestimmten Preismodellen.

Wie Sie die Möglichkeiten von Cloud-Anbietern nutzen können

Laut Gartner, wächst das Interesse an der Bereitstellung von Containern in öffentlichen IaaS-Clouds aufgrund der Verfügbarkeit von fertigen CaaS-Angeboten und der engen Integration dieser Angebote mit anderen Produkten, die von Cloud-Anbietern bereitgestellt werden.

IaaS-Clouds bieten eine bedarfsgerechte Ressourcennutzung, schnelle Skalierbarkeit und Service-Management, das hilft, die Notwendigkeit tiefgehender Infrastrukturkenntnisse und -wartung zu vermeiden. Die meisten Cloud-Anbieter bieten Container-Management-Dienste an, und einige bieten mehrere Orchestrierungsoptionen. 

Die wichtigsten Anbieter von Managed Services sind in der Tabelle aufgeführt: 

Cloud-Anbieter
Servicetyp
Produkt/Dienstleistung

Alibaba
Native Cloud Service
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes

Amazon Web Services (AWS)
Native Cloud Service
Amazon Elastic Container Services (ECS), Amazon ECS für Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Giant Swarm Managed Kubernetes Infrastruktur

Google
Native Cloud Service
Google Container Engine (GKE)

IBM
Native Cloud Service
IBM Cloud Kubernetes Service

Microsoft
Native Cloud Service
Azure Kubernetes Service, Azure Service Fabric

Oracle
Native Cloud Service
OCI Container Engine für Kubernetes

Platform9
MSP
Managed Kubernetes

Red Hat
Gehosteter Service
OpenShift Dedicated & Online

VMware
Gehosteter Service
Cloud PKS (Beta)

Mail.ru Cloud Solutions*
Native Cloud Service
Mail.ru Cloud Containers

* Wir geben zu, wir haben uns hier selbst in die Übersetzung eingefügt 🙂

Anbieter von Public Clouds erweitern ständig ihre Möglichkeiten und führen lokale Produkte ein. In naher Zukunft werden Cloud-Anbieter die Unterstützung für hybride Cloud- und Multi-Cloud-Umgebungen weiterentwickeln. 

Gartner Empfehlungen:

  1. Bewerten Sie objektiv die Fähigkeiten Ihrer Organisation, die entsprechenden Tools bereitzustellen und zu verwalten, und prüfen Sie alternative Dienste zur Verwaltung von Cloud-Containern.
  2. Wählen Sie Software sorgfältig aus und nutzen Sie Open Source, wo immer es möglich ist.
  3. Wählen Sie Anbieter mit einheitlichen Betriebsmodellen in hybriden Umgebungen, die das Management von integrierten Clustern über ein einheitliches Dashboard anbieten, sowie Anbieter, die die eigenständige Nutzung von IaaS vereinfachen.

Einige Tipps zur Auswahl eines Kubernetes aaS-Anbieters aus dem Replex-Blog:

  1. Es lohnt sich, nach Distributionen zu suchen, die von Haus aus hohe Verfügbarkeit unterstützen. Dazu gehört die Unterstützung mehrerer grundlegender Architekturen, hochverfügbarer Komponenten wie etcd sowie Backup- und Wiederherstellungsfunktionen.
  2. Um die Mobilität von Kubernetes-Umgebungen zu gewährleisten, ist es ratsam, Cloud-Anbieter auszuwählen, die eine breite Palette von Bereitstellungsmodellen unterstützen: von lokal bis hin zu hybrid und multi-cloud. 
  3. Die Angebote der Anbieter sollten auch hinsichtlich der Einfachheit von Konfiguration, Installation und Clusterbildung sowie von Aktualisierungen, Überwachung und Fehlerbehebung bewertet werden. Eine Grundanforderung ist die Unterstützung vollständig automatisierter Cluster-Updates ohne Ausfallzeiten. Die gewählte Lösung sollte zudem manuelle Updates ermöglichen. 
  4. Identity and Access Management ist sowohl aus Sicherheits- als auch aus Verwaltungsgründen wichtig. Stellen Sie sicher, dass die gewählte Kubernetes-Distribution die Integration mit den Authentifizierungs- und Autorisierungswerkzeugen unterstützt, die im Unternehmen verwendet werden. RBAC und detaillierte Zugriffskontrolle sind ebenfalls wichtige Funktionen.
  5. Die ausgewählte Distribution muss entweder eine eigene Netzwerklösung besitzen, die durch Software definiert wird und eine breite Palette von Anforderungen verschiedener Anwendungen oder Infrastrukturen abdeckt, oder eines der gängigen CNI-basierten Netzwerkimplementierungen wie Flannel, Calico, kube-router oder OVN unterstützen.

Die Umsetzung von Containern in der Produktion wird zunehmend zur Haupttendenz, wie die Ergebnisse einer Umfrage zeigen, die auf der Gartner-Session zu Infrastruktur, Operationen und Cloud-Strategien (IOCS) im Dezember 2018 stattfand:

Best Practices und Empfehlungen für den Einsatz von Containern und Kubernetes in Produktionsumgebungen
Wie wir sehen, nutzen bereits 27 % der Befragten Container in ihrem Betrieb, während 63 % planen, dies zu tun.

In Umfrage von Portworx und Aqua Security 24 % der Befragten gaben an, jährlich mehr als eine halbe Million Dollar in Containertechnologien zu investieren, während 17 % mehr als eine Million Dollar jährlich dafür ausgeben. 

Dieser Artikel wurde von dem Team der Cloud-Plattform vorbereitet. Mail.ru Cloud Lösungen.

Weitere Lesetipps zu diesem Thema:

  1. Best Practices für DevOps: DORA-Bericht.
  2. Kubernetes im Geiste der Piraterie mit einem Implementierungsschema.
  3. 25 nützliche Tools für die Bereitstellung und Implementierung von Kubernetes.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster