프라이빗 서브넷에 Worket Node가 생성되게 되면 접근할 수 있는 방법 중 하나로 Bastion Host 인스턴스를 생성하는 것이다.
Bastion Host로만 Worker Node 인스턴스에 접근할 수 있게 보안그룹에 포트를 뚫어 놓는 것이다.
Bastion Host로 쓰일 EC2 생성 -> Worker Node에 해당 EC2의 SSH 포트를 허용하는 보안그룹을 적용
Worker Node에 SSH로 접속하기 위한 Bastion EC2를 생성한다.
############ Create Bastion Host ################
resource "aws_security_group" "seunghyeon-bastion-sg" {
name = "seunghyeon-bastion"
vpc_id = module.vpc.aws_vpc_id
ingress {
from_port = 22
protocol = "tcp"
to_port = 22
cidr_blocks = var.my-ip-address
}
egress {
from_port = 0
protocol = "-1"
to_port = 0
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
"Name" = "seunghyeon-EKS-bastion-sg"
}
}
Bastion Host의 cidr_blocks
의 값을 var.my-ip-address
변수로 받아오는데 이는 Bastion Host에 허용할 IP를 설정하는 부분이다. 따라서 자신의 IP를 변수값으로 입력하고 설정을 안하면 0.0.0.0/0 으로 설정된다.
resource "aws_instance" "bastion" {
ami = "ami-027ce4ce0590e3c98"
instance_type = "t2.micro"
subnet_id = element(module.vpc.public_subnets, 0)
key_name = aws_key_pair.seunghyeon-bastion.id
vpc_security_group_ids = [
aws_security_group.seunghyeon-bastion-sg.id
]
tags = {
"Name" = "seunghyeon-EKS-bastionHost"
}
}
Bastion은 접속하기 위해 거치는 Proxy같은 느낌이기에 인스턴스 타입은 t2.micro
로 설정하고 security group은 위에서 생성한 리소스로 설정한다.
Bastiong Host를 생성하게 되면 Public Subnet1에 EC2 인스턴스가 생성되고 이 인스턴스로 Private Subnet에 있는 Worker Node에 접속할 수 있게 된다.
안녕하세요! 질문이 있는데, private의 workernode로 접속하는 건 bastion host가 한다고 말씀하셨는데 그러면 nat gateway는 데이터가 나오는 통로로 사용하는건가요??