
Das Ökosystem der Containerisierungstechnologien entwickelt sich schnell und verändert sich, weshalb es in diesem Bereich an guten Arbeitspraktiken mangelt. Dennoch werden Kubernetes und Container zunehmend verwendet – sowohl zur Modernisierung alter Anwendungen als auch zur Entwicklung moderner Cloud-Anwendungen.
Team hat Prognosen, Ratschläge und bewährte Praktiken für Marktführer von Gartner, 451 Research, StacxRoх und anderen gesammelt. Sie werden die Bereitstellung von Containern in Produktionsumgebungen gewährleisten und beschleunigen.
Wie man versteht, ob Ihr Unternehmen bereit ist, Container in einer Produktionsumgebung bereitzustellen
, werden im Jahr 2022 über 75 % der Organisationen containerisierte Anwendungen in der Produktion einsetzen. Das ist deutlich mehr als derzeit, wo weniger als 30 % der Unternehmen solche Anwendungen nutzen.
Laut , der prognostizierte Markt für den Einsatz von Containertechnologien wird im Jahr 2022 4,3 Milliarden Dollar betragen. Das ist mehr als doppelt so viel wie die Beträge, die 2019 prognostiziert wurden, das Marktwachstum beträgt 30 %.
Im 87 % der Befragten gaben an, dass sie derzeit Containertechnologien nutzen. Zum Vergleich: Im Jahr 2017 waren es nur 55 % dieser Befragten.
Trotz des wachsenden Interesses und der zunehmenden Implementierung von Containern erfordert deren Einführung in die Produktion Schulungen aufgrund technologischer Unreife und mangelnden Know-hows. Organisationen sollten realistisch auf die Geschäftsprozesse schauen, die eine Containerisierung von Anwendungen erfordern. IT-Leiter sollten bewerten, ob sie über die nötigen Fähigkeiten verfügen, um in Anbetracht des Bedarfs an schnellem Lernen voranzukommen.
sind der Meinung, dass die auf dem Bild unten abgebildeten Fragen helfen werden zu verstehen, ob Sie bereit sind, Container zu implementieren:

Die häufigsten Fehler bei der Verwendung von Containern in der Produktion
Organisationen unterschätzen oft den Aufwand, der für den Betrieb von Containern in der Produktion erforderlich ist. einige verbreitete Fehler bei Kunden-Szenarien bei der Anwendung von Containern in Produktionsumgebungen festgestellt:

Wie man die Sicherheit von Containern gewährleistet
Sicherheit kann nicht „später“ behandelt werden. Sie muss in den DevOps-Prozess integriert sein, weshalb es sogar einen speziellen Begriff gibt – DevSecOps. Organisationen müssen planen Während des gesamten Lebenszyklus der Entwicklung, der den Prozess des Aufbaus und der Entwicklung, die Bereitstellung und den Start der Anwendung umfasst.
:
- Integrieren Sie den Prozess des Scannens von Anwendungsbildern zur Suche nach Schwachstellen in die CI/CD-Pipeline. Anwendungen werden während der Build- und Laufphasen gescannt. Heben Sie die Notwendigkeit hervor, Komponenten mit offenem Quellcode, Bibliotheken und Frameworks zu scannen und zu identifizieren. Die Verwendung älterer, anfälliger Versionen durch Entwickler ist eine der Hauptursachen für Container-Schwachstellen.
- Verbessern Sie die Konfiguration mit Hilfe der Tests des Center for Internet Security (), die sowohl für Docker als auch für Kubernetes verfügbar sind.
- Setzen Sie unbedingt Zugriffskontrollen durch, stellen Sie die Trennung von Aufgaben sicher und implementieren Sie eine Geheimnismanagementpolitik. Vertrauliche Informationen, wie SSL-Zertifikate oder Datenbankanmeldeinformationen, werden vom Orchestrator oder von Drittanbieterdiensten verwaltet und zur Laufzeit bereitgestellt.
- Vermeiden Sie Container mit erhöhten Rechten durch Sicherheitsrichtlinienmanagement, um potenzielle Angriffsriskiken zu verringern.
- Verwenden Sie Sicherheitswerkzeuge, die Whitelists, Verhaltensüberwachung und Anomalieerkennung bieten, um schädliche Aktivitäten zu verhindern.
:
- Nutzen Sie die integrierten Funktionen von Kubernetes. Konfigurieren Sie den Zugriff für Benutzer durch Rollen. Stellen Sie sicher, dass Sie einzelnen Subjekten keine unnötigen Berechtigungen erteilen, auch wenn es einige Zeit in Anspruch nehmen kann, die minimal erforderlichen Berechtigungen zu ermitteln. Es mag verlockend erscheinen, dem Clusteradministrator umfassende Berechtigungen zu geben, da dies zu Beginn Zeit spart. Allerdings können Kompromisse oder Fehler im Konto später verheerende Folgen haben.
- Vermeiden Sie die Duplizierung von Zugriffsberechtigungen. Manchmal ist es hilfreich, wenn verschiedene Rollen sich überschneiden, doch dies kann zu Betriebsproblemen führen und beim Entfernen von Berechtigungen "tote Zonen" schaffen. Darüber hinaus ist es wichtig, nicht verwendete und inaktive Rollen zu entfernen.
- Stellen Sie die Netzwerkrichtlinien ein: Isolieren Sie die Module, um den Zugang zu ihnen einzuschränken; erlauben Sie den Internetzugang für die Module, die ihn benötigen, durch Verwendung von Labels; erlauben Sie ausdrücklich die Kommunikation zwischen den Modulen, die miteinander kommunizieren müssen.
Wie man das Monitoring von Containern und den darin befindlichen Diensten organisiert
Sicherheit und Monitoring — bei der Bereitstellung von Kubernetes-Clustern. Entwickler konzentrieren sich in der Regel stärker auf die Funktionen der Anwendungen, die sie entwickeln, als auf die Aspekte .
:
- Versuchen Sie, den Zustand der Container oder der darin befindlichen Dienste gemeinsam mit dem Monitoring der Host-Systeme zu überwachen.
- Bevorzugen Sie Anbieter und Tools mit einer tiefen Integration in die Container-Orchestrierung, insbesondere Kubernetes.
- Wählen Sie Werkzeuge, die detaillierte Protokollierung, automatische Entdeckung von Diensten und Echtzeit-Empfehlungen mithilfe von Analytik und/oder maschinellem Lernen bieten.
:
- Werkzeuge für die automatische Erkennung und Verfolgung von Container-Metriken zu verwenden, die Korrelation von Leistungsmetriken wie CPU, Speicher und Verfügbarkeit unterstützen.
- Optimale Kapazitätsplanung durch Vorhersage des Kapazitätsausfallzeitpunkts basierend auf den Container-Monitoring-Daten sicherzustellen.
- Überwachen Sie Anwendungen, die in Containern gehostet werden, hinsichtlich Verfügbarkeit und Leistung, was sowohl für die Kapazitätsplanung als auch zur Lösung von Leistungsproblemen nützlich ist.
- Automatisieren Sie die Workflows, indem Sie Unterstützung für das Management und die Skalierung von Containern und ihren Hosting-Umgebungen bereitstellen.
- Automatisieren Sie den Zugriffskontrollprozess, um die Benutzerbasis zu überwachen, veraltete und Gastkonten zu deaktivieren und überflüssige Berechtigungen zu entfernen.
- Stellen Sie sicher, dass Ihr Set an Werkzeugen diese Container und Anwendungen in verschiedenen Umgebungen (cloudbasiert, lokal oder hybrid) überblicken kann, um die Leistung in Infrastruktur, Netzwerk, Systemen und Anwendungen zu visualisieren und abzugleichen.
Wie man Daten speichert und deren Sicherheit gewährleistet
Mit der zunehmenden Anzahl von Arbeitscontainern unter Beibehaltung des Zustands müssen Kunden die Daten, die außerhalb des Hosts liegen, sowie die Notwendigkeit zum Schutz dieser Daten berücksichtigen.
Laut , steht die Datensicherheit an erster Stelle der Sicherheitsprobleme, die von den meisten Befragten (61 %) genannt werden.
Die Datensicherung ist die wichtigste Sicherheitsstrategie (64 %), jedoch nutzen die Befragten auch das Monitoring in der Laufzeit
(49 %), die Schwachstellenscans in Registries (49 %), die Schwachstellenscans in CI/CD-Pipelines (49 %) und die Blockierung von Anomalien durch Laufzeitschutz (48 %).
:
- Wählen Sie Datenspeicherlösungen, die auf den Prinzipien basieren. Bevorzugen Sie solche, die die Anforderungen an die Datenspeicherung für Container-Dienste erfüllen, hardwareunabhängig sind, über API verwaltet werden, eine verteilte Architektur haben, lokale Bereitstellungen und Bereitstellungen in der öffentlichen Cloud unterstützen.
- Vermeiden Sie proprietäre Plugins und Schnittstellen. Wählen Sie Anbieter, die die Integration mit Kubernetes ermöglichen und standardisierte Schnittstellen wie CSI (Container Storage Interfaces) unterstützen.
So arbeiten Sie mit Netzwerken
Das traditionelle Modell des Unternehmensnetzwerks, bei dem IT-Spezialisten Netzwerkumgebungen für Entwicklung, Test, Qualitätssicherung und Produktion für jedes Projekt erstellen, stimmt nicht immer gut mit dem Arbeitsablauf der kontinuierlichen Entwicklung überein. Darüber hinaus decken Container-Netzwerke mehrere Ebenen ab.
Im hochlevelige Regeln zusammengestellt, die die Implementierung einer clusterbasierten Netzwerklösung erfüllen sollte:
- Pods, die auf demselben Knoten geplant werden, sollten in der Lage sein, Daten mit anderen Modulen auszutauschen, ohne NAT (Network Address Translation) zu verwenden.
- Alle System-Daemons (Hintergrundprozesse, z. B. kubelet), die auf einem bestimmten Knoten arbeiten, können mit den Pods, die auf demselben Knoten ausgeführt werden, interagieren.
- Pods, die das 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 müssen eng mit den Primitiven und Richtlinien von Kubernetes integriert sein. IT-Leiter sollten eine hohe Automatisierungsstufe für Netzwerke anstreben und den Entwicklern die entsprechenden Werkzeuge und ausreichende Flexibilität bieten.
:
- Stellen Sie fest, ob Ihr CaaS (Container as a Service) oder Ihr SDN (Software Defined Network) Kubernetes-Netzwerke unterstützt. Wenn nicht oder die Unterstützung unzureichend ist, verwenden Sie für Ihre Container die CNI (Container Network Interface), die die erforderliche Funktionalität und Richtlinien unterstützt.
- Stellen Sie sicher, dass Ihr CaaS oder PaaS (Platform as a Service) die Erstellung von eingehenden Controllern und/oder Lastenausgleichern unterstützt, die den eingehenden Datenverkehr zwischen den Knoten des Clusters verteilen. Wenn diese Möglichkeit nicht besteht, prüfen Sie die Verwendung von Drittanbieter-Proxys oder Service-Mesh-Mechanismen.
- Schulen Sie Ihre Netzwerkingenieure im Umgang mit Linux-Netzwerken und Werkzeugen zur Netzwerkautomatisierung, um die Fähigkeitslücken zu verringern und die Flexibilität zu erhöhen.
So verwalten Sie den Lebenszyklus von Anwendungen
Für eine automatisierte und unterbrechungsfreie Bereitstellung von Anwendungen sollten Sie die Containerorkestrierung mit weiteren Automatisierungstools ergänzen, wie z. B. Infrastruktur als Code (IaC)-Produkten. Dazu gehören Chef, Puppet, Ansible und Terraform.
Es werden auch Automatisierungstools für den Aufbau und die Bereitstellung von Anwendungen benötigt (siehe „„). Container bieten auch Skalierungsmöglichkeiten, ähnlich wie sie bei der Bereitstellung virtueller Maschinen (VMs) verfügbar waren. Daher sollten IT-Leiter über .
:
- Setzen Sie Standards für Basis-Container-Images hinsichtlich Größe, Lizenzierung und Flexibilität zur Hinzufügung von Komponenten durch Entwickler fest.
- Verwenden Sie Konfigurationsmanagement-Systeme, um den Lebenszyklus von Containern zu verwalten, die Konfiguration in Schichten basierend auf Basis-Images speichern, die in öffentlichen oder privaten Repositories verfügbar sind.
- Integrieren Sie die CaaS-Plattform mit Automatisierungstools, um den gesamten Anwendungsworkflow zu automatisieren.
So verwalten Sie Container mit Orchestratoren
Die grundlegenden Funktionen für die Bereitstellung 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 vorschreiben.
Kubernetes ist de facto zum Standard für die Orchestrierung von Containern geworden, unterstützt von einer aktiven Gemeinschaft, und wird von den meisten führenden kommerziellen Anbietern unterstützt.
:
- Definieren Sie die grundlegenden Anforderungen an Sicherheitssteuerung, Überwachung, Richtlinienmanagement, Datensicherung, Netzwerkmanagement und Lebenszyklusmanagement von Containern.
- Wählen Sie auf der Grundlage dieser Anforderungen ein Tool, das am besten zu Ihren Anforderungen und Nutzungsszenarien passt.
- Nutzen Sie Gartner-Forschung (siehe ""), um die Vor- und Nachteile verschiedener Kubernetes-Bereitstellungsmodelle zu verstehen und das am besten geeignete für Ihre Aufgabe auszuwählen.
- Wählen Sie einen Anbieter, der hybride Orchestrierung für Arbeitscontainer in mehreren Umgebungen mit enger Integration in Backend-Systeme, gemeinsamen Managementplänen und konsistenten Preisgestaltungsmodellen bereitstellen kann.
Wie Sie die Möglichkeiten von Cloud-Anbietern nutzen können
, dass das Interesse an der Bereitstellung von Containern in der öffentlichen IaaS-Cloud aufgrund der Verfügbarkeit von CaaS-Angeboten und der engen Integration dieser Angebote mit anderen von Cloud-Anbietern angebotenen Produkten wächst.
IaaS-Clouds bieten bedarfsgerechte Ressourcennutzung, schnelle Skalierbarkeit und , die hilft, die Notwendigkeit tiefgehender Kenntnisse über die Infrastruktur und deren Wartung zu vermeiden. Die meisten Cloud-Anbieter bieten Container-Management-Dienste an, einige bieten mehrere Orchestrierungsoptionen an.
Die wichtigsten Anbieter von verwalteten Cloud-Diensten sind in der Tabelle aufgeführt:
Cloud-Anbieter
Diensttyp
Produkt/Dienst
Alibaba
Native Cloud Service
Alibaba Cloud Container Service, Alibaba Cloud Container Service für 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
von 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
Hosted Service
OpenShift Dedicated & Online
VMware
Hosted Service
Cloud PKS (Beta)
Mail.ru Cloud Lösungen*
Native Cloud Service
Mail.ru Cloud Container
* Wir wollen nicht verbergen, dass wir uns beim Übersetzen selbst hinzugefügt haben 🙂
Anbieter von öffentlichen Clouds fügen ebenfalls neue Funktionen hinzu und bringen lokale Produkte auf den Markt. In naher Zukunft werden Cloud-Anbieter die Unterstützung für hybride Clouds und Multi-Cloud-Umgebungen ausbauen.
:
- Beurteilen Sie objektiv die Möglichkeiten Ihrer Organisation, geeignete Werkzeuge bereitzustellen und zu verwalten, und ziehen Sie alternative Dienste zur Verwaltung von Cloud-Containern in Betracht.
- Wählen Sie Software sorgfältig aus und nutzen Sie Open Source, wo immer es möglich ist.
- Wählen Sie Anbieter mit einheitlichen Betriebsmodellen in hybriden Umgebungen, die die Verwaltung von integrierten Clustern über ein einziges Dashboard anbieten, sowie Anbieter, die die autonome Nutzung von IaaS erleichtern.
:
- Es ist ratsam, nach Distributionen zu suchen, die hohe Verfügbarkeit direkt ab Werk unterstützen. Dazu gehört die Unterstützung mehrerer grundlegender Architekturen, hochverfügbarer etcd-Komponenten sowie Backup- und Wiederherstellungsoptionen.
- Um eine Mobilität der Kubernetes-Umgebungen zu gewährleisten, sollten Sie Cloud-Anbieter wählen, die eine breite Palette von Bereitstellungsmodellen unterstützen: von lokal bis hybrid und Multi-Cloud.
- Die Angebote der Anbieter sollten auch hinsichtlich der Einfachheit der Konfiguration, Installation und Clustererstellung sowie Aktualisierungen, Überwachung und Fehlerbehebung bewertet werden. Grundvoraussetzung ist die Unterstützung vollständig automatisierter Cluster-Updates ohne Ausfallzeiten. Die gewählte Lösung sollte auch die manuelle Durchführung von Updates ermöglichen.
- Identitäts- und Zugriffsmanagement sind sowohl aus Sicherheits- als auch aus Verwaltungsgründen wichtig. Stellen Sie sicher, dass die gewählte Kubernetes-Distribution die Integration mit Authentifizierungs- und Autorisierungsmechanismen unterstützt, die im Unternehmen verwendet werden. RBAC und detaillierte Zugriffskontrolle sind ebenfalls wichtige Funktionalitäten.
- Die gewählte Distribution muss entweder eine eigene Netzwerklösung haben, die durch die Software definiert ist und eine breite Palette von Anforderungen verschiedener Anwendungen oder Infrastrukturen abdeckt, oder eine der gängigen CNI-basierten Netzwerkimplementierungen unterstützen, einschließlich Flannel, Calico, kube-router oder OVN.
Die Einführung von Containern in die Produktion wird zum Hauptfokus, was die Ergebnisse einer Umfrage zeigen, die auf der zu Infrastruktur, Betrieb und Cloud-Strategien (IOCS) im Dezember 2018 durchgeführt wurde:

Wie wir sehen, nutzen bereits 27 % der Befragten Container in ihrer Arbeit, und 63 % planen, dies zu tun.
Im 24 % der Befragten gaben an, dass sie über eine halbe Million Dollar pro Jahr in Containertechnologien investieren, während 17 % der Befragten mehr als eine Million Dollar pro Jahr dafür ausgeben.
Der Artikel wurde vom Cloud-Plattform-Team .
Was gibt es noch zu lesen:
- .
- .
- .
Quelle: habr.com
