실전! 테라폼 적용기4편 - ECS 클러스터, 서비스 ,태스크 구성하기
·
AWS/테라폼(Terraform)
이번 포스트에서는 ECS를 실행시키기 위해 필요한 (cluster, service, task)를 구성해 보자 📌 서론 2편에서 vpc, subnet을 생성했고 3편에서는 그 안에서 사용되는 Auto Scaling Group과 용량 공급자를 모듈로 구성하고 연결했다. 이번에는 ECS 클러스터를 모듈화 하고 클러스터 내에서 운영될 ECS 서비스와 이 서비스가 사용할 ECS 태스크들도 모듈화 하여 ecs 클러스터 구성을 완료시켜 보자 이번 포스트부터는 서브모듈의 폴더 구조 설명은 생략하도록 하겠다. (서브모듈 폴더의 구성은 이전 포스트에 작성되어 있다.) 이전 포스트의 게시글을 읽고 와야 내용이 이어지니 보고 오시는 것을 추천합니다! 실전! 테라폼 적용기3편 - Auto Scaling Group과 용량 공급자..
실전! 테라폼 적용기 [추가설명] - dynamic 블록 사용하기
·
AWS/테라폼(Terraform)
다이나믹 블록은 설정이 복잡하거나 조건에 따라 변할 수 있는 리소스 속성을 효율적으로 관리하기 위해 사용된다. 📌 서론 우리 팀은 프로젝트에서 3개의 ECS 클러스터를 사용하고 각각 1개씩 ECS서비스를 운영하고 있다. 이 중 2개는 오토 스케일링 그룹(ASG)을 사용하는 반면, 나머지 하나는 ASG를 사용하지 않고 있다. 이런 다양한 설정을 테라폼 코드로 표현하고 싶었는데, 굳이 두 가지 다른 ECS 서비스 모듈을 만들고 싶지는 않았다. 이런 상황에서 테라폼의 유연성을 최대한 활용할 방법이 무엇일까 고민하던 중, 테라폼의 'dynamic 블록'이라는 기능을 발견했다. 이 기능을 사용하면 하나의 모듈 안에서도 조건에 따라 다른 설정을 동적으로 적용할 수 있게 된다. 예를 들어, ASG를 사용하는 경우와 ..
실전! 테라폼 적용기3편 - Auto Scaling Group과 용량 공급자(Capacity provider) 작성
·
AWS/테라폼(Terraform)
이번에는 Auto Scaling Group과 Capacity Provider를 테라폼 모듈로 생성하자 📌 서론 이전 포스트에서 vpc와 subnet을 설정했고 EC2 런치 템플릿을 모듈로 생성했다. 이렇게 생성한 EC2 런치 템플릿은 ASG에 의해 사용되어 인스턴스의 생성을 관리해 주고, 용량 공급자(Capacity Provider)는 ASG와 연결되어 인스턴스의 스케일링을 관리하는 데 도움을 준다. ASG는 EC2 런치 템플릿을 바탕으로 EC2 인스턴스의 생성 및 관리를 담당하며, 용량 공급자는 이런 ASG를 활용해 ECS 환경에서의 자동 스케일링을 조절한다. 이렇게 설정된 ASG는 ECS 클러스터와 연결되어, ECS에서 실행되는 컨테이너들이 적절한 자원을 가진 인스턴스에서 실행될 수 있도록 해준다. ..
실전! 테라폼 정복기 2편 - vpc, subnet 설정과 인프라 구축
·
AWS/테라폼(Terraform)
지금부터 실제 사이드 프로젝트에 적용시킨 테라폼 코드를 알아보자 📌 서론 테라폼을 실전에 적용하면서 많은 것을 배웠지만 주로 한국보다는 외국 블로그나 커뮤니티에 필요했던 자료가 존재했던 것 같다. 나와 같은 주니어들이 테라폼을 사용하고 싶을 때 이 글을 보고 따라 할 수 있었으면 좋겠다는 마음에 이 글을 추가적으로 작성한다. 지금부터 알아볼 테라폼 코드는 아래의 MSA 프로젝트에서 사용된 인프라를 기반으로 진행된다. Spring Boot MSA 환경에서 트랜잭션을 관리하며 스프링 이벤트/SNS/SQS를 사용하여 DB 정합성 보장하기1 나는 MSA 프로젝트에서 DB 정합성 보장을 위해 Spring Event를 다음과 같이 사용했다. 잠시 이전 글의 서론을 다시 가져왔다. 한번 읽어보자 내가 구성한 MSA ..
실전! 테라폼 정복기 1편 - 테라폼(Terraform) 모듈화
·
AWS/테라폼(Terraform)
이번 포스트에서는 테라폼의 가장 중요한 설계방법인 모듈화를 알아보자 📌 서론 내가 처음 테라폼 코드를 작성할 때는 module의 존재는 알았지만 도대체 이게 어떻게 사용되는 건지 모르겠어서 module을 사용하지 않고 하나의 tf 파일에 모든 리소스에 대한 코드를 전부 다 적었었다. 이렇게 하나의 tf 파일에 모든 리소스가 모이다 보니 리소스 수정을 하고싶을때 코드를 읽고 찾는 것이 너무 힘들었다. 그래서 조금이라도 가독성을 좋게 만들기 위해 여러 검색을 하던 도중 외국계 기술 블로거의 글을 보던 도중 테라폼 코드를 읽기 좋게 작성하려면 모듈화를 사용하라고 적혀있었고 이에 바로 모듈화를 적용시켜 보았다. 1. 테라폼의 모듈화란 무엇인가? 1-1. 테라폼의 모듈화란? 테라폼 모듈화(Modularizatio..
테라폼(Terraform) 사용 가이드 7: AutoScailingGroup과 LoadBalancer을 생성하고 연결하기
·
AWS/테라폼(Terraform)
이번 포스트에서는 테라폼으로 AutoScailing을 적용시켜 보자 📌 서론 Auto Scailing Group을 테라폼으로 사용하려면 어떻게 해야 할까? 이번 포스트를 통해 테라폼으로 ASG를 생성하고 로드 밸런서까지 연결시켜 보자 1. Auto Scailing Group이란? AWS Auto Scaling Group의 개념 AWS Auto Scaling Group (ASG)은 AWS 클라우드 환경에서 중요한 역할을 하는 서비스다. ASG를 이용하면 동일한 설정을 가진 EC2 인스턴스들을 그룹으로 묶어, 이들의 숫자를 자동으로 조절할 수 있다. 이는 애플리케이션의 부하에 따라 필요한 컴퓨팅 리소스를 유연하게 관리하는 데 도움을 준다. ASG의 작동 원리 ASG는 미리 정의된 조건에 따라 EC2 인스턴스..
테라폼(Terraform) 사용 가이드 6: 테라폼으로 IAM 정책 생성/관리하기
·
AWS/테라폼(Terraform)
이번 포스트는 테라폼으로 IAM정책 및 리소스를 관리하는 방법이다. 📌 서론 AWS EC2 인스턴스 생성과 함께 관련된 IAM 사용자 및 S3 버킷을 만들어보는 내용이며 S3 버킷에 대한 액세스를 허용하는 IAM 정책을 생성하고, 해당 정책을 새 IAM 사용자에게 연결하는 과정을 설명하도록 하겠다. 1. IAM 정책 리소스 검토 IAM 정책 리소스 코드 분석 아래의 코드는 Terraform을 사용하여 IAM 정책을 정의한다. 이 코드는 S3 버킷에 대한 권한을 정의하고 있다. resource "aws_iam_policy" "policy" { name = "${random_pet.pet_name.id}-policy" description = "My test policy" policy =
테라폼(Terraform) 사용 가이드 5: variable/output(입출력 변수) 사용하기
·
AWS/테라폼(Terraform)
테라폼의 변수(variable)와 출력(output)을 사용하여 유연하게 인프라를 관리해 보자 📌 서론 저번 포스트에서 EC2 삭제까지 마무리했다. 이번 포스트에서는 아직 설명하지 않은 테라폼 파일 모듈화를 하기 위해서는 꼭 알아야 하는 variable과 output에 대해서 알아보자 이 포스트는 이전 포스트에서 EC2를 생성했던 코드(main.tf)를 그대로 사용하기에 하단의 포스트를 읽어보고 오는 것을 추천한다. 테라폼(Terraform) 사용 가이드 3: EC2 생성하기 MacOS에서 테라폼을 사용하여 EC2 인스턴스를 생성해 보자 📌 Terraform 사용을 위한 전제조건 1. Terraform CLI (1.2.0 이상)가 설치되어 있어야 한다. 2. AWS CLI가 설치되어 있어야 한다. 3. ..