Используйте существующий том EBS с плагином Docker REX-Ray на ECS - PullRequest
1 голос
/ 12 июля 2020

Я использую Terraform для создания кластера ECS, определения задачи и службы.

Для определения задачи фрагмент кода выглядит так:

resource "aws_ecs_task_definition" "postgres" {
  container_definitions    = ...
  family                   = "Postgres"
  requires_compatibilities = ["EC2"]
  network_mode             = "bridge"

  volume {
    name = "PreCreatedEBSVolume"

    docker_volume_configuration {
      scope         = "task"
      autoprovision = false
      driver        = "rexray/ebs"
    }
  }
}

Я специально установите autoprovision на false, чтобы убедиться, что новый том не создан. Но все же, когда служба запускается, создается новый том размером 16 ГБ (который, как я предполагаю, является размером по умолчанию) и используется вместо использования «PreCreatedEBSVolume».

Я проверяю docker volume ls в экземпляре и Конечно же, я вижу перечисленные тома EBS. И если я запустил новый экземпляр с этим смонтированным томом, он монтируется должным образом.

Есть ли способ заставить REX-Ray использовать существующее блочное хранилище?

1 Ответ

1 голос
/ 12 июля 2020

Я обнаружил проблему.

Проблема заключается в свойстве "scope". В документах было сказано следующее:

Объем тома Docker, определяющий его жизненный цикл. Docker тома, привязанные к задаче, автоматически подготавливаются при запуске задачи и уничтожаются при ее остановке. Docker тома, которые определены как общие, сохраняются после остановки задачи.

Итак, мне просто пришлось изменить его на «общий» из «задачи», чтобы он использовал существующий том EBS.

...