Wie stelle ich aktualisierte Docker-Images für Amazon ECS-Aufgaben bereit?
Was ist der richtige Ansatz, um meine Amazon ECS Aufgaben aktualisieren, Ihre Docker-images, einmal gesagt, die Bilder wurden aktualisiert in die entsprechende Registrierung?
InformationsquelleAutor der Frage aknuds1 | 2016-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jedes mal, wenn Sie eine Aufgabe gestartet wird (entweder über die
StartTask
undRunTask
- API-Aufrufe oder, die automatisch gestartet wird, als Teil eines Service), der ECS-Agent führt einedocker pull
desimage
geben Sie in Ihrer Aufgabenstellung. Wenn Sie verwenden das gleiche Bild, Namen (einschließlich tag) jedes mal, wenn Sie drücken, um Ihre registry, sollten Sie in der Lage sein, um das neue Bild, indem Sie laufen, eine neue Aufgabe. Beachten Sie, dass, wenn das Andockfenster nicht erreichen kann, die Registrierung aus irgendeinem Grund (z.B., Netzwerk Fragen oder Problemen bei der Authentifizierung), die ECS-Agent wird versuchen, mit einem Cache-Bild, wenn Sie wollen, um zu vermeiden, zwischengespeicherte Bilder verwendet werden, wenn Sie Ihr Bild aktualisieren, werden Sie wollen, schieben Sie einen anderen tag, um Ihre Registrierung jedes mal, wenn Sie und aktualisieren Sie Ihre task-definition entsprechend, bevor Sie die neue Aufgabe.InformationsquelleAutor der Antwort Samuel Karp
Registrierung einer neuen Aufgabe definition und Aktualisierung der Dienst für die neue Aufgabenstellung ist das empfohlene Konzept von AWS. Der einfachste Weg dies zu tun ist, um:
Dieses tutorial hat mehr detail und beschreibt, wie Sie die oben beschriebenen Schritte passen in eine end-zu-end-Produkt-Entwicklung Prozess.
Full disclosure: Dieses Lernprogramm verfügt über Container von Bitnami und ich arbeite für Bitnami. Aber die Gedanken, die hier geäußert sind meine eigenen und nicht die Meinung von Bitnami.
InformationsquelleAutor der Antwort Neal
Wenn die Aufgabe ausgeführt wird, unter einem service, den Sie zwingen kann, eine neue Bereitstellung. Dies zwingt die Aufgabenstellung neu bewertet werden und das neue container-image gezogen werden.
InformationsquelleAutor der Antwort Dima
Ich erstellt ein Skript für die Bereitstellung von aktualisierten Docker images auf eine staging-service ECS, so dass der entsprechende task definition bezieht sich auf die aktuellen Versionen der Docker-images. Ich weiß nicht, ob ich folgenden best practices, also feedback wäre willkommen.
Für das Skript zu arbeiten, benötigen Sie entweder ein Ersatzteil ECS-Instanz oder eine
deploymentConfiguration.minimumHealthyPercent
Wert, so dass ECS stehlen kann eine Instanz für die Bereitstellung des aktualisierten task-definition.Mein Algorithmus ist wie folgt:
Meinen code eingefügt unter:
bereitstellen-ecs
_common.py
InformationsquelleAutor der Antwort aknuds1
Die folgenden Befehle für mich gearbeitet
InformationsquelleAutor der Antwort explorer
Mithilfe von AWS cli habe ich versucht aws ecs-update-service wie oben vorgeschlagen. Nicht abholen neueste docker von ECR. Am Ende habe ich erneut meine Ansible playbook, erstellt das ECS-cluster. Die version des task-definition gestoßen, wenn ecs_taskdefinition läuft. Dann ist alles gut. Das neue Andockfenster Bild abgeholt wird.
Wahrheitsgemäß nicht sicher, ob der task version Kräfte ändern die erneut bereitstellen, oder, wenn das playbook mit dem ecs_service bewirkt, dass die Aufgabe neu zu laden.
Wenn jemand interessiert ist, werde ich die Erlaubnis bekommen, zu veröffentlichen eine bereinigte version von meinem playbook.
InformationsquelleAutor der Antwort mpechner