ECS - тип цели ip несовместим с режимом сети моста, указанным в определении задачи - PullRequest
0 голосов
/ 03 марта 2020

Проблема

Получение ip целевого типа, что несовместимо с режимом мостовой сети Ошибка при попытке создать службу ECS с существующим NLB, целевая группа которого использует IP в качестве целевого типа ,

Ошибка от Terraform, которая использовала его для создания всех ресурсов AWS.

Ошибка: InvalidParameterException: Предоставленная целевая группа arn: aws :asticloadbalancing: $ REGION : $ ACCOUNT: targetgroup ... имеет тип цели ip, который несовместим с режимом мостовой сети, указанным в определении задачи.

Вывод TF_DEBUG Terraform Github проблема # 11719 , кажется, указывает, что это ограничение, если Terraform (или его сообщение) является правильным.

2020-01-22T20:04:46.819Z [DEBUG] plugin.terraform-provider-aws_v2.45.0_x4: 2020/01/22 20:04:46 [DEBUG] [aws-sdk-go] {"__type":"InvalidParameterException","message":"The provided target group arn:aws:elasticloadbalancing:us-east-1:xxx:targetgroup/llprd20200122052638603300000006/a0a2d775807f6620 has target type ip, which is incompatible with the bridge network mode specified in the task definition."}

Вопрос

Пожалуйста, сообщите, если это может быть ограничение AWS. Насколько я до сих пор изучал документацию AWS, нет никакой информации о том, что тип цели IP не может использоваться для режима мостовой сети. Однако хотелось бы убедиться на 100%.

  • Служба ECS - Создание балансировщика сетевой нагрузки - Настройка маршрутизации
    Для Тип цели, выберите, регистрировать ли ваши цели с идентификатором экземпляра или IP-адресом . Важно Если в определении задачи вашей службы используется сетевой режим awsvp c (который требуется для типа запуска Fargate), вы должны выбрать ip в качестве целевого типа, а не экземпляра. Это связано с тем, что задачи, использующие сетевой режим awsvp c, связаны с сетевым интерфейсом elasti c, а не с экземпляром Amazon EC2. Вы не можете зарегистрировать экземпляры по идентификатору экземпляра, если они имеют следующие типы экземпляров: C1, CC1, CC2, CG1, CG2, CR1, G1, G2, HI1, HS1, M1, M2, M3 и T1. Вы можете зарегистрировать экземпляры этих типов по IP-адресу.

Terraform

resource "aws_lb_target_group" "this" {
  count = length(var.listeners)
  name_prefix           = "${substr("${var.name}", 0, 6)}"
  vpc_id                = "${var.vpc_id}"
  target_type           = "ip"
  port                  = 8080
  protocol              = "tcp"
  ...
}

Я не указал network_mode в конфигурации aws_ecs_task_definition , поэтому используется "мост" по умолчанию.

TF_DEBUG

...
2020-03-03T18:54:10.301+1100 [DEBUG] plugin.terraform-provider-aws_v2.50.0_x4: 2020/03/03 18:54:10 [DEBUG] [aws-sdk-go] {"__type":"InvalidParameterException","message":"The provided target group arn:aws:elasticloadbalancing:us-east-2:ACCOUNT:targetgroup/****/4689fc19ff99ca57 has target type ip, which is incompatible with the bridge network mode specified in the task definition."}
2020-03-03T18:54:10.301+1100 [DEBUG] plugin.terraform-provider-aws_v2.50.0_x4: 2020/03/03 18:54:10 [DEBUG] [aws-sdk-go] DEBUG: Validate Response ecs/CreateService failed, attempt 0/25, error InvalidParameterException: The provided target group arn:aws:elasticloadbalancing:us-east-2:ACCOUNT:targetgroup/****/4689fc19ff99ca57 has target type ip, which is incompatible with the bridge network mode specified in the task definition.
...

Среда

  • Тип ECS - EC2, а не Fargate
  • Использование Terraform v0.12.20 на Ubuntu "18.04.4 LTS (Bioni c Beaver) "

1 Ответ

2 голосов
/ 05 марта 2020

Как указано в рекомендациях по обнаружению услуг AWS , вы не можете ссылаться на контейнеры ECS в сетевом режиме bridge, используя ip. Фактически, вы можете указать только записи DNS SRV для этого вида услуг.

Опции здесь: либо изменение режима сети определения задачи на awsvpc, либо изменение типа target_type на instance.

Лично у меня был только опыт работы с awsvpc сетевым режимом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...