Два основных вопроса с кодом terraform.
- Альбом для Ecs fargate предназначен для маршрутизации в другие зоны доступности? или маршрутизация в контейнеры
- Если я создаю подсеть на основе номера зоны доступности (us-east-2a, 2b, 2c, поэтому число равно 3 и создаю 3 подсети) и сопоставляю ее с кластером ecs с помощью alb, применяется ли зона доступности?
Я пытаюсь создать инфраструктуру, как показано на изображении
resource "aws_vpc" "cluster_vpc" {
tags = {
Name = "ecs-vpc"
}
cidr_block = "10.30.0.0/16"
}
data "aws_availability_zones" "available" {
}
resource "aws_subnet" "cluster" {
vpc_id = aws_vpc.cluster_vpc.id
count = length(data.aws_availability_zones.available.names)
cidr_block = "10.30.${10 + count.index}.0/24"
availability_zone = data.aws_availability_zones.available.names[count.index]
tags = {
Name = "ecs-subnet"
}
}
resource "aws_internet_gateway" "cluster_igw" {
vpc_id = aws_vpc.cluster_vpc.id
tags = {
Name = "ecs-igw"
}
}
resource "aws_route_table" "public_route" {
vpc_id = aws_vpc.cluster_vpc.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.cluster_igw.id
}
tags = {
Name = "ecs-route-table"
}
}
resource "aws_route_table_association" "to-public" {
count = length(aws_subnet.cluster)
subnet_id = aws_subnet.cluster[count.index].id
route_table_id = aws_route_table.public_route.id
}
resource "aws_ecs_cluster" "staging" {
name = "service-ecs-cluster"
}
resource "aws_ecs_service" "staging" {
name = "staging"
cluster = aws_ecs_cluster.staging.id
task_definition = aws_ecs_task_definition.service.arn
desired_count = 1
launch_type = "FARGATE"
network_configuration {
security_groups = [aws_security_group.ecs_tasks.id]
subnets = aws_subnet.cluster[*].id
assign_public_ip = true
}
load_balancer {
target_group_arn = aws_lb_target_group.staging.arn
container_name = var.app_name
container_port = var.container_port
}
resource "aws_lb" "staging" {
name = "alb"
subnets = aws_subnet.cluster[*].id
load_balancer_type = "application"
security_groups = [aws_security_group.lb.id]
access_logs {
bucket = aws_s3_bucket.log_storage.id
prefix = "frontend-alb"
enabled = true
}
tags = {
Environment = "staging"
Application = var.app_name
}
}
... omit like lb_target, or specific components
Есть ли проблемы с вашим кодом, или вы просто ищете ответы на два своих вопроса? — person KIM schedule 30.12.2020
оба 🙂 код работает хорошо, но я не уверен в своем коде, хотя он работает. — person KIM schedule 30.12.2020
@Marcin, я намерен создать инфраструктуру с тремя зонами доступности, а также развернуть aws fargate в трех зонах доступности. но я думаю, что мой код просто создает три зоны доступности и не использую их — person KIM schedule 30.12.2020
Если кластер ALB и ECS используют одни и те же подсети (и кажется, что они взяты из кода Terraform), тогда он должен создать все, как показано на схеме. — person KIM schedule 30.12.2020
@MarkoE, спасибо за ответ 🙂 1. если us-east-2a не работает, us-east-2b активируется автоматически, и alb будет направлять запросы на us-east-2b? 2. Это вызовет повышение тарифов? 3. aws fargate может сам маршрутизировать трафик? (если alb используется для маршрутизации зоны доступности, как aws направляет запросы маршрута?) — person KIM schedule 30.12.2020
