- монтировать EFS на ноде кластера из cloud-init/puppet/chef/ansible/etc и делать bind mount в контейнер при старте (придется монтировать EFS на каждой ноде кластера где может запуститься контейнер)
- монтировать EFS внутри контейнера контейнера (требует privileged для контейнера, т.к. монтирование файловой системы зависит от CAP_SYS_ADMIN)
- использовать EFS в качестве docker volume (вроде появилось начиная с docker api 1.21, но я точно не уверен)
Нужно описать volume в TaskDefinition используя dockerVolumeConfiguration в секции Volumes[1]
"TaskDefinition": { "Type": "AWS::ECS::TaskDefinition", "Properties": { "Volumes": [ { "name": "efs", "dockerVolumeConfiguration": { "scope": "task", "driver": "local", "driverOpts": { "type": "nfs", "device": ":/", "o": "addr=1.2.3.4,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport" } } } ] } }
Проблема заключается в том, что CloudFormation еще не поддерживает[2] параметр dockerVolumeConfiguration в TaskDefinition и попытка обновления стека завершается с ошибкой
18:56:27 UTC+0300 | UPDATE_FAILED | AWS::ECS::TaskDefinition | TaskDefinition | Encountered unsupported property dockerVolumeConfiguration |
Чтоы это обойти можно создать TaskDefinition через консоль и передать ее идентификатор в стек в виде параметра.
Комментариев нет:
Отправить комментарий