Пошаговое руководство: создание службы ECS с помощью ALB с использованием Terraform

Создание службы ECS с помощью ALB с использованием Terraform

В этой статье блога мы рассмотрим, как создать сервис Amazon ECS (Elastic Container Service) с балансировщиком нагрузки приложений (ALB) с помощью Terraform. ECS – это высокомасштабируемая служба оркестрации контейнеров, предоставляемая AWS, а ALB – это служба балансировки нагрузки, которая позволяет распределять входящий трафик между несколькими контейнерами ECS.

Методы.
Существует несколько способов создания службы ECS с помощью ALB с использованием Terraform. Мы обсудим два наиболее часто используемых метода:

Метод 1: служба ECS с правилом прослушивателя ALB
В этом методе мы создаем правило прослушивателя ALB для пересылки трафика в службу ECS.

Шаг 1. Определите ALB и прослушиватель

resource "aws_lb" "example" {
  name               = "example"
  load_balancer_type = "application"
  subnets            = [aws_subnet.example.id]
}
resource "aws_lb_listener" "example" {
  load_balancer_arn = aws_lb.example.arn
  port              = 80
  protocol          = "HTTP"
  default_action {
    target_group_arn = aws_lb_target_group.example.arn
    type             = "forward"
  }
}

Шаг 2. Определите целевую группу ALB

resource "aws_lb_target_group" "example" {
  name     = "example"
  port     = 80
  protocol = "HTTP"
  vpc_id   = aws_vpc.example.id
}

Шаг 3. Определите службу ECS

resource "aws_ecs_service" "example" {
  name            = "example"
  cluster         = aws_ecs_cluster.example.id
  task_definition = aws_ecs_task_definition.example.arn
  desired_count   = 2
  load_balancer {
    target_group_arn = aws_lb_target_group.example.arn
    container_name   = "example"
    container_port   = 80
  }
}

Метод 2: служба ECS с целевой группой ALB
В этом методе мы создаем целевую группу ALB и связываем ее непосредственно со службой ECS.

Шаг 1. Определите целевую группу ALB

resource "aws_lb_target_group" "example" {
  name     = "example"
  port     = 80
  protocol = "HTTP"
  vpc_id   = aws_vpc.example.id
}

Шаг 2. Определите службу ECS

resource "aws_ecs_service" "example" {
  name            = "example"
  cluster         = aws_ecs_cluster.example.id
  task_definition = aws_ecs_task_definition.example.arn
  desired_count   = 2
  network_configuration {
    security_groups = [aws_security_group.example.id]
    subnets         = [aws_subnet.example.id]
  }
  load_balancer {
    target_group_arn = aws_lb_target_group.example.arn
    container_name   = "example"
    container_port   = 80
  }
}

В этой статье мы рассмотрели два метода создания службы ECS с ALB с использованием Terraform. Следуя предоставленным примерам кода, вы можете легко настроить масштабируемое и высокодоступное контейнерное приложение с возможностями балансировки нагрузки. Использование Terraform позволяет управлять инфраструктурой как кодом, что упрощает репликацию и поддержку сервисов ECS в различных средах.