- монтировать 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 через консоль и передать ее идентификатор в стек в виде параметра.
Комментариев нет:
Отправить комментарий