Terraform VPC 기본 구조

VPC 및 Subnet 기본 구성하기

VPC 구성

본 장의 가이드에서 다룬 코드 경로는 terraform/vpc/artd_apnortheast2 입니다.

VPC는 대부분의 서비스의 근간이 되는 네트워크입니다. 따라서 다른 AWS 리소스를 생성하기 전에 VPC를 미리 세팅해두어야 합니다. 단, 무작정 구성을 하게 되는 경우에는 나중에 수정하기 힘들 수 있습니다.

본 실습에서는 artd_apnortheast2 에 VPC를 구성해보도록 하겠습니다.

실습에 앞서, 아래 과정은 개별적으로 진행 부탁드립니다. backend.tf 파일 수정은 앞선 IAM 세팅을 참고하시기 바랍니다.

개발용 VPC 환경 구성하기

1. 디렉터리 만들기

  • 기존의 artd_apnortheast2 VPC 코드를 복사하여 새로운 디렉터리를 만듭니다.

$ cd terraform/vpc
$ cp -R artd_apnortheast2 devartd_apnortheast2

2. 코드 수정 및 설명

기존 코드를 그대로 사용할 수 없기 때문에, 생성하고자 하는 환경에 대한 정보로 설정을 변경해야 합니다.

🚀 backend.tf 변경

🚀 terraform.tfvars 변경

  • cidr_numeral 값은 10.X.0.0/16 에서 X에 들어갈 값입니다.

🚀 Route53 Private Hosted Zone 생성

  • VPC에서 사용할 Internal DNS Record를 생성합니다. 내부통신에서 DNS를 사용하기 위해서 VPC마다 생성하는 것이 좋습니다.

  • VPC마다 독립적이기 때문에 이름은 중복되도 괜찮습니다. 본 실습에서는 모든 VPC의 내부 DNS는 devart.internal 로 통일합니다.

🚀 VPC마다 공통으로 가지고 있을 보안 그룹 생성

  • VPC에서 공통으로 사용할 Security Group을 생성합니다.

  • 사무실/집에서 SSH 접속을 위한 Security GroupPrivate Subnet에 있는 인스턴스에 접속하기 위한 Bastion 서버의 Security Group을 생성할 예정입니다.

  • Security Group ID는 추후에 다른 리소스 생성에 필요하므로 Output으로 빼야 합니다.

  • 공통으로 필요한 Security Group이 있으면 본 실습에서 추가로 생성하시면 됩니다.

Default/Home Security Group

  • Default SG : 인스턴스가 공통으로 가져야 할 보안그룹입니다.

  • Home SG : Admin 페이지, kibana 페이지 등 접근 제어가 필요한 웹사이트에 회사에서만 접속할 수 있도록 설정하기 위한 보안그룹입니다.

아래 예시 중에서 Node Exporter, Jmx Exporter, Kafka, Elasticsearch에 대한 inbound/outbound rule은 사용법을 알려드리기 위해 추가한 것입니다. 필요한 설정으로 변경 또는 삭제 후에 apply하시기 바랍니다.

Bastion Security Group (Optional)

  • Bastion SG : Bastion 서버에 사용할 보안그룹입니다.

  • Bastion Aware SG : Bastion을 통해 접속을 할 수 있도록 권한을 허용해주는 보안그룹입니다. 이 보안그룹은 private 인스턴스에 붙일 예정입니다.

Bastion 서버 없이 AWS Session Manager, Teleport 등을 통해서 SSH 접속을 하는 경우에는 아래 보안그룹은 생성하실 필요가 없습니다.

🚀 VPC 기본 세트 생성

VPC에 필요한 기본 구성을 패키지로 설치합니다. 본 파일에는 아래의 구성요소들이 들어있습니다.

  • VPC

  • Public Subnet / Private Subnet / DB Subnet(private)

  • Elastic IP for NAT

  • Route Table

  • Internet Gateway

  • NAT Gateway

🚀 라우팅 테이블 구성

이전에 만든 IGW와 NAT를 사용할 수 있도록 route table에 등록해야 합니다. 추후에 peering용으로 routes를 추가할 예정이므로 편의상 파일을 분리해서 관리합니다.

Output

  • VPC에서 생성된 리소스는 추후에 다른 리소스에서 사용할 예정입니다.

  • 사용할 값들은 전부 output으로 추가해 놓습니다.

리소스 생성

Terraform plan / apply 를 통해서 리소스를 생성합니다.

Plan: xxx to add, 0 to change, 0 to destroy. 가 나오면 정상입니다.

이제, 생성을 진행합니다.

위의 예시처럼 output이 여러개 나오면 성공입니다. 콘솔에 가셔서 생성된 리소스를 한 번 확인해보시기 바랍니다.

Last updated

Was this helpful?