Best Practices und Best Practices für die Ausführung von Containern und Kubernetes in Produktionsumgebungen

Best Practices und Best Practices für die Ausführung von Containern und Kubernetes in Produktionsumgebungen
Das Ökosystem der Containerisierungstechnologie entwickelt und verändert sich schnell, sodass es in diesem Bereich an guten Arbeitspraktiken mangelt. Allerdings werden Kubernetes und Container zunehmend eingesetzt, sowohl zur Modernisierung von Legacy-Anwendungen als auch zur Entwicklung moderner Cloud-Anwendungen. 

Team Kubernetes aaS von Mail.ru gesammelte Prognosen, Ratschläge und Best Practices für Marktführer von Gartner, 451 Research, StacxRoх und anderen. Sie werden den Einsatz von Containern in Produktionsumgebungen ermöglichen und beschleunigen.

So erfahren Sie, ob Ihr Unternehmen bereit ist, Container in einer Produktionsumgebung bereitzustellen

Laut GartnerIm Jahr 2022 werden mehr als 75 % der Unternehmen containerisierte Anwendungen in der Produktion verwenden. Das ist deutlich mehr als derzeit, wo weniger als 30 % der Unternehmen solche Anwendungen nutzen. 

Согласно 451 ForschungDer prognostizierte Markt für Anwendungen der Containertechnologie wird im Jahr 2022 4,3 Milliarden US-Dollar betragen. Das ist mehr als das Doppelte des im Jahr 2019 prognostizierten Betrags, bei einer Marktwachstumsrate von 30 %.

В Umfrage von Portworx und Aqua Security 87 % der Befragten gaben an, dass sie derzeit Containertechnologien nutzen. Zum Vergleich: Im Jahr 2017 waren es 55 % dieser Befragten. 

Trotz des wachsenden Interesses und der zunehmenden Akzeptanz von Containern ist aufgrund der technologischen Unreife und des Mangels an Know-how eine Lernkurve erforderlich, um sie in die Produktion zu bringen. Unternehmen müssen realistische Geschäftsprozesse einschätzen, die eine Containerisierung von Anwendungen erfordern. IT-Leiter sollten bewerten, ob sie über die nötigen Fähigkeiten verfügen, um mit der Notwendigkeit, schnell zu lernen, voranzukommen. 

Gartner-Experten Wir glauben, dass die Fragen im Bild unten Ihnen dabei helfen werden, festzustellen, ob Sie bereit sind, Container in der Produktion bereitzustellen:

Best Practices und Best Practices für die Ausführung von Containern und Kubernetes in Produktionsumgebungen

Die häufigsten Fehler beim Einsatz von Behältern in der Produktion

Unternehmen unterschätzen häufig den Aufwand, der für den Betrieb von Containern in der Produktion erforderlich ist. Gartner hat es herausgefunden Einige häufige Fehler in Kundenszenarien beim Einsatz von Containern in Produktionsumgebungen:

Best Practices und Best Practices für die Ausführung von Containern und Kubernetes in Produktionsumgebungen

So bewahren Sie Container sicher auf

Sicherheit kann nicht „später“ behandelt werden. Es muss in den DevOps-Prozess eingebaut werden, weshalb es sogar einen speziellen Begriff gibt – DevSecOps. Organisationen müssen planen Schutz Ihrer Containerumgebung während des gesamten Entwicklungslebenszyklus, der den Erstellungs- und Entwicklungsprozess, die Bereitstellung und den Start der Anwendung umfasst.

Empfehlungen von Gartner

  1. Integrieren Sie den Prozess des Scannens von Anwendungsbildern auf Schwachstellen in Ihre CI/CD-Pipeline (Continuous Integration/Continuous Delivery). Anwendungen werden in der Software-Erstellungs- und Startphase gescannt. Betonen Sie die Notwendigkeit, Open-Source-Komponenten, Bibliotheken und Frameworks zu scannen und zu identifizieren. Entwickler, die alte, anfällige Versionen verwenden, sind eine der Hauptursachen für Container-Schwachstellen.
  2. Verbessern Sie Ihre Konfiguration mit Center for Internet Security-Tests (CIS), die sowohl für Docker als auch für Kubernetes verfügbar sind.
  3. Stellen Sie sicher, dass Sie Zugriffskontrollen durchsetzen, die Aufgabentrennung sicherstellen und eine Richtlinie zur Verwaltung von Geheimnissen implementieren. Vertrauliche Informationen wie SSL-Schlüssel (Secure Sockets Layer) oder Datenbankanmeldeinformationen werden vom Orchestrator oder von Verwaltungsdiensten Dritter verschlüsselt und zur Laufzeit offengelegt
  4. Vermeiden Sie erhöhte Container, indem Sie Sicherheitsrichtlinien verwalten, um potenzielle Sicherheitsverletzungen zu reduzieren.
  5. Verwenden Sie Sicherheitstools, die Whitelisting, Verhaltensüberwachung 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 mithilfe von Rollen ein. Stellen Sie sicher, dass Sie einzelnen Entitäten keine unnötigen Berechtigungen erteilen, auch wenn es einige Zeit dauern kann, über die erforderlichen Mindestberechtigungen nachzudenken. Es kann verlockend sein, dem Cluster-Administrator weitreichende Berechtigungen zu erteilen, da dies zunächst Zeit spart. Allerdings können Kompromisse oder Fehler im Konto später verheerende Folgen haben. 
  2. Vermeiden Sie doppelte Zugriffsberechtigungen. Manchmal kann es sinnvoll sein, dass sich verschiedene Rollen überschneiden, dies kann jedoch zu betrieblichen Problemen führen und auch zu blinden Flecken beim Entfernen von Berechtigungen führen. Außerdem ist es wichtig, ungenutzte und inaktive Rollen zu entfernen.
  3. Legen Sie Netzwerkrichtlinien fest: Isolieren Sie Module, um den Zugriff darauf einzuschränken. Erlauben Sie mithilfe von Tags explizit den Internetzugriff auf die Module, die ihn benötigen. Erlauben Sie explizit die Kommunikation zwischen den Modulen, die miteinander kommunizieren müssen. 

So organisieren Sie die Überwachung von Containern und darin enthaltenen Diensten

Sicherheit und Überwachung - Hauptprobleme von Unternehmen bei der Bereitstellung von Kubernetes-Clustern. Entwickler konzentrieren sich immer mehr auf die Funktionen der von ihnen entwickelten Anwendungen als auf deren Aspekte Überwachung dieser Anwendungen

Empfehlungen von Gartner:

  1. Versuchen Sie, den Status von Containern oder darin enthaltenen Diensten in Verbindung mit der Überwachung von Hostsystemen zu überwachen.
  2. Suchen Sie nach Anbietern und Tools mit umfassender Integration in die Container-Orchestrierung, insbesondere Kubernetes.
  3. Wählen Sie Tools, die detaillierte Protokollierung, automatische Serviceerkennung und Echtzeitempfehlungen mithilfe von Analysen und/oder maschinellem Lernen bieten.

Der SolarWinds-Blog gibt Ratschläge:

  1. Verwenden Sie Tools, um Containermetriken automatisch zu erkennen und zu verfolgen und Leistungsmetriken wie CPU, Speicher und Betriebszeit zu korrelieren.
  2. Stellen Sie eine optimale Kapazitätsplanung sicher, indem Sie Kapazitätserschöpfungstermine basierend auf Containerüberwachungsmetriken vorhersagen.
  3. Überwachen Sie Containeranwendungen auf Verfügbarkeit und Leistung, was sowohl für die Kapazitätsplanung als auch für die Behebung von Leistungsproblemen nützlich ist.
  4. Automatisieren Sie Arbeitsabläufe, indem Sie Verwaltungs- und Skalierungsunterstützung für Container und ihre Hosting-Umgebungen bereitstellen.
  5. Automatisieren Sie die Zugriffskontrolle, um Ihre Benutzerbasis zu überwachen, veraltete Konten und Gastkonten zu deaktivieren und unnötige Berechtigungen zu entfernen.
  6. Stellen Sie sicher, dass Ihr Toolset diese Container und Anwendungen in mehreren Umgebungen (Cloud, lokal oder hybrid) überwachen kann, um die Leistung über Infrastruktur, Netzwerk, Systeme und Anwendungen hinweg zu visualisieren und zu vergleichen.

So speichern Sie Daten und gewährleisten deren Sicherheit

Mit dem Aufkommen von Stateful-Worker-Containern müssen Clients das Vorhandensein von Daten außerhalb des Hosts und die Notwendigkeit, diese Daten zu schützen, berücksichtigen. 

Nach Umfrage von Portworx und Aqua SecurityDatensicherheit steht bei der Mehrheit der Befragten (61 %) ganz oben auf der Liste der Sicherheitsbedenken. 

Die Datenverschlüsselung ist die wichtigste Sicherheitsstrategie (64 %), die Befragten nutzen jedoch auch eine Laufzeitüberwachung

(49 %), Scannen von Registern auf Schwachstellen (49 %), Scannen auf Schwachstellen in CI/CD-Pipelines (49 %) und Blockieren von Anomalien durch Laufzeitschutz (48 %).

Empfehlungen von Gartner:

  1. Wählen Sie Speicherlösungen, die auf Prinzipien basieren Microservice-Architektur. Es ist besser, sich auf diejenigen zu konzentrieren, die die Datenspeicheranforderungen für Containerdienste erfüllen, hardwareunabhängig und API-gesteuert sind, über eine verteilte Architektur verfügen und die lokale Bereitstellung sowie die Bereitstellung in der öffentlichen Cloud unterstützen.
  2. Vermeiden Sie proprietäre Plugins und Schnittstellen. Wählen Sie Anbieter, die Kubernetes-Integration bieten und Standardschnittstellen wie CSI (Container Storage Interfaces) unterstützen.

Wie man mit Netzwerken arbeitet

Das traditionelle Unternehmensnetzwerkmodell, bei dem IT-Teams für jedes Projekt vernetzte Entwicklungs-, Test-, Qualitätssicherungs- und Produktionsumgebungen erstellen, passt nicht immer gut zum kontinuierlichen Entwicklungsworkflow. Darüber hinaus erstrecken sich Containernetzwerke über mehrere Ebenen.

В Blog Magalix gesammelt Allgemeine Regeln, die bei der Implementierung einer Cluster-Netzwerklösung eingehalten werden müssen:

  1. Pods, die auf demselben Knoten geplant sind, müssen in der Lage sein, mit anderen Pods zu kommunizieren, ohne NAT (Network Address Translation) zu verwenden.
  2. Alle System-Daemons (Hintergrundprozesse wie Kubelet), die auf einem bestimmten Knoten ausgeführt werden, können mit Pods kommunizieren, die auf demselben Knoten ausgeführt werden.
  3. Pods verwenden Host-Netzwerk, muss in der Lage sein, mit allen anderen Pods auf allen anderen Knoten zu kommunizieren, ohne NAT zu verwenden. Bitte beachten Sie, dass Host-Netzwerke nur auf Linux-Hosts unterstützt werden.

Netzwerklösungen müssen eng in Kubernetes-Primitive und -Richtlinien integriert sein. IT-Leiter sollten einen hohen Grad an Netzwerkautomatisierung anstreben und Entwicklern die richtigen Tools und ausreichend Flexibilität zur Verfügung stellen.

Empfehlungen von Gartner:

  1. Finden Sie heraus, ob Ihr CaaS (Container as a Service) oder Ihr SDN (Software Defined Network) Kubernetes-Netzwerke unterstützt. Wenn nicht oder die Unterstützung nicht ausreicht, nutzen Sie für Ihre Container die Netzwerkschnittstelle CNI (Container Network Interface), die die notwendigen Funktionalitäten und Richtlinien unterstützt.
  2. Stellen Sie sicher, dass Ihr CaaS oder PaaS (Platform as a Service) die Erstellung von Ingress-Controllern und/oder Load Balancern unterstützt, die den eingehenden Datenverkehr auf Clusterknoten verteilen. Wenn dies keine Option ist, prüfen Sie die Verwendung von Proxys oder Service Meshes von Drittanbietern.
  3. Schulen Sie Ihre Netzwerktechniker in Linux-Netzwerken und Netzwerkautomatisierungstools, um die Qualifikationslücke zu schließen und die Agilität zu erhöhen.

So verwalten Sie den Anwendungslebenszyklus

Für eine automatisierte und nahtlose Anwendungsbereitstellung müssen Sie die Container-Orchestrierung durch andere Automatisierungstools ergänzen, beispielsweise durch Infrastructure-as-Code-Produkte (IaC). Dazu gehören Chef, Puppet, Ansible und Terraform. 

Außerdem sind Automatisierungstools zum Erstellen und Ausrollen von Anwendungen erforderlich (siehe „Magic Quadrant für die Orchestrierung von Anwendungs-Releases"). Container bieten außerdem Erweiterbarkeitsfunktionen, die denen ähneln, die bei der Bereitstellung virtueller Maschinen (VMs) verfügbar sind. Deshalb müssen IT-Führungskräfte dies tun Tools für das Container-Lebenszyklusmanagement.

Empfehlungen von Gartner:

  1. Legen Sie Standards für Basis-Container-Images fest, basierend auf Größe, Lizenzierung und Flexibilität für Entwickler beim Hinzufügen von Komponenten.
  2. Verwenden Sie Konfigurationsmanagementsysteme, um den Lebenszyklus von Containern zu verwalten, die die Konfiguration auf Basis von Basisimages in öffentlichen oder privaten Repositorys schichten.
  3. Integrieren Sie Ihre CaaS-Plattform mit Automatisierungstools, um Ihren gesamten Anwendungsworkflow zu automatisieren.

So verwalten Sie Container mit Orchestratoren

Die Kernfunktionalität für die Bereitstellung von Containern wird auf der Orchestrierungs- und Planungsebene bereitgestellt. Während der Planung werden Container auf den optimalsten Hosts im Cluster platziert, je nach den Anforderungen der Orchestrierungsebene. 

Kubernetes hat sich zum De-facto-Standard für die Container-Orchestrierung mit einer aktiven Community entwickelt und wird von den meisten führenden kommerziellen Anbietern unterstützt. 

Empfehlungen von Gartner:

  1. Definieren Sie grundlegende Anforderungen für Sicherheitskontrollen, Überwachung, Richtlinienverwaltung, Datenpersistenz, Netzwerk und Container-Lebenszyklusmanagement.
  2. Wählen Sie anhand dieser Anforderungen das Tool aus, das Ihren Anforderungen und Anwendungsfällen am besten entspricht.
  3. Nutzen Sie Gartner-Forschung (siehe „So wählen Sie ein Kubernetes-Bereitstellungsmodell aus"), um die Vor- und Nachteile verschiedener Kubernetes-Bereitstellungsmodelle zu verstehen und das beste Modell für Ihre Anwendung auszuwählen.
  4. Wählen Sie einen Anbieter, der eine hybride Orchestrierung für Arbeitscontainer in mehreren Umgebungen mit enger Backend-Integration, gemeinsamen Verwaltungsplänen und konsistenten Preismodellen bereitstellen kann.

So nutzen Sie die Möglichkeiten von Cloud-Anbietern

Gartner glaubtdass das Interesse an der Bereitstellung von Containern in der öffentlichen Cloud IaaS aufgrund der Verfügbarkeit vorgefertigter CaaS-Angebote sowie der engen Integration dieser Angebote mit anderen von Cloud-Anbietern angebotenen Produkten wächst.

IaaS-Clouds bieten bedarfsgesteuerten Ressourcenverbrauch, schnelle Skalierbarkeit und Service-Management, wodurch die Notwendigkeit einer umfassenden Kenntnis der Infrastruktur und ihrer Wartung vermieden wird. Die meisten Cloud-Anbieter bieten einen Containerverwaltungsdienst an und einige bieten mehrere Orchestrierungsoptionen. 

Die wichtigsten Cloud-Managed-Service-Anbieter sind in der Tabelle aufgeführt: 

Cloud-Anbieter
Servicetyp
Produkt/Dienstleistung

Alibaba
Nativer Cloud-Dienst
Alibaba Cloud Container Service, Alibaba Cloud Container Service für Kubernetes

Amazon Web Services (AWS)
Nativer Cloud-Dienst
Amazon Elastic Container Services (ECS), Amazon ECS für Kubernetes (EKS), AWS Fargate

Riesenschwarm
MSP
Von einem Riesenschwarm verwaltete Kubernetes-Infrastruktur

Google
Nativer Cloud-Dienst
Google Container Engine (GKE)

IBM
Nativer Cloud-Dienst
IBM Cloud Kubernetes-Service

Microsoft
Nativer Cloud-Dienst
Azure Kubernetes Service, Azure Service Fabric

Oracle
Nativer Cloud-Dienst
OCI Container Engine für Kubernetes

Platform9
MSP
Verwaltetes Kubernetes

Red Hat
Gehosteter Dienst
OpenShift dediziert und online

VMware
Gehosteter Dienst
Cloud PKS (Beta)

Mail.ru Cloud-Lösungen*
Nativer Cloud-Dienst
Mail.ru Cloud-Container

* Wir wollen es nicht verheimlichen, wir haben uns während der Übersetzung hier hinzugefügt :)

Auch Public-Cloud-Anbieter fügen neue Funktionen hinzu und veröffentlichen On-Premise-Produkte. In naher Zukunft werden Cloud-Anbieter Unterstützung für Hybrid-Clouds und Multi-Cloud-Umgebungen entwickeln. 

Gartner-Empfehlungen:

  1. Bewerten Sie objektiv die Fähigkeit Ihres Unternehmens, geeignete Tools bereitzustellen und zu verwalten, und ziehen Sie alternative Cloud-Container-Managementdienste in Betracht.
  2. Wählen Sie Software sorgfältig aus und verwenden Sie nach Möglichkeit Open Source.
  3. Wählen Sie Anbieter mit gemeinsamen Betriebsmodellen in Hybridumgebungen, die eine zentrale Verwaltung von Verbundclustern bieten, sowie Anbieter, die das Selbst-Hosting von IaaS erleichtern.

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

  1. Es lohnt sich, nach Distributionen zu suchen, die sofort hohe Verfügbarkeit unterstützen. Dazu gehört die Unterstützung mehrerer wichtiger Architekturen, hochverfügbarer etcd-Komponenten sowie Sicherung und Wiederherstellung.
  2. Um die Mobilität in Ihren Kubernetes-Umgebungen sicherzustellen, wählen Sie am besten Cloud-Anbieter, die eine breite Palette von Bereitstellungsmodellen unterstützen, von On-Premise über Hybrid bis hin zu Multi-Cloud. 
  3. Anbieterangebote sollten auch auf der Grundlage der einfachen Einrichtung, Installation und Clustererstellung sowie der Aktualisierungen, Überwachung und Fehlerbehebung bewertet werden. Die Grundvoraussetzung besteht darin, vollständig automatisierte Cluster-Updates ohne Ausfallzeiten zu unterstützen. Die von Ihnen gewählte Lösung sollte es Ihnen auch ermöglichen, Updates manuell durchzuführen. 
  4. Das Identitäts- und Zugriffsmanagement ist sowohl aus Sicherheits- als auch aus Governance-Sicht wichtig. Stellen Sie sicher, dass die von Ihnen ausgewählte Kubernetes-Distribution die Integration mit den Authentifizierungs- und Autorisierungstools unterstützt, die Sie intern verwenden. RBAC und eine differenzierte Zugriffskontrolle sind ebenfalls wichtige Funktionssätze.
  5. Die von Ihnen gewählte Distribution muss entweder über eine native softwaredefinierte Netzwerklösung verfügen, die ein breites Spektrum unterschiedlicher Anwendungs- oder Infrastrukturanforderungen abdeckt, oder eine der beliebten CNI-basierten Netzwerkimplementierungen unterstützen, darunter Flannel, Calico, Kube-Router oder OVN.

Die Einführung von Behältern in die Produktion wird zur Hauptrichtung, wie die Ergebnisse einer Umfrage belegen, die am durchgeführt wurde Gartner-Sitzungen zu Infrastruktur, Betrieb und Cloud-Strategien (IOCS) im Dezember 2018:

Best Practices und Best Practices für die Ausführung von Containern und Kubernetes in Produktionsumgebungen
Wie Sie sehen, nutzen 27 % der Befragten bereits Container bei ihrer Arbeit und 63 % planen dies.

В Umfrage von Portworx und Aqua Security 24 % der Befragten gaben an, mehr als eine halbe Million Dollar pro Jahr in Containertechnologien zu investieren, und 17 % der Befragten gaben mehr als eine Million Dollar pro Jahr dafür aus. 

Vom Cloud-Plattform-Team erstellter Artikel Mail.ru Cloud-Lösungen.

Was gibt es sonst noch zum Thema zu lesen?:

  1. DevOps Best Practices: DORA-Bericht.
  2. Kubernetes im Geiste der Piraterie mit Vorlage zur Umsetzung.
  3. 25 nützliche Tools für die Bereitstellung und Einführung von Kubernetes.

Source: habr.com

Kommentar hinzufügen