Wie gefällt Ihnen der Artikel?
1
Wie gefällt Ihnen der Artikel?
1

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.

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 konzentrieren zu können. 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.

Definition

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). 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 http://mesos.apache.org/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.

Ein 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. Wir stellen folgende Produkte gegenüber:

  • Google Container Engine (GKE)
  • Amazon EC2 Container Service (ECS)
  • Azure Container Service (ACS)
Hinweis

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?

Amazon EC2 Container Service (ECS)

Seit April 2015 stellt der Online-Versandhändler Amazon Lösungen zur containerbasierten Virtualisierung unter dem Namen https://aws.amazon.com/de/ecs/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.

Folgendes Video demonstriert den Betrieb von Docker-Containern auf der Azure-Plattform.

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)
General Availability (GA) April 2015 August 2015 April 2016
Technische Grundlage (Rechenleistung) EC2-Instanzen Knoten und Cluster der Google Compute Engine (GCE) Virtuelle Maschinen und Skalierungsgruppen für virtuelle Maschinen
Objektspeicher Amazon S3 (Simple Storage Service) Google Cloud Storage Blob Storage
Standardtool für die Orchestrierung Proprietäres Verwaltungstool Kubernetes Open-Source-Tools nach Wahl: - Mesosphere DC/OS - Docker Swarm - 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
Container-Format für Produktivsysteme 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)
Integration mit externen Speichersystemen Docker-Volume-Support (mit limitierten Treibern) Kubernetes Persistent Volume Docker Volume Driver via Azure File Storage
Registry Docker Registry Amazon EC2 Container Registry Docker Registry Google Container Registry Docker Registry Azure Container Registry
Identity- und Access-Management Ja Ja Ja
Hybrid-Cloud-Unterstützung Nein Ja Ja
Logging und Monitoring Ja Ja Ja
Automatische Skalierung 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)
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.

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

Lexikon Cloud Speichersysteme