Как обновить образ контейнера в AWS Fargate

Я поместил исходный образ докера в репозиторий и создал AWS Fargate с использованием этого образа, есть ли способ обновить образ, поскольку в моем образе докера есть определенные изменения.


person Ram    schedule 04.01.2018    source источник


Ответы (4)


Так просто как:

aws ecs update-service --cluster <cluster> --service <service> --force-new-deployment

person Gabriel Petersson    schedule 22.07.2020
comment
он изменит IP, и если домен Route 53 указывает на предыдущий IP - он перестанет работать. я должен использовать балансировщик нагрузки в качестве псевдонима, чтобы предотвратить это? - person Oleg Abrazhaev; 30.06.2021

См. документацию по AWS:

Если вы обновили образ Docker своего приложения, вы можете создать новое определение задачи с этим образом и развернуть его в своей службе.

Примечание

Если в обновленном образе Docker используется тот же тег, что и в существующем определении задачи для вашей службы (например, my_image: latest), вам не нужно создавать новую версию определения задачи. Вы можете обновить службу, используя описанную ниже процедуру, сохранить текущие настройки службы и выбрать «Принудительное новое развертывание». Новые задачи, запускаемые при развертывании, при запуске извлекают текущую комбинацию изображения / тега из вашего репозитория. Параметр Принудительное новое развертывание также используется при обновлении задачи Fargate для использования более актуальной версии платформы, когда вы указываете ПОСЛЕДНЮЮ. Например, если вы указали ПОСЛЕДНЮЮ версию, а ваши запущенные задачи используют версию платформы 1.0.0, и вы хотите, чтобы они перезапускались с использованием более новой версии платформы.

https://docs.aws.amazon.com/AmazonECS/latest/userguide/update-service.html#update-service

person Krzysztof Czelusniak    schedule 29.03.2019

Создайте новую версию определения задачи, обновите контейнер, добавив последние метки, и обновите службу.

person rashidcmb    schedule 08.06.2018

Вы можете написать файл конфигурации после создания кластера, используя default-launch-type как FARGATE для вашего приложения, и определить соответствующие параметры в определении вашей задачи, то есть ecs-params.yaml

Вот один файл для nginx:latest образа, который хранится в Amazon ECR.

version: '2'
services:
  web:
    image: account-id.dkr.ecr.ap-southeast-1.amazonaws.com/nginx:latest
    ports:
      - "80:80"
    logging:
      driver: awslogs
      options:
        awslogs-group: awslogs-web
        awslogs-region: ap-southeast-1
        awslogs-stream-prefix: web-nginx

Вы просто меняете образ, и вы можете добавить обновленный образ в свое развертывание по мере обновления службы внутри кластера.

Если вы обновили образ Docker своего приложения, вы можете создать новое определение задачи с этим образом и развернуть его в своей службе. Планировщик службы использует параметры минимального и максимального процентов работоспособности (в конфигурации развертывания службы) для определения стратегии развертывания.

Примечание. Execution Role в определении задачи дает разрешения на извлечение образов из реестра контейнеров.

Здесь вы можете найти руководство по документации, AWS ECS Update Service

person mohan08p    schedule 05.01.2018
comment
Как объясняется в документе службы обновлений ECS, обратите внимание, что если в вашем определении образа и задачи используется тот же тег, что и раньше (например, последний), вы можете просто выполнить обновление службы ECS и установить флажок Принудительное новое развертывание, чтобы ваше новый образ будет развернут. - person dSebastien; 14.02.2019