繁体   English   中英

Terraform中的ECS服务如何连接到AWS自动缩放组

[英]How is an ECS service in Terraform connected to an AWS autoscaling group

我是 Terraform 和 ECS 的新手,我正在使用此示例创建一个 ECS EC2 类型的集群,该集群将自动缩放并使用应用程序负载均衡器。

我的问题是: main.tf中的这段代码片段如何

resource "aws_ecs_service" "test" {
  name            = "tf-example-ecs-ghost"
  cluster         = "${aws_ecs_cluster.main.id}"
  task_definition = "${aws_ecs_task_definition.ghost.arn}"
  desired_count   = "${var.service_desired}"   
  iam_role        = "${aws_iam_role.ecs_service.name}"

  load_balancer {
    target_group_arn = "${aws_alb_target_group.test.id}"
    container_name   = "ghost"
    container_port   = "2368"
  }

  depends_on = [
    "aws_iam_role_policy.ecs_service",
    "aws_alb_listener.front_end",
  ]
}

连接到资源aws_autoscaling_group.app

resource "aws_autoscaling_group" "app" {
  name                 = "tf-test-asg"
  vpc_zone_identifier  = ["${aws_subnet.main.*.id}"]
  min_size             = "${var.asg_min}"
  max_size             = "${var.asg_max}"
  desired_capacity     = "${var.asg_desired}"
  launch_configuration = "${aws_launch_configuration.app.name}"
}

由于aws_ecs_service资源定义中没有指向aws_autoscaling_group资源的插值变量,因此 ECS 服务定义如何知道在哪里可以找到此自动缩放组? 它引用目标组,但目标组不引用自动缩放组。 这就是为什么我很困惑,因为资源“ecs-service”和资源“aws-autoscaling”之间没有明显的参考。 或者也许代码丢失了? 请尽可能提供详尽的解释。

它没有。

ECS 服务安排在 ECS 集群上,该集群是实例的逻辑分组,EC2 或 Fargate(甚至不在带有ECS Anywhere 的AWS 上!)或混合。

如果要将 EC2 实例加入 ECS 集群,则需要安装 ECS 代理,将其配置为加入正确的集群,并为实例提供必要的 IAM 权限,以便能够与 ECS 交互。 您可以使用独立的 EC2 实例或自动扩展组来执行此操作。

对于目标群体,这就是负载均衡器知道将流量发送到哪些对象的方式。 在直接 EC2 实例的情况下,您将以某种方式向目标组注册 EC2 实例。 使用 ECS 服务,可以将这些服务配置为向目标组注册服务中的所有任务。 然后,当应该发送到目标组的流量到达负载均衡器时,流量将被发送到相关的 ECS 任务。 请注意,负载均衡器可以有多个具有不同负载均衡器侦听器规则的目标组,这些目标组配置为将流量发送到不同的目标组(或执行固定响应或重定向等),以便负载均衡器可以支持多个 ECS 服务。

它由 Listener 连接。 这里是:

resource "aws_alb_listener" "front_end" {
  load_balancer_arn = aws_alb.main.id
  port              = "80"
  protocol          = "HTTP"

  default_action {
    target_group_arn = aws_alb_target_group.test.id
    type             = "forward"
  }
}

取自您提到的确切示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM