Search

[테라폼으로] 멀티클라우드 구축해보기

PublishDate
2021/02/04
Category
멀티클라우드
Terraform
Tag & Keyword
멀티클라우드
AWS
GCP
Azure
준비물 : 1. 자신 소유의 도메인 2. AWS, Azure, GCP 계정 3. 테라폼 사용가능한 WSL2 (EC2같은 다른 리눅스도 가능하다. Ubuntu 18.04 or 20.04 추천)

멀티 클라우드

멀티 클라우드는 2개 이상의 클라우드 플랫폼에서 하나의 서비스를 운영하는 것
한가지 플랫폼에 Lock-In 되는 것을 방지할 수 있다.
여러 플랫폼의 경쟁력있는 서비스를 골라서 사용할 수 있다.
정말 만약의 사태에 한쪽 클라우드 플랫폼 전체적인 장애 발생시 더 높은 가용성을 제공할 수 있다.

시작 전

AWS는 많이 사용해보았지만 Azure와 Gcp는 이번이 처음 사용이다.
개인 도메인이 없다면 Freenom [프리놈]과같은 사이트 통해 무료로 도메인을 대여할 수 있다고 한다.
GCP 회원가입 안 넘어가질 때
시행착오 : 이번 실습을 진행하면서 겪은 시행착오와 해결방법등을 적어두었다. 본문 내용들은 해결이 완료된 후 수정된 내용들이다.
간단한 멀티클라우드 아키텍처 - 사용자는 도메인에 접속하면 Cloudflare가 각 플랫폼의 인스턴스로 연결 해 준다.

Terraform 환경

작업 디렉터리 : WSL2 내부의 /web_infra/.
Terraform 버전 : v0.13.0 (0.14.5 버전은 실습 에러남) → terraform 0.13upgrade .명령으로 업그레이드
Terraform 버전 변경 : tfswitch 프로그램 사용
버전 변경 안될 때

Cloudflare 가입 및 도메인 추가

1. Cloudflare 가입하기
2. 구매한 도메인의 NS 변경 (가비아 기준)
3. 도메인 - Cloudflare 연결 (레코드 추가)
4. Page Rule 설정을 통한 실제 페이지에 연결
5. API Keys - Cloudflare

AWS에 WEB배포 (Terraform)

1. 공통 변수에 대한 파일 생성 (common-variables.tf)
2. AWS 변수 선언 및 설정값 추가 (aws-variables.tf)
3. AWS 인증정보 파일 생성 (terraform.tfvars)
4. EC2에 Apache 설치 및 index.html 구성을 위한 파일 생성 (aws-user-data.sh)
5. VPC, 네트워크, EC2 및 보안그룹 구성 파일 생성 (aws-main.tf)
AWS Terraform 배포 확인됨

Azure에 WEB배포 (Terraform)

1. Azure CLI 환경 구성
2. Azure 변수 선언 및 설정값 추가 (azure-variables.tf)
3. VM에 Apache 설치 및 index.html 구성을 위한 파일 생성 (azure-user-data.sh)
4. Virtual Network, Azure 네트워크, VM 및 보안그룹 구성 (azure-main.tf)

GCP에 WEB배포 (Terraform)

1. GCP 변수 선언 및 설정값 추가 (gcp-variables.tf)
2. GCP 인증정보 발급
3. GCP 인증정보 파일 생성 (terraform.tfvars)
4. Compute Engine에 Apache 설치 및 index.html 구성을 위한 파일 생성 (gcp-user-data.sh)
5. VPC, GCP 네트워크, Compute Engine 및 보안그룹 구성 (gcp-main.tf)

Cloudflare

1. Cloudflare 자격 증명 정보 추가 (terraform.tfvars)
2. Provider를 초기화하고 www 및 Root DNS 레코드를 생성 (cloudflare-dns.tf)

실행 & 결과

terraform init명령 실행
terraform plan으로 확인 후 terraform apply로 프로비저닝
프로비저닝 및 확인
리소스 삭제

결론

AWS, Azure, GCP를 통해 웹서버 인스턴스의 멀티클라우드 실습을 성공적으로 마쳤다. 단순하게 서버의 인스턴스를 멀티클라우딩하여 가용성을 극대화하는 것을 넘어, 인프라와 플랫폼을 나누거나 플랫폼마다 제공하는 다양한 강력한 서비스를 섞어서 사용하는 것에 멀티클라우딩의 목적이 있을 것 같다.
또한 대부분의 기업의 최종 목표가 멀티클라우드 환경이라고는 하지만 모든 전략에 장단점이 있듯이 어려운 설계 및 관리를 비롯한 단점 또한 있을것이다.