
Bild: Sheila Fitzgerald/Shutterstock
Die Container-Virtualisierungssoftware Docker soll über das neue ECS-Plugin besser mit den AWS-Services AWS Fargate und AWS Elastic Container zusammenspielen, so der zugehörige Blogpost auf dem Docker-Blog. Mit der Neuerung wird die Notwendigkeit der Erstellung separater AWS-ECS-Ressourcen wie zum Beispiel VPC, ECS-Cluster und sogenannte ECS-Task-Definitionen eliminiert.
Steuern lässt sich die ECS-Integration über den Root-Command ecs
. Die Ausführung des Commands docker ecs compose up
beispielsweise erstellt die Applikation und alle benötigten Ressourcen innerhalb der AWS-Umgebung wie in der compose.yaml
-Datei definiert. Für das ECS-Docker-Plugin muss ein AWS-Profil eingerichtet werden, aus dem die erforderlichen AWS-API-Zugangsdaten ausgewählt werden können. Über docker ecs setup
können AWS-Profil und -Region innerhalb der Docker-Umgebung gespeichert werden: Das ECS-Plugin parst die compose.yaml
-Datei und konvertiert sie in ein Cloud-Formation-Template. Über das Template werden dann alle in der compose.yaml
definierten Ressourcen erstellt. Im Idealfall müssen Entwickler also künftig nur noch den ECS-Command ausführen, damit in Cloudformation alles Nötige für den Betrieb des Docker-Containers vorbereitet wird. Zur Bereinigung von Ressourcen dient der down
-Command, im Fall eines fehlgeschlagenen Deployments werden diese automatisch bereinigt.
Die ECS-Integration führt vier Schritte aus. Während der Ladephase wird die compose.yaml
über die Go-Reference-Library compose-go geladen und geparst. Im nächsten Schritt, der Validierungsphase, werden sogenannte ECS-Defaults in das compose-go-Modell injiziert. Um sicherzustellen, dass sie keine Features enthält, die nicht unterstützt werden, wird in dieser Phase außerdem die compose.yaml
überprüft. Während der Konvertierungsphase wird das Cloud-Formation-Template erstellt. Darin definiert sind alle zur Implementation auf AWS benötigten Ressourcen. Im letzten Schritt wird das Cloud-Formation-Template entweder zu einer Stack-Datei exportiert oder auf AWS deployed.
Die Compose-Services der compose.yaml
sind währenddessen auf ECS-Services gemappt. Über eine spezielle Compose-Erweiterung (zum Beispiel x-aws-*) wird sichergestellt, dass ECS-Features als Service-Level-Features exponiert werden. Das ist nötig, weil Compose von Haus aus keine Multi-Container-Services wie zum Beispiel kubernetes-pods oder sidecars unterstützt.
Ausgehend von dem Compose-Modell wird die Netzwerkabstaktion in AWS-Security-Groups abgebildet. Die Anwendung wird innerhalb einer einzigen VPC erstellt, wobei pro Compose-Netzwerk eine separate Security-Gruppe erstellt wird, einschließlich der impliziten Standardgruppe. Dienste werden dann entsprechend der Deklaration der Netzwerke im Compose-Modell angehängt. Dienste, die an eine gemeinsame Security-Gruppe angeschlossen sind, können so miteinander kommunizieren. Für jede Anwendung wird zudem ein AWS-Cloud-Map Private Namespace als {project}.local
erstellt. Über den AWS-Service können Ressourcen einer Anwendung mit benutzerdefinierten Namen registriert werden. Der Service überprüft die Location der registrierten Ressourcen auf Aktualität.
Der Final Release des Plugins ist für Ende des Jahres angedacht, bis dahin soll das Feature in die Docker-Contexts integriert werden. Contexts bieten einen Weg, Kubernetes-Cluster, Swarm-Cluster und verschiedene einzelne Docker-Nodes über ein einzelnes Docker-CLI zu managen. Um das Plugin jetzt schon zu nutzen, braucht ihr neben einer Docker-ID zudem Docker Desktop Edge in Version 2.3.3.0. Im zugehörigen Repository auf GitHub finden interessierte Entwickler eine Demo-Anwendung. Feedback und Änderungswünsche können wie gehabt über die dem Projekt zugehörige Roadmap eingereicht werden.
Passend dazu:
- Container-Virtualisierung: Docker und Kubernetes erfolgreich einsetzen
- Kubernetes 1.18 kommt mit 38 spannenden Neuerungen
- Kubernetes entkompliziert: Microsoft launcht neues Open-Source-Projekt
Bitte beachte unsere Community-Richtlinien
Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.
Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.
Dein t3n-Team