일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데코레이터
- eager
- dfs
- 유니크제약조건
- 비관적락
- 일대다
- 지연로딩
- 힙
- 동적sql
- JPQL
- BOJ
- 낙관적락
- 스토어드 프로시저
- exclusive lock
- SQL프로그래밍
- 연결리스트
- 즉시로딩
- 연관관계
- 다대다
- PS
- fetch
- 백트래킹
- 이진탐색
- 다대일
- CHECK OPTION
- execute
- FetchType
- querydsl
- 스프링 폼
- shared lock
- Today
- Total
흰 스타렉스에서 내가 내리지
Terraform 을 이용하여 AWS IGW, NAT GW 생성 본문
IGW 와 NAT GW 연결에 따라서 public, private subnet 이 결정된다.
프라이빗 서브넷의 인스턴스는 퍼블릭 서브넷에 있는 NAT(Network Address Translation) 게이트웨이를 사용하여 인터넷에 액세스할 수 있다.
퍼블릿 서브넷에 연결된 라우트 테이블을 보면, 인터넷 게이트웨이를 통해서 바로 밖으로 나가게 되어 있다.
하지만 프라이빗 서브넷에 연결된 라우트 테이블을 보면, NAT 게이트웨이를 통하라고 명시가 되어 있다.
그래서 퍼블릭 서브넷에 있는 NAT Instance 한테 갔다가 IGW 를 통해서 밖으로 나가게 된다.
즉, 퍼블릭 서브넷에 있는 서버들은 각각이 고유한 pulbic IP 주소를 가지고 있고,
프라이빗 서브넷에 있는 인스턴스들은 동일한 IP (NAT Gateway 가 가지고 있는 elastic IP) 를 가진다.
그래서 프라이빗 서브넷 내에 서버가 100개 있더라도 같은 NAT Gateway 라면 동일한 IP 를 통해서 나가게 된다.
# Terraform 으로 IGW 만들기
vim vpc.tf
이전 글을 잘 따라했다면, vpc.tf 파일은 아래와 같을 것이다.
이어서 아래 코드 추가
resource "aws_internet_gateway" "igw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "devops-demo-igw"
}
}
terraform plan
terraform apply
이제 NAT Gateway 를 만들어보자.
# Terraform 으로 NAT Gateway 만들기
vim vpc.tf
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "devops-demo-vpc"
}
}
resource "aws_subnet" "public_subnet" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-2a"
tags = {
Name = "devops-demo-subnet-1"
}
}
resource "aws_subnet" "private_subnet" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.2.0/24"
availability_zone = "ap-northeast-2c"
tags = {
Name = "devops-demo-subnet-2"
}
}
resource "aws_internet_gateway" "igw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "devops-demo-igw"
}
}
resource "aws_eip" "nat" {
vpc = true
lifecycle {
create_before_destroy = true
}
}
resource "aws_nat_gateway" "nat_gateway" {
allocation_id = aws_eip.nat.id
subnet_id = aws_subnet.public_subnet.id
tags = {
Name = "devops-demo-nat-gw"
}
}
아래 eip 와 nat 를 추가했다.
nat 에서 subnet_id 는 private subnet 이 아니라 public subnet 을 연결해야 한다.
terraform plan
NAT Gateway 는 비용이 발생한다.
다음 글에서 terraform 을 이용하여 route table 을 생성하는 방법까지 알아보자
'DevOps' 카테고리의 다른 글
Terraform 을 이용하여 Route Table 생성 (0) | 2024.08.08 |
---|---|
NAT Gateway (0) | 2024.08.06 |
Terraform 을 이용하여 VPC 와 Subnet 생성 (0) | 2024.08.06 |
AWS VPC 와 관련 개념, 콘솔을 통한 생성 실습 (0) | 2024.08.06 |
테라폼에서 *.tf 파일 설명 (0) | 2024.08.01 |