Container-as-a-Service – CaaS-Anbieter im Vergleich
Sie interessieren sich für containerbasierte Virtualisierungs-Szenarien auf Betriebssystem-Ebene? Aber die Kosten und den Aufwand für eine Bereitstellung der dazu benötigten Hard- und Software-Komponenten möchten Sie sich sparen? Kein Problem. Mit Container-as-a-Service, dem neusten Service-Modell auf dem Cloud-Computing-Markt, stehen Ihnen Container-Plattformen als gehostete Komplettlösungen über die Cloud zur Verfügung. Wir stellen Ihnen mit der Google Container Engine (GKE), dem Amazon EC2 Container Service (ECS) und dem Microsoft Azure Container Service (ACS) drei der beliebtesten CaaS-Plattformen vor. Darüber hinaus erklären wir, wie Sie cloudbasierte Containerdienste im Unternehmenskontext nutzen können.
- Kostengünstige vCPUs und leistungsstarke dedizierte Cores
- Höchste Flexibilität ohne Mindestvertragslaufzeit
- Inklusive 24/7 Experten-Support
Was ist CaaS
CaaS – kurz für Container-as-a-Service – ist ein Geschäftsmodell, bei dem Anbieter von Cloud-Computing-Plattformen Dienstleistungen rund um die containerbasierte Virtualisierung als skalierbaren Online-Service zur Verfügung stellen. Dies ermöglicht Endanwendern, Containerdienste in Anspruch zu nehmen, ohne die dafür benötigte Infrastruktur bereitstellen zu müssen. Die Bezeichnung ist ein Marketing-Begriff, der sich an etablierte Cloud-Service-Modelle wie Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) und Software-as-a-Service (SaaS) anlehnt.
Was sind Containerdienste?
Als Containerdienst bezeichnet man den Service eines Cloud-Computing-Anbieters, der es Anwendern ermöglicht, Software in sogenannten Anwendungs-Containern zu entwickeln, zu testen, auszuführen oder über IT-Infrastrukturen hinweg zu verteilen.
Bei Anwendungs-Containern handelt es sich um ein Konzept aus dem Linux-Bereich. Die Technologie ermöglicht eine Virtualisierung auf Betriebssystemebene. Dabei werden einzelne Anwendungen inklusive aller Abhängigkeiten wie Bibliotheken und Konfigurationsdateien als gekapselte Instanzen ausgeführt. Dies ermöglicht den parallelen Betrieb mehrerer Anwendungen mit unterschiedlichen Anforderungen auf ein und demselben Betriebssystem sowie ein Deployment über unterschiedlichste Systeme hinweg.
CaaS beinhaltet in der Regel eine komplette Container-Umgebung inklusive Orchestrierungs-Tools, einem Image-Katalog (die sogenannte Registry), eine Cluster-Management-Software sowie ein Set von Entwickler-Tools und APIs (Application Programming Interfaces, deutsch: Programmierschnittstellen). Die Abrechnung erfolgt nutzungsbezogen im Mietmodell.
Abgrenzung zu anderen Cloud-Services
Seit Mitte der 2000er-Jahre steht Unternehmen und Privatanwendern mit Cloud-Computing eine Alternative zur Bereitstellung von IT-Ressourcen in den eigenen Räumlichkeiten (On Premises) zur Verfügung. Dabei werden traditionell drei Service-Modelle unterschieden: IaaS, PaaS und SaaS.
- IaaS: Infrastructure-as-a-Service umfasst die Bereitstellung virtueller Hardware-Ressourcen wie Rechenleistung, Speicherplatz und Netzwerkkapazitäten. IaaS-Anbieter stellen diese grundlegenden IT-Infrastruktur-Bausteine in Form virtueller Maschinen (VM) oder Virtual Local Area Networks (VLANs) zur Verfügung. Auf die Cloud-Ressourcen greifen Anwender dann via APIs über das Internet zu. IaaS stellt die unterste Ebene des Cloud-Computing-Modells dar.
- PaaS: Die mittlere Ebene des Cloud-Computing-Modells wird als Platform-as-a-Service bezeichnet. Im Rahmen von PaaS stellen Cloud-Anbieter Programmierplattformen und Entwicklungsumgebungen über das Internet zur Verfügung. PaaS umfasst in der Regel den gesamten Software-Lebenszyklus (Lifecycle-Management): von der Entwicklung über Tests bis hin zu Auslieferung und Betrieb. PaaS baut auf IaaS auf.
- SaaS: Die oberste Ebene des Cloud-Computing-Modells ist eine reine Anwendungsebene. Unter Software-as-a-Service versteht man die Bereitstellung von Anwendungssoftware über das Internet. Die zur Verfügung gestellten Programme laufen bei diesem Service-Modell nicht auf der Hardware des Kunden, sondern auf dem Server des Anbieters. SaaS baut auf IaaS und PaaS auf. Der Zugriff erfolgt über den Webbrowser oder eine Agent-Software.
Ziel des serviceorientierten Ansatzes bei der Bereitstellung von IT-Ressourcen ist es, Endanwendern zu ermöglichen, sich voll und ganz auf Ihr Kerngeschäft zu konzentrieren. Ein Entwickler, der beispielsweise PaaS in Anspruch nimmt, um Anwendungen zu testen, lädt lediglich seinen selbst programmierten Code in die Cloud, alle technischen Voraussetzungen für den Build-Prozess sowie das Management und Deployment der Anwendung werden vom Anbieter der PaaS-Plattform bereitgestellt.
In dieser klassischen Aufteilung der drei etablierten Modelle des Cloud-Computings ließe sich CaaS zwischen IaaS und PaaS verorten. Von diesen Service-Modellen hebt sich Container-as-a-Service jedoch durch einen grundsätzlich anderen Virtualisierungsansatz ab: die Container-Technologie.
Auch CaaS ermöglicht Anwendern ein komplettes Lifecycle-Management von Software-Anwendungen. Anders als bei IaaS und PaaS basiert die Bereitstellung virtualisierter Ressourcen dabei nicht auf hypervisorgestützter Virtualisierung separater VMs mit eigenem Betriebssystem. Stattdessen kommen native Funktionen des Linux-Kernels zum Einsatz, die eine Isolation einzelner Prozesse innerhalb desselben Betriebssystems ermöglichen. Die Container-Technologie etabliert dabei eine Abstraktionsebene, die Anwendungen inklusive Dateisystem vom zugrundeliegenden System abkapselt und somit den Betrieb auf jeder beliebigen Plattform ermöglicht, die die jeweilige Container-Technologie unterstützt. Doch was genau bedeutet das für den Anwender?
Software-Entwickler, die eine cloudbasierte Entwicklungsumgebung in Anspruch nehmen möchten, müssen sich beim PaaS-Modell auf die vom Anbieter zur Verfügung gestellten Technologien wie Programmiersprachen oder Frameworks festlegen. Container-as-a-Service hingegen bietet Anwendern eine vergleichsweise freie Programmierplattform, auf der sich in Containern gekapselte Anwendungen unabhängig von Ihren technologischen Anforderungen und Voraussetzungen über heterogene IT-Infrastrukturen hinweg skalieren lassen.
Containers-as-a-Service (CaaS) ist eine Form containerbasierter Virtualisierung, bei der die Laufzeitumgebung, Orchestrierungstools und die zugrundeliegenden Infrastruktur-Ressourcen über einen Cloud-Computing-Provider zur Verfügung gestellt werden.
Wie funktioniert CaaS?
Die Grundlage von Container-as-a-Service ist ein Computercluster, das über die Cloud zur Verfügung steht und von Nutzern anteilig angemietet wird, um containerbasierte Anwendungen hochzuladen, zu erstellen, zentral zu verwalten und auf der Cloud-Plattform auszuführen. Die Interaktion mit der cloudbasierten Container-Umgebung erfolgt entweder über eine grafische Benutzeroberfläche (GUI) oder in Form von API-Aufrufen. Welche Container-Technologien den Nutzern zur Verfügung stehen, unterscheidet sich je nach Anbieter. Kern einer jeden CaaS-Plattform ist jedoch ein Orchestrierungstool (auch Orchestrator genannt), das eine Verwaltung komplexer Container-Architekturen ermöglicht.
Container-Anwendungen, die in Produktivumgebungen zum Einsatz kommen, bestehen in der Regel aus einem Verbund mehrerer Container, die über verschiedene physische und virtuelle Systeme verteilt sind. Man spricht von einer Multi-Container-Application. Der massenhafte Betrieb solcher Anwendungen ist manuell nicht zu bewerkstelligen. Stattdessen kommen Orchestrierungstools zum Einsatz, die das Zusammenspiel der ausgeführten Container organisieren und einen automatisierten Betrieb ermöglichen. Dabei sind folgende Funktionen von Bedeutung:
- Verteilung von Containern über mehrere Hosts hinweg
- Gruppierung von Containern in logische Einheiten
- Skalierung von Containern
- Load-Balancing
- Zuweisung von Speicherkapazitäten
- Kommunikationsschnittstelle zwischen Containern
- Service-Discovery
Welcher Orchestrator im Rahmen von CaaS zum Einsatz kommt, hat einen unmittelbaren Einfluss darauf, welche Funktionen Nutzern des Cloud-Dienstes zur Verfügung stehen. Derzeit wird der Markt für containerbasierte Virtualisierung von drei Orchestrierungstools dominiert: Docker Swarm, Kubernetes und Mesosphere DC/OS.
- Docker Swarm: Swarm ist ein quelloffenes Cluster-Management- und Orchestrierungswerkzeug, das vom Hersteller Docker als natives Tool zur Verwaltung von Docker-Clustern und zur Steuerung des Container-Betriebs vermarktet wird. Der Orchestrator ist die Grundlage für Dockers On-Premises-CaaS-Produkt Docker Datacenter (DDC) und ermöglicht es Unternehmen im Rahmen der Docker Enterprise Edition (EE), eine selbst verwaltete Container-as-a-Service-Umgebung im eigenen Rechenzentrum oder auf Private Clouds (Docker Datacenter on AWS/Azure) zu realisieren. Dockers Eigenentwicklung ist für eine einfache Installation und Handhabung bekannt und eng mit der Container-Laufzeitumgebung des Markführers integriert. Das Orchestrierungswerkzeug nutzt die Standard-Docker-API und bietet damit Kompatibilität zu anderen Docker-Tools, die via Docker-API kommunizieren. Die Verwaltung von Clustern und Containern erfolgt mithilfe klassischer Docker-Kommandos.
- Kubernetes: Bei Kubernetes handelt es sich um ein Open-Source-Werkzeug für die automatisierte Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen auf verteilten IT-Infrastrukturen. Das Tool wurde ursprünglich von Google entwickelt und steht heute unter der Schirmherrschaft der Cloud Native Computing Foundation (CNCF) (siehe auch: Was ist Cloud Native?). Im Gegensatz zu Swarm unterstützt Kubernetes nicht nur Docker-Container. Über ein Container Runtime Interface (CRI) stellt der Orchestrator Schnittstellen zu diversen OCI-konformen und hypervisorbasierten Container-Laufzeitumgebungen sowie zum Docker-Hauptkonkurrenten rkt von CoreOS zur Verfügung. Im Vergleich zu Docker Swarm ist die Installation und Konfiguration von Kubernetes deutlich aufwendiger.
- DC/OS: Bei DC/OS (Data Center Operating System) handelt es sich um eine Weiterentwicklung des quelloffenen Cluster-Managers Apache Mesos, die von Mesosphere – einem Silicon-Valley-Start-up – als Betriebssystem für Rechenzentren unter Open-Source-Lizenz bereitgestellt wird. Von Docker Swarm und Kubernetes unterscheidet sich DC/OS vor allem dadurch, dass der Cluster-Manager nicht auf die Verwaltung von Container-Anwendungen beschränkt ist. Auf Wunsch lassen sich unterschiedliche Workloads wie Container, Microservices und Big-Data-Systeme parallel betreiben.
Eine detaillierte Beschreibung der Orchestrierungswerkzeuge Swarm, Kubernetes und DC/OS bietet der Überblicksartikel zu den beliebtesten Docker-Tools.
CaaS-Anbieter im Überblick
Die Container-Technologie boomt. Entsprechend groß ist das Angebot an CaaS-Services. Dienstleistungen zur Virtualisierung auf Betriebssystemebene findet man im Portfolio nahezu aller Public-Cloud-Anbieter. Auch Amazon, Microsoft und Google – die aktuell zu den einflussreichsten Akteuren auf CaaS-Markt gehören – haben ihre Cloud-Plattformen in den vergangenen Jahren um eine dockerbasierte Container-Lösung erweitert. Anfang 2018 ist auch IONOS mit einer eigenen Cluster-Llösung ins CaaS-Geschäft eingestiegen.
Wir stellen folgende Produkte gegenüber:
- IONOS Container Cluster
- Google Container Engine (GKE)
- Amazon EC2 Container Service (ECS)
- Azure Container Service (ACS)
Bei Docker handelt es sich um die bekannteste Container-Plattform auf dem Markt. Das von Docker entwickle Container-Format – eine Weiterentwicklung des Linux-Containers (LXC) – ist weit verbreitet und wird von allen CaaS-Anbietern unterstützt.
Bei der Wahl eines CaaS-Dienstes für den Unternehmenseinsatz sollten sich Anwender von folgenden Fragen leiten lassen:
- Welche Orchestrierungswerkzeuge stehen zur Verfügung?
- Welche Datei-Formate für Container-Anwendungen werden unterstützt?
- Ist ein Betrieb von Multi-Container-Anwendungen möglich?
- Wie werden die Cluster für den Container-Betrieb verwaltet?
- Welche Netzwerk- und Speicherfunktionen werden unterstützt?
- Bietet der Anbieter eine private Registry für Container-Images?
- Wie gut ist die Container-Laufzeitumgebung mit anderen Cloud-Diensten des Anbieters integriert?
- Welche Abrechnungsmodelle stehen zur Verfügung?
IONOS Container Cluster
Seit Januar 2018 bietet IONOS in Kooperation mit StackPointCloud (SLC) das Hosting-Produkt Cluster as a Service (ClaaS) an. Das IONOS Cluster Hosting steht Kunden direkt über das IONOS Cloud Panel zur Verfügung und kombiniert die IONOS IaaS-Plattform mit den marktführenden Container-Technologien Docker und Kubernetes.
Das IONOS Cluster Hosting unterstützt ausschließlich Container im Docker-Format.
CLaaS richtet sich an Entwickler und IT-Betriebe und ermöglicht die Bereitstellung, Verwaltung und Skalierung von containerbasierten Anwendungen in Kubernetes-Clustern. Das Funktionsspektrum umfasst:
- Managed Cloud-Nodes mit dedizierten Server-Ressourcen,
- die individuelle Verwaltung von Clustern,
- den vollen Zugang zu Anwendungs-Containern,
- eine benutzerdefinierte Orchestrierung sowie
- fachliche Unterstützung bei der Nutzung und Erstellung von Container Clustern im Cloud Panel durch den IONOS First Level Support
- bei Fragen zu Kubernetes oder den installierten Lösungen hilft Ihnen die IONOS Cloud Community weiter.
Die Verwaltung von Cluster Nodes erfolgt über das IONOS Cloud Panel. Bei der Orchestrierung von Container-Anwendungen setzt CLaaS auf den Orchestrator Kubernetes. Nutzer verwalten Kubernetes über das Command-Line-Tool kubectl. Alternativ kann das Kubernetes-Dashboard als UIBenutzeroberfläche installiert werden. Der IONOS Support erstreckt sich auf die Bereitstellung und Verwaltung des Container-Clusters. Ein direkter Support für kubectl oder das Kubernetes- Dashboard wird nicht angeboten.
Über das IONOS Cloud Panel stehen Nutzern diverse Drittanbieter-Anwendungen als One-Click-Solutions zur Verfügung. Das Portfolio umfasst folgende Software-Lösungen.
Vorinstallierte Anwendung | Funktion(en) |
---|---|
Fabric8 | Continuous Integration |
Prometheus | Monitoring für Kubernetes |
HAProxy | Proxy, Load-Balancing |
Sysdig | Docker-Monitoring, Alarmierung, Fehlerbehandlung |
Linkerd | Diensterkennung, Routing, Fehlerbehandlung |
Autoscaler | Horizontale Skalierung |
EFK (Elastic Fluentd Kibana) | Logging |
Helm | Paket-Manager für Kubernetes |
Netsil | Monitoring |
Calico | Virtual networking & network security |
Twistlock | Container-Security-Suite |
GitLab | Continuous Integration |
GitLab Enterprise | Continuous Integration |
Istio | Datenverkehrsmanagement & Zugangskontrolle |
Kubeless | Auto-Skalierung, API-Routing, Monitoring & Fehlerbehandlung |
Als Registry für Docker-Images lässt sich der Online-Dienst DockerHub integrieren.
Um einen dedizierten Container-Cluster einzurichten, wählen Nutzer mindestens drei VMs der IONOS IaaS-Plattform aus und verwenden diese auf Wunsch als Master- oder Worker-Nodes.
Der Master-Nodekonten ist für die Steuerung, Lastenverteilung und Koordination des Container-Clusters verantwortlich. Container-Anwendungen werden in sogenannten Pods auf den Worker-Nodes ausgeführt. Bei Bedarf lassen sich Container auch direkt auf dem Master-Node starten.
Cluster-Nodes für ein Container-Hosting stehen in 6 Preis-Kategorien mit unterschiedlichen Leistungsmerkmalen zur Verfügung: M, L, XL, XXL, 3XL und 4XL. Die Spanne reicht von kleinen Cluster-Nodes mit einem Prozessorkern, 2 GB RAM und 50 GB SSD-Speicher bis hin zu Profimaschinen mit 12 Prozessorkernen, 32 GB RAM und 360 GB SSD-Speicher. Auf allen Nodes läuft ein Linux-System.
Nutzer zahlen lediglich für in Anspruch genommene Ressourcen. Der Betrieb der Container und die Nutzung von One-Click-Solutions (mit Ausnahme von Autoscaler) verursachen keine weiteren Kosten. Die gewählte Konfiguration wird minutengenau abgerechnet.
Beachten Sie, dass Autoscaler nur während der Erstellung eines neuen Clusters installiert werden kann. Sofern Autoskalierung aktiviert wurde, fügt Kubernetes dem Cluster automatisch einen neuen Knoten hinzu, wenn die vorhandenen Ressourcen für die geplante Operation nicht ausreichen. Für die Nutzung der durch Autoscaler hinzugefügten Knoten entstehen zusätzliche Kosten, die ebenfalls minutengenau abgerechnet werden.
IONOS CLaaS im Überblick | |
---|---|
Allgemeine Verfügbarkeit | Januar 2018 |
Orchestrierung | Kubernetes |
Verwaltung der Container-Plattform | Cluster-Management via IONOS Cloud Panel Container-Management via Kubernetes Dashboard oder SSH (KubeCTL) |
Container-Format | Docker-Container |
Netzwerkfunktionen | Networking auf Basis von Kubernetes |
Integration mit externen Speichersystemen | Kubernetes Cloud Backup |
Registry | Docker-Hub |
Integration mit anderen Cloud-Diensten des Anbieters (Auswahl) | IONOS ClaaS ist komplett in die IONOS IaaS-Plattform integriert |
Kosten | Nutzer des IONOS Container Clusters zahlen lediglich für die Bereitstellung der Cluster-Nodes. Container Cluster umfassen mindestens 3 und maximal 99 VMs |
Vorteile | Nachteile |
---|---|
Vollständige Kubernetes-Kompatibilität | Kein Software-Support für kubectl und Kubernetes |
Container-Betrieb in privaten, öffentlichen und hybriden Cloud-Umgebungen möglich | |
Hohe Portabilität durch den Einsatz von Standard-Lösungen (Docker, Kubernetes) | |
Große Auswahl an vorinstallierten Drittanbieter-Lösungen |
Amazon EC2 Container Service (ECS)
Seit April 2015 stellt der Online-Versandhändler Amazon Lösungen zur containerbasierten Virtualisierung unter dem Namen Amazon EC2 Container Service (ECS) im Rahmen der Cloud-Computing-Plattform AWS (Amazon Web Service) zur Verfügung.
Amazon ECS bietet Nutzern diverse Schnittstellen, die es ermöglichen, in Docker-Containern isolierte Anwendungen in der Amazon Elastic Compute Cloud (EC2) zu betreiben. Technisch basiert der CaaS-Dienst auf folgenden Cloud-Ressourcen:
- Amazon-EC2-Instanzen (Instanzen der Amazon Elastic Compute Cloud): Bei Amazon EC2 handelt es sich um skalierbare Rechenkapazität des Amazon Cloud-Computing-Service, die in Form sogenannter Instanzen angemietet wird.
- Amazon S3 (Amazon Simple Storage): Amazon S3 ist eine cloudbasierte Objektspeicherplattform.
- Amazon EBS (Amazon Elastic Block Store): Amazon EBS stellt hochverfügbare Blockspeichervolumina für EC2-Instanzen zur Verfügung.
- Amazon RDS (Amazon Relational Database Service): Amazon RDS ist ein Datenbankservice zur Verwaltung der relationalen Datenbank-Engines Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle und Microsoft SQL Server.
ECS unterstützt ausschließlich Container im Docker-Format.
Die Verwaltung von Containern erfolgt bei ECS in der Standardeinstellung über einen proprietären Orchestrator, der als Master fungiert und mit einem Agenten auf jedem Knoten des zu verwaltenden Clusters kommuniziert. Alternativ wird mit Blox ein Open-Source-Modul angeboten, das es ermöglicht, selbst entwickelte Scheduler sowie Drittanbieter-Tools wie Mesos in ECS einzubinden.
Eine Stärke des Amazon EC2 Container Service ist seine Integration mit anderen Amazon-Diensten wie:
- AWS Identity- und Access-Management (IAM): AWS Identity- und Access-Management ermöglicht es Ihnen, Nutzerrollen und Gruppen zu definieren und mittels Berechtigungen den Zugriff auf AWS-Ressourcen zu verwalten.
- Elastic Load Balancing: Bei Elastic Load Balancing handelt es sich um einen Cloud-Load-Balancer, der eingehenden Anwendungsverkehr automatisch über mehrere EC2-Instancen verteilt.
- AWS CloudTrail: Bei AWS CloudTrail handelt es sich um einen Service, der sämtliche Benutzeraktivitäten und API-Aufrufe innerhalb eines Clusters aufzeichnet. Dies ermöglicht es Anwendern, Vorgänge nachzuvollziehen und im Rahmen des Ressourcenmanagements sowie der Sicherheitsanalyse auszuwerten.
- Amazon CloudWatch: CloudWatch – Amazons Service zur Überwachung von Cloud-Ressourcen und -Anwendungen – steht AWS-Nutzern auch beim Betrieb von Anwendungs-Containern zu Verfügung.
- AWS CloudFormation: Mit CloudFormation bietet Amazon AWS-Nutzern einen Service, mit dem man Vorlagen für die Bereitstellung von AWS-Ressourcen definieren kann. Dabei lassen sich Containerdienste in Form eines wiederverwendbaren JSON-Templates beschreiben. Das umfasst den Bauplan der Anwendung inklusive der zur Ausführung benötigten Instanzen und Speicherkapazitäten sowie deren Interaktionen mit anderen AWS-Diensten.
Für die zentrale Verwaltung von Container-Images stellt Amazon AWS-Nutzern im Rahmen der EC2 Container Registry (ECR) private Docker-Repositorys zur Verfügung. Der Zugriff auf die Registry lässt sich via AWS IAM auf Ressourcenebene verwalten.
Ein Nachteil des Amazon EC2 Container Service ist die Beschränkung auf EC2-Instanzen. Amazons CaaS-Dienst bietet keine Unterstützung für IT-Infrastrukturen außerhalb von AWS – weder physisch noch virtuell. Hybrid-Cloud-Szenarios, bei denen Multi-Container-Anwendungen zum Teil On-Premises betrieben werden, sind somit ebenso wenig möglich wie eine Kombination der IT-Ressourcen verschiedener Public-Cloud-Anbieter (Multi-Cloud). Dies dürfte mit dem Geschäftsmodell zusammenhängen, in dem Amazon seinen CaaS-Dienst anbietet: Der Amazon EC2 Container Service steht via AWS prinzipiell kostenlos zur Verfügung. Nutzer zahlen lediglich für die Bereitstellung der Cloud-Infrastruktur – beispielsweise für ein Cluster von EC2-Instanzen, das als Grundlage für den Betrieb von Container-Anwendungen fungiert.
Der Amazon EC2 Container Service im Überblick:
Allgemeine Verfügbarkeit | April 2015 |
Orchestrierung | Proprietäres Orchestrierungswerkzeug Selbstentwickelte Scheduler und Drittanbieter-Tools lassen sich via Blox einbinden |
Verwaltung der Container-Plattform | ECS-GUI und CLI |
Container-Format | Docker-Container Windows-Container werden bisher nur mit Beta-Status unterstützt (Von einem Einsatz auf Produktivsystemen wird abgeraten) |
Netzwerkfunktionen | Overlay-Networking via Libnetwork wird nicht unterstützt |
Integration mit externen Speichersystemen | Docker-Volume-Support (mit limitierten Treibern) |
Registry | Docker Registry und Amazon EC2 Container Registry |
Integration mit anderen Cloud-Diensten (Auswahl) | AWS IAM Elastic Load Balancing AWS CloudTrail Amazon CloudWatch AWS CloudFormation |
Kosten | ECS ist ein kostenloser Service. Anwender zahlen lediglich für die in Anspruch genommenen Ressourcen der zugrundeliegenden Cloud-Plattform AWS. |
Folgendes Video zeigt ein 5-minütiges Tutorial zum Amazon EC2 Container Service in englischer Sprache.
Vorteile | Nachteile |
---|---|
Vollständige Integration mit anderen AWS-Produkten | Das Container-Deployment ist auf AmazonEC2-Instanzen beschränkt |
Proprietärer Orchestrator: Gängige Open-Source-Tools wie Kubernetes werden nicht unterstützt |
Google Container Engine (GKE)
Auch Google hat mit der Google Container Engine (GKE) einen gehosteten Container-Service in die Public-Cloud integriert. Kernkomponente des CaaS-Dienstes ist das Orchestrierungstool Kubernetes.
GKE greift auf Ressourcen der Google Compute-Engine (GCE) zurück und ermöglicht es Nutzern, containerbasierte Anwendungen auf Clustern der Google Cloud Platform (GCP) zu betreiben. Auf die Infrastruktur der Google-Cloud sind Nutzer mit der GKE jedoch nicht begrenzt: Das Cluster-Federation-System des Orchestrators Kubernetes ermöglicht es, Ressourcen verschiedener Computer-Cluster zu einer logischen Rechenföderation zusammenzufassen und bei Bedarf Hybrid- und Multi-Cloud-Szenarien zu realisieren.
Jedes Cluster, das mit GKE erstellt wird, besteht aus einem Kubernetes-Master-Endpunkt, auf dem der Kubernetes-API-Server ausgeführt wird, und einer beliebigen Anzahl von Worker-Knoten, die REST-Anfragen des API-Severs bedienen und die für den Support von Docker-Containern benötigten Dienste ausführen.
Während der Master-Knoten die Ressourcenauslastung und den Status des Clusters überwacht, werden die containisierten Anwendungen auf den Worker-Knoten betrieben. Fällt ein Worker-Knoten aus, verteilt der Master die für den Anwendungsbetrieb erforderlichen Aufgaben auf die anderen Knoten um.
Auch GKE unterstützt das weit verbreite Docker-Container-Format. Für die Bereitstellung von Docker-Images steht Anwendern eine private Container-Registry zur Verfügung. Eine JSON-basierte Syntax bietet die Möglichkeit, Container-Dienste als Templates zu definieren.
Die Integration von Kubernetes in GKE bietet Anwendern folgende Funktionen für die Orchestrierung von Container-Anwendungen:
- Automatic Binpacking: Kubernetes platziert Container auf Basis von Einschränkungen und Ressourcenanforderungen automatisch so, dass das Cluster optimal ausgelastet ist. Dies verhindert, dass die Verfügbarkeit von Container-Anwendungen beeinträchtigt wird.
- Health-Checks mit Auto-Repair-Funktion: Durch Automatische Health-Checks stellt Kubernetes sicher, dass alle Konten und Container einwandfrei funktionieren. Knoten oder Container, die nicht reagieren, werden beendet und durch neue ersetzt.
- Horizontale Skalierung: Mit Kubernetes lassen sich Anwendungen beliebig nach oben oder unten skalieren – entweder manuell über die Kommandozeile, über die grafische Benutzeroberfläche oder automatisch auf Basis der CPU-Auslastung.
- Service-Discovery und Load-Balancing: Kubernetes bietet zwei Modi für Service-Discovery: Dienste lassen sich über Umgebungsvariablen und DNS-Records aufspüren. Ein Load-Balancing zwischen verschiedenen Containern wird über IP-Adressen und DNS-Namen realisiert.
- Speicher-Orchestrierung: Kubernetes ermöglicht ein automatisches Mounten diverser Speichersysteme – egal ob es sich um lokalen Speicher, Public-Cloud-Speicher (beispielsweise via GCP oder AWS) oder Netzwerkspeicher-Systeme wie NFS, iSCSI, Gluster, Ceph oder Flocker handelt.
Ähnlich wie ECS in AWS ist GKE direkt in die Google-Cloud-Plattform integriert, sodass Nutzern der Container-Engine neben dem Funktionsspektrum des Orchestrators diverse Features der Public-Cloud zur Verfügung stehen:
- Identity- und Access-Management: Das IAM der GKE wird mithilfe von Google-Accounts realisiert und unterstützt nutzerrollenbasierte Berechtigungen.
- Stackdriver Monitoring: Googles Monitoring-Tool informiert Anwender über die Leistung, Betriebszeit und den Zustand von Cloud-Anwendungen. Dazu sammelt Stackdriver Monitoring-Metriken, Ereignisse und Metadaten und bereitet diese in Form eines übersichtlichen Dashboards auf. Als Datenquelle unterstützt das Tool die Google Cloud Platform, Amazon Web Services und diverse Anwendungen wie Cassandra, Nginx, Apache HTTP Server und Elasticsearch.
- Stackdriver Logging: Googles Logging-Tool ermöglicht Anwendern das Speichern, das Monitoring und die Analyse von Log-Daten und Ereignissen. Stackdriver Logging unterstützt die Google Cloud Platform und Amazon Web Services.
- Container Builder: Mit dem Container Builder stellt Google ein Tool zur Erstellung von Docker-Images zur Verfügung, mit dem sich diese direkt in der Cloud erzeugen lassen. Der Anwendungsquellcode muss dazu lediglich in den Google Cloud Storage geladen werden.
Bei der Preisgestaltung für den CaaS-Dienst geht Google einen anderen Weg als Amazon. Ein Container-Management von Clustern mit bis zu fünf Compute-Engine-Instanzen (Knoten) steht Anwendern kostenlos zur Verfügung. Es fallen lediglich Kosten für die Bereitstellung der Cloud-Ressourcen (CPU, Speicher etc.) an. Möchten Anwender Container auf größeren Clustern (sechs und mehr Instanzen) betreiben, erhebt Google zusätzlich eine Nutzungsgebühr für die Container-Engine: Die Abrechnung erfolgt pro Cluster pauschal auf Stundenbasis.
Die Google Container Engine im Überblick:
Allgemeine Verfügbarkeit | August 2015 |
Orchestrierung | Kubernetes |
Verwaltung der Container-Plattform | Cluster-Management via Google Cloud Container-Management via Kubernetes UI |
Container-Format | Docker-Container |
Netzwerkfunktionen | Networking auf Basis von Kubernetes |
Integration mit externen Speichersystemen | Kubernetes Persistent Volume |
Registry | Docker Registry und Google Container Registry |
Integration mit anderen Cloud-Diensten des Anbieters (Auswahl) | Cloud IAM Stackdriver Monitoring Stackdriver Logging Container Builder |
Kosten | Container-Betrieb via GKE auf Standard-Clustern mit bis zu fünf Knoten: kostenlos Container-Betrieb via GKE auf Standard-Clustern mit sechs oder mehr Knoten: pauschale Abrechnung je Cluster pro Stunde. |
In folgendem Video gibt Google-Produktmanager Dan Paik einen Überblick über das Container-Deployment mit GKE und Kubernetes.
Vorteile | Nachteile |
---|---|
Vollständige Integration mit anderen Google-Produkten | Bei Clustern ab 6 Knoten erhebt Google zusätzlich zu den Kosten für die Recheninstanzen eine Nutzungsgebühr für die Container-Engine |
Container-Deployment auf Hybrid- und Multi-Clouds möglich |
Microsoft Azure Container Service (ACS)
Azure Container Service (ACS) ist eine für Microsofts Cloud-Computing-Plattform Azure optimierte Hosting-Umgebung, die es Nutzern ermöglicht, containerbasierte Anwendungen zu entwickeln und in skalierbaren Computer-Clustern bereitzustellen. ACS stützt sich auf eine für Azure optimierte Version quelloffener Container-Tools und ermöglicht einen Betrieb von Linux-Containern im Docker-Format. Windows-Container werden derzeit nur in einer Vorschau-Version unterstützt.
Kernkomponente des CaaS-Dienstes von Microsoft ist die Azure Container Engine, deren Quellcode unter Open-Source-Lizenz auf GitHub zur Verfügung steht. Die Azure Container Engine fungiert als Template-Generator, der Vorlagen für den Azure Resource Manager (ARM) erzeugt. Diese lassen sich über eine API mit einem der folgenden Orchestrierungswerkzeuge verwalten: Docker Swarm, DC/OS und Kubernetes (seit Februar 2017).
Welche Funktionen ACS-Nutzern beim Betrieb von containisierten Anwendungen in der Azure-Cloud zur Verfügung stehen, hängt in erster Linie von der Wahl des Orchestrators ab.
Der Cluster-Manager DC/OS von Mesosphere kommt im Rahmen des Azure Container Service in Kombination mit der Orchestrierungsplattform Marathon zum Einsatz. Ein solcher Aufbau bietet Nutzern folgendes Funktionsspektrum:
- Webbasierte Benutzeroberfläche: Die Verwaltung von Container-Clustern erfolgt bei Bedarf über die webbasierte Benutzeroberfläche des Orchestrators Marathon.
- Hochverfügbarkeit: Marathon wird als Aktiv-/Passiv-Cluster ausgeführt. Für jeden aktiven Knoten steht ein vollständig redundanter passiver Knoten bereit, der bei einem Ausfall des aktiven Knotens dessen Aufgaben übernimmt.
- Service-Discovery und Load-Balancing: DC/OS bietet mit Marathon-LB einen HAProxy-basierten Load-Balancer und mit Mesos-DNS ein DNS-basiertes Service-Discovery-Tool
- Health-Checks: Der Status von Anwendungen lässt sich via Marathon über HTTP oder TCP abfragen. Monitoring-Funktionen stehen über eine REST-API, die Kommandozeile oder die webbasierte Benutzeroberfläche zur Verfügung.
- Metriken: Marathon gibt über eine API detaillierte Metriken im JSON-Format aus, die sich bei Bedarf an Monitoring-Tools wie Graphite, statsD oder Datadog weiterleiten lassen.
- Benachrichtigungsdienst: Anwender, die DC/OS mit Marathon in der Azure-Cloud nutzen, haben die Möglichkeit, einen HTTP-Endpunkt für eventbezogene Benachrichtigungen zu reservieren.
- Anwendungsgruppen: Auf Wunsch lassen sich Container zu sogenannten „Pods“ zusammenfassen, die sich als in sich geschlossene Einheiten verwalten lassen.
- Regelbasiertes Deployment: Durch Einschränkungen lässt sich genau definieren, wo und wie Anwendungen im Cluster verteilt werden.
In der Docker-Swarm-Version stützt sich ACS auf das Docker-Stack, es kommen dieselben Open-Source-Technologien wie bei Dockers Universal Control Plane (einer Grundkomponente des Docker Datacenter) zum Einsatz. Implementiert in den Azure Container Service bietet Docker Swarm folgendes Funktionsspektrum zur Orchestrierung und Skalierung von Container-Anwendungen:
- Docker Compose: Dockers Lösung für Multi-Container-Anwendungen erlaubt es, mehrere Container miteinander zu verknüpfen und mit einem einzigen Befehl zentral auszuführen. Dabei werden beliebig viele Container inklusive aller Abhängigkeiten in einer Kontrolldatei auf Basis der Auszeichnungssprache YAML definiert.
- Steuerung über die Kommandozeile: Das Docker CLI (Command Line Interface) und das Multi-Container-Tool Docker Compose ermöglichen die direkte Verwaltung von Container-Clustern über die Kommandozeile.
- REST API: Die Docker Remote API bietet Zugang zu diversen Drittanbieter-Tools des Docker-Ökosystems.
- Regelbasiertes Deployment: Die Verteilung von Docker-Containern im Cluster lässt sich über Labels und Einschränkungen verwalten.
- Service-Discovery: Docker Swarm bietet Anwendern diverse Service-Discovery-Funktionen.
Seit Februar 2017 können ACS-Nutzer zudem auf den Orchestrator Kubernetes zurückgreifen, um die Verwaltung von Container-Anwendungen sowie das Deployment und die Skalierung in Azure-Clustern zu automatisieren. Auch als ACS-Implementation bietet Kubernetes alle im Abschnitt über die Google Container Engine aufgeführt Basisfunktionen.
Auch ACS ist direkt in den Cloud-Dienst Azure integriert:
- Azure Portal und Azure CLI 2.0: Anwender konfigurieren Container-Cluster über das Azure-Portal – die zentrale Benutzeroberfläche der Cloud-Plattform – oder das Command-Line-Interface Azure CLI 2.0.
- Azure Container Registry: Mit der Azure Container Registry steht auch Microsoft-Nutzern ein privates Repository für die Bereitstellung von Docker-Images zur Verfügung.
- Operations Management Suite (OMS): Monitoring- und Logging-Funktionen für Container-Dienste werden von der Microsoft Operations Management Suite (OMS) zur Verfügung gestellt.
- Azure Stack: Ein Container-Betrieb auf hybriden Cloud-Umgebungen lässt sich mithilfe der Erweiterung Azure Stack realisieren.
Darüber hinaus hat Microsoft den ACS um CI/CD-Funktionen (continuous integration und deployment) für Multi-Container-Anwendungen erweitert, die mit Visual Studio, Visual Studio Team Services oder dem Open-Source-Tool Visual Studio Code entwickelt wurden.
Identity- und Access-Management wird bei Azure über Active Directory geregelt, deren Grundfunktionen Anwendern bis zu einem Limit von 500.000 Verzeichnisobjekten kostenlos zur Verfügung stehen. Wie bei Amazon ECS fallen auch beim Azure Container Service keine Kosten für die Nutzung der Container-Tools an. Gebühren werden lediglich für die Nutzung der darunterliegenden Infrastruktur erhoben.
Der Microsoft Azure Container Service im Überblick:
Allgemeine Verfügbarkeit | April 2016 |
Orchestrierung | Open-Source-Tool nach Wahl: - Mesosphere DC/OS - Docker Swarm - Kubernetes (seit Februar 2017) |
Verwaltung der Container-Plattform | Cluster-Management via Azure Portal oder Azure CLI 2.0 Container-Management über das native Interface des gewählten Orchestrators: - Marathon UI - Docker CLI - Kubernetes UI |
Container-Format | Docker-Container Windows-Container werden in einer Vorschau-Version unterstützt |
Netzwerkfunktionen | Overlay-Networking via libnetwork und Container Network Model (CNM) |
Integration mit externen Speichersystemen | Docker-Volume-Driver via Azure File Storage |
Registry | Docker Registry und Azure Container Registry |
Integration mit anderen Cloud-Diensten des Anbieters (Auswahl) | Azure Portal Azure Resource Manager (ARM) Azure Active Directory Azure Stack Microsoft Operations Management Suite (OMS) |
Kosten | Die Nutzung von ACS ist kostenlos. Anwender zahlen lediglich für die in Anspruch genommenen Ressourcen der zugrundeliegenden Cloud-Computing-Plattform Azure. |
Vorteile | Nachteile |
---|---|
ACS ist vollständig mit der Cloud-Plattform Azure integriert. | Noch nicht so lange am Markt wie die Konkurrenz |
ACS unterstützt alle Standard-Orchestrierungstools: Docker Swarm, Kubernetes und DC/OS (Marathon) | |
Ein Container-Betrieb auf hybriden Cloud-Umgebungen ist via Azure Stack möglich. |
Container-as-a-Service: Anbieter im Vergleich
Um den Vergleich der vorgestellten CaaS-Anbieter zu erleichtern, haben wir sie in der folgenden Tabelle gegenübergestellt und hinsichtlich der üblichen Auswahlkriterien von Nutzern verglichen.
Auswahlkriterium | Amazon EC2 Container Service (ECS) | Google Container Engine (GKE) | Microsoft Azure Container Service (ACS) | IONOS Container Cluster |
General Availability (GA) | April 2015 | August 2015 | April 2016 | Januar 2018 |
Technische Grundlage (Rechenleistung) | EC2-Instanzen | Knoten und Cluster der Google Compute Engine (GCE) | Virtuelle Maschinen und Skalierungsgruppen für virtuelle Maschinen | VMs der IONOS IaaS-Plattform |
Objektspeicher | Amazon S3 (Simple Storage Service) | Google Cloud Storage | Blob Storage | Nein |
Standardtool für die Orchestrierung | Proprietäres Verwaltungstool | Kubernetes | Open-Source-Tools nach Wahl: - Mesosphere DC/OS - Docker Swarm - Kubernetes | Kubernetes |
Verwaltung der Container-Plattform | ECS-GUI und CLI | Cluster-Management via Google Cloud Container-Management via Kubernetes-Dashboard | Cluster-Management via Azure Container-Management via Docker-Tools | Via IONOS Cloud Panel |
Container-Format für Produktivsysteme | Docker-Container | Docker-Container | Docker-Container | Docker-Container |
Netzwerkfunktionen | Overlay-Networking via libnetwork wird nicht unterstützt | Networking auf Basis von Kubernetes | Overlay-Networking via libnetwork und Container Network Model (CNM) | Networking auf Basis von Kubernetes |
Integration mit externen Speichersystemen | Docker-Volume-Support (mit limitierten Treibern) | Kubernetes Persistent Volume | Docker Volume Driver via Azure File Storage | Kubernetes Cloud Backup |
Registry | Docker Registry Amazon EC2 Container Registry | Docker Registry Google Container Registry | Docker Registry Azure Container Registry | Docker Registry |
Identity- und Access-Management | Ja | Ja | Ja | Nein |
Hybrid-Cloud-Unterstützung | Nein | Ja | Ja | Ja |
Logging und Monitoring | Ja | Ja | Ja | Ja |
Automatische Skalierung | Ja | Ja | Ja | Ja |
Integration mit anderen Cloud-Diensten | Elastic Load Balancing Elastic Block Store Virtual Private Cloud AWS IAM AWS CloudTrail AWS CloudFormation | Cloud IAM Stackdriver Monitoring Stackdriver Logging Container Builder | Azure-Portal Azure Resource Manager (ARM) Azure Active Directory Azure Stack Microsoft Operations Management Suite (OMS) | Integration in die IONOS IaaS-Plattform Zentrale Steuerung über das IONOS Cloud Panel |
Kosten | ECS ist ein kostenloser Service. Anwender zahlen lediglich für die in Anspruch genommenen Ressourcen der zugrundeliegenden Cloud-Plattform AWS. | Container-Betrieb auf Standard-Clustern mit bis zu fünf Knoten: kostenlos Container-Betrieb auf Standard-Clustern mit sechs oder mehr Knoten: pauschale Abrechnung je Cluster pro Stunde | Die Nutzung von ACS ist kostenlos. Anwender zahlen lediglich für die in Anspruch genommenen Ressourcen der zugrundeliegenden Cloud-Computing-Plattform Azure. | Der Betrieb von Containern ist kostenlos. Nutzer des IONOS Container Clusters zahlen lediglich für die in Anspruch genommenen Ressourcen der zugrundeliegenden IONOS Cloud-Plattform |
CaaS vs On-Premises-Lösungen
Als Alternative zur CaaS bietet sich eine Bereitstellung der gewünschten Container-Tools On-Premises, sprich in den eigenen Räumlichkeiten an. Beide Lösungen sind mit Vor- und Nachteilen verbunden.
Vorbehalte gegen Cloud-Computing-Dienste beruhen in der Regel auf Sicherheitsbedenken. Und in der Tat haben Unternehmen mit einer Container-Umgebung im eigenen Rechenzentrum die größtmögliche Kontrolle. Diese umfasst eine maximale Flexibilität bei der Auswahl von Hard- und Software-Komponenten (zugrundeliegende Server, Betriebssysteme, Laufzeitumgebung und Management-Tools) sowie die Gewissheit, dass alle Daten im Rahmen des Container-Betriebs ausschließlich im eigenen Unternehmen verarbeitet und gespeichert werden.
Dieser Zugewinn an Entscheidungsfreiheit jedoch geht mit einem wesentlich größeren Arbeits- und Kostenaufwand bei der Bereitstellung und Wartung der Container-Umgebung einher. Aufwendige Installationen im eigenen Rechenzentrum erfordern häufig hohe Investitionen. Ob sich diese rentieren, ist zunächst ungewiss. Eine cloudbasierte Container-Umgebung ermöglicht es hingegen, neue Applikationen und Softwarefunktionen schnell und kostengünstig bereitzustellen. Im Rahmen von CaaS zahlen Nutzer nur für die Leistungen und Ressourcen, die sie tatsächlich nutzen. Vorauszahlungen sind nicht nötig. Dies kommt insbesondere kleineren Unternehmen, Start-ups, Gründern und Selbstständigen entgegen, die ihre Projekte mit überschaubaren Budgets verwirklichen müssen.
Wie andere Cloud-Dienste punktet CaaS mit der Auslagerung der IT-Infrastruktur an spezialisierte Dienstleister, die dafür sorgen, dass die technische Grundlage stets auf dem neuesten Stand ist und einwandfrei funktioniert. Zusammen mit dem nutzungsbezogenen Abrechnungsmodell richtet sich Container-as-a-Service damit an Unternehmen mit hohem Entwicklungs- und Innovationstempo. Unternehmen, die sich für eine On-Premises-Lösung entscheiden, verzichten auf die Flexibilität und Skalierbarkeit, die Cloud-Anbieter ihren Kunden einräumen.
Darüber hinaus ist es mitunter ein Trugschluss, dass Daten im eigenen Rechenzentrum sicherer aufgehoben sind als in der Cloud. Denn kleinen und mittleren Unternehmen ist es in der Regel nicht möglich, eine IT-Infrastruktur bereitzustellen, die in Bezug auf Verfügbarkeit, Datensicherheit und Compliance mit den Rechenzentren etablierter Public-Cloud-Anbieter mithalten kann.
Vor- und Nachteile des CaaS-Modells:
Vorteile | Nachteile |
---|---|
Geringer Aufwand für Installation, Konfiguration und Betrieb | Je nach Anbieter bestehen Einschränkungen in Bezug auf die zur Verfügung stehenden Technologien |
Wartung der technischen Grundlage übernimmt der Hosting-Provider | Eine Auslagerung von Geschäftsdaten in die Cloud geht mit einem Sicherheitsrisiko einher |
Nutzungsbezogene Abrechnung | |
Leistungsumfang ist skalierbar | |
Kurzfristige Lastspitzen werden aufgefangen |
Vor- und Nachteile selbst gehosteter Container-Plattformen:
Vorteile | Nachteile |
---|---|
Vollständige Kontrolle über den technischen Aufbau | Hohe Investitionskosten |
Alle Daten bleiben im Unternehmen | Hoher Aufwand für Installation, Konfiguration und Wartung |
Erfordert ein grundlegendes Verständnis der zugrundeliegenden Container-Technologien und von Hardware und Administration |