[Terraform] ALB (Security Group, Subnet)

ALB Security Group 생성

alb Security Group 생성 코드이다.

 resource "aws_security_group" "gh_security" {
   name        = "gh_sg"
   description = "alb Security Group"
   vpc_id      = var.seoul_vpc

  tags = {
    Name    = "gh_sg"
    Service = "SecurityGroup"
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = [ "0.0.0.0/0" ]
  }
}

Tags

태그는 리소스에 붙이는 간단한 식별 코드이다.

간단하게, 라벨이라고 생각하면 된다.


egress

트래픽 규칙을 정의한다.

AWS Security Group에서는 ingress와 egress가 있다.

ingress : 리소스에 들어오는 트래픽을 제어한다.

egress : 리소스에 나가는 트래픽을 제어한다.

  • from_port = 0  : 시작 포트를 의미합니다. 0은 모든 포트를 포함한다는 의미입니다.
  • to_port = 0  : 끝 포트를 의미하며, 이는 모든 포트를 허용합니다.
  • protocol = "-1"  : -1은 모든 것을 허용한다는 뜻이다.
  • cidr_block = [ “0.0.0.0/0”]  : 모든 IP를 허용한다는 뜻이다.

ALB Subnet

Subnet을 2개를 사용하는 간단한 코드를 제작 했다.

provider "aws" {
	region = var.aws_region //vars.tf에 지정해 두었다.
}

Application LoadBalancer Resource block

//간단하게 alb를 resource block을 설정한다.
resource "aws_lb" "alb" {
	name               = "gh-lb"
	internal           = false
	load_balancer_type = "application"
	
	security_groups = [
		aws_security_group.gh_sg.id
		]
		
// subnet을 mapping 해준다.
		subnet_mapping {
			subnet_id = var.alb_subnet_a //vars.tf에 지정해 두었다.
		}
		
		subnet_mapping {
			subnet_id = var.alb_subnet_b //vars.tf에 지정해 두었다.
		}
		
//순서는 상관 없지만 이제 tags를 붙여준다.
		tags = {
			Name        = "gh-lb"
			Service     = "Load Balancer GH"
			Environment = "Staging"
		}
	}

Load Balancer는 리스너가 없는 경우 클라이언트로부터 트래픽을 수신할 수 없기 때문에

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener

위에 링크를 보고 똑같이 설정하면 된다.


vars.tf 설정 예시

variable "aws_region" {
  description = "AWS Region"
  default     = "ap-northeast-2"
}

variable "alb_subnet_a" {
  description = "Subnet ID"
  default     = "subnet-0cea****"
}

variable "alb_subnet_b" {
  description = "Subnet ID"
  default     = "subnet-0cfa****"
}

대충 청정라거 Terraform 5까지 읽으면 ALB 구성 Terraform은 할 수 있게 된다.