ecs service 생성

hyuckhoon.ko·2021년 1월 12일
0

What I learned in first year

목록 보기
54/146

ecs 클러스터 내에서 도커 컨테이너를 실행시키는 것이 service다.

ecs.tf 파일 수정

1. 보안그룹 설정

resource "aws_security_group" "ecs_service" {
    description = "Access for the ECS Service"
    name = "${local.prefix}-ecs-service"
    vpc_id = aws_vpc.main.id
    
    egress {
        from_port = 443
        to_port = 443
        protocol = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }
    
    egress {
        from_port = 5432
        to_port = 5432
        protocol = "tcp"
        cidr_blocks = [
            aws_subnet.private_a.cidr_block,
            aws_subnet.private_b.cidr_block
        ]
    }
    
    ingress {
        from_port = 8000
        to_port = 8000
        protocol = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }
    
    tags = local.common_tags
}

인바운드 규칙: proxy
아웃바운드 규칙: database, ECR



2. ecs 서비스 리소스 구축

resource "aws_ecs_service" "api" {
    name = "${local.prefix}-api"
    cluster = aws_ecs_cluster.main.name
    task_definition = aws_ecs_task_definition.api.family
    desired_count = 1
    launch_type = "FARGATE"
    
    network_configuration {
        subnets = [
            aws_subnet.public_a.id,
            aws_subnet.public_b.id,
        ]
        security_groups = [aws_security_group.ecs_service.id]
        assign_public_ip = true
    }
}

desired_count: task의 수를 의미하며, 값이 높을 수록 비용도 증가한다.

network_configuration: 현재 subnets이 퍼블릭 서브넷으로 지정 돼 있으나, 이후 로드밸런서를 구축 시 재수정 예정이다.







database.tf 파일 수정

ecs 서비스를 구축했으니 그에 따라 database.tf 파일도 수정해야 한다.
ecs 서비스의 network 보안그룹을 지정할때,
outbound 규칙에 database 부분이 있었다.(5432 port)

따라서, database 관점에서는 ingress로, ecs의 접근을 허용해줘야 한다.
우리가 실행시키는 앱에서 DB로의 접근이 반드시 필요하기 때문이다.

즉,
bastion을 통한 DB access와
ecs_service를 통한 DB access를 허용하는 것이다.


(생략)

resource "aws_security_group" "rds" {
  description = "Allow access to the RDS database instance"
  name        = "${local.prefix}-rds-inbound-access"
  vpc_id      = aws_vpc.main.id

  ingress {
    protocol  = "tcp"
    from_port = 5432
    to_port   = 5432

    security_groups = [
      aws_security_group.bastion.id,
      aws_security_group.ecs_service.id
    ]
  }
  tags = local.common_tags
}



gitlab으로 git push


AWS ECS 서비스 확인

0개의 댓글