ecs-cli создает сервис с балансировщиком нагрузки - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь использовать ecs-cli compose для управления своими услугами и задачами в Amazon ECS.

Я не могу найти способ с помощью команды service up создать новую службу с балансировщиком нагрузки приложения (даже если этот балансировщик нагрузки уже существует).

Это кажется возможным с service create, но API отличается от service up API, и я не уверен, как задать параметры таким же образом с create.И, как правило, для согласованности предпочтительнее использовать только команду up.Документация довольно разбросана, есть много разных способов сделать одни и те же вещи, просто интересно, какие здесь лучшие практики.Любые предложения с благодарностью.

Стоит отметить, что у меня все работает, пока у меня есть существующее определение задачи, и я создаю свой сервис через графический интерфейс Amazon AWS, задавая балансировщик нагрузки.Поэтому я подумываю о том, чтобы переместить все мои compose config в файл task-definition.json и использовать их напрямую с aws ecs cli.

У меня есть рабочий docker-compose.yml файл:

# docker-compose.yml

version: "3"

services:
  application:
    image: ${IMAGE_ARN}
    command: npm start
    ports:
      - "8000:8000"
  nginx:
    image: ${IMAGE_ARN}
    ports:
      - "80:80"

И сопровождающий ecs-params.yml файл:

# ecs-params.yml

version: 1

task_definition:
  task_role_arn: ${ROLE_ARN}
  task_execution_role: ${ROLE_ARN}
  ecs_network_mode: awsvpc
  task_size:
    mem_limit: 0.5GB
    cpu_limit: 256
  container_definitions:
    - name: application
    - name: nginx

run_params:
  network_configuration:
    awsvpc_configuration:
      assign_public_ip: ENABLED
      subnets:
        - ${SUBNET_1_ID}
        - ${SUBNET_2_ID}
      security_groups:
        - ${SECURITY_GROUP_ID}

Команда, которую я запускаю, чтобы вызвать службуup is:

ecs-cli compose service up \
--file docker-compose.yaml \
--ecs-params ecs-params.yaml \
--project-name service-name

Любой способ указать конфигурацию балансировщика нагрузки с помощью этой команды?

1 Ответ

0 голосов
/ 27 декабря 2018

Похоже, что последняя версия ecs-cli поддерживает настройку балансировки нагрузки с включенным обслуживанием.

Вы пытались предоставить опцию --target-group-arn ?.Предполагая, что вы уже создали ALB и Target Group, чтобы связать службу ECS.Вот пример команды, которую я только что протестировал.

ecs-cli compose --file docker-compose.yaml --project-name nginx \
--ecs-params ecs-params.yaml service up \
--target-group-arn "arn:aws:elasticloadbalancing:us-east-1:xxxxxxxx:targetgroup/awsvpc-nginx/2bf8921935c827bd" \
--container-name nginx --container-port 80

Примечание - параметры

  1. target-group-arn, container-name и container-port являются обязательными для ассоциации балансировщика нагрузки, и они должныбыть предоставлено в команде после service up.
  2. Я вижу, вы пытаетесь использовать режим awsvpc для задач.Я не уверен, что вы пытаетесь вызвать стартовый контейнер типа EC2 или Fargate.
  3. Если вам нужен режим awsvpc, убедитесь, что в целевой группе балансировщика нагрузки создана цель с типом ip вместоinstance.
  4. Если вы используете тип запуска EC2, но в режиме awsvpc, убедитесь, что для EC2 AMI выбран Amazon-ECS Optimized AMI.Если вы используете тип Fargate, тогда ваш assign_public_ip должен DISABLED.

. Дайте мне знать ваш отзыв.

Ссылка - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cmd-ecs-cli-compose-service.html

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html

...