실전! 테라폼 적용기 [추가설명] - dynamic 블록 사용하기
·
DevOps/테라폼(Terraform)
다이나믹 블록은 설정이 복잡하거나 조건에 따라 변할 수 있는 리소스 속성을 효율적으로 관리하기 위해 사용된다. 📌 서론 우리 팀은 프로젝트에서 3개의 ECS 클러스터를 사용하고 각각 1개씩 ECS서비스를 운영하고 있다. 이 중 2개는 오토 스케일링 그룹(ASG)을 사용하는 반면, 나머지 하나는 ASG를 사용하지 않고 있다. 이런 다양한 설정을 테라폼 코드로 표현하고 싶었는데, 굳이 두 가지 다른 ECS 서비스 모듈을 만들고 싶지는 않았다. 이런 상황에서 테라폼의 유연성을 최대한 활용할 방법이 무엇일까 고민하던 중, 테라폼의 'dynamic 블록'이라는 기능을 발견했다. 이 기능을 사용하면 하나의 모듈 안에서도 조건에 따라 다른 설정을 동적으로 적용할 수 있게 된다. 예를 들어, ASG를 사용하는 경우와 ..
[AWS ECR] Docker Buildx로 ARM 전용 Docker 이미지 빌드하기
·
AWS/ECS, ECR
이번 포스트에서는 ECR에 arm전용 Docker이미지를 푸시하는 과정을 설명한다. AWS에서 ECS를 사용할 때, 때때로 ARM 아키텍처 기반의 EC2 인스턴스에 맞는 Docker 이미지를 ECR에 올려야 할 상황이 생길 수 있다. 예를 들어 나는 ECS클러스터를 만들 때 기존에는 x86 아키텍처 기반이었던 t3.small을 사용하다 이번에 사양을 올리기 위해 arm아키텍처 기반의 t4g.medium으로 업그레이드하게 되었다. 이때 ECS를 기동 하니 아키텍처 관련 이미지 실행 오류가 발생했다. 이렇게 아키텍처가 변경된 상황에서 빌드한 Docker이미지와 관련해서 발생할 수 있는 문제들과 이를 해결하기 위해 Docker Buildx를 사용하는 방법에 대해 설명하겠다. 이 글은 기존에 CodeBuild ..
[AWS ECR] Docker Buildx로 ARM 이미지 빌드 및 푸시 (x86 기준)
·
AWS/ECS, ECR
x86 환경에서 Docker Buildx를 사용하여 이미지를 ARM용으로 빌드해서 ECR에 푸시해 보자 이전에 분명 m1의 docker 빌드 후 배포 시 format 문제로 글을 올린 적이 있었다. 그때는 format 오류가 발생한 이유는 내 로컬 PC가 m1맥북이고 EC2가 x86을 사용하는 t3.small 인스턴스였기 때문이었는데 이런 경우에는 당연히 로컬에서 빌드하면 arm용 이미지로 빌드되었기 때문에 배포하면 아키텍처가 다르다고 나왔다. 지금은 반대의 상황일 때의 해결방법이다. 만약 내 pc가 x86 아키텍처이고 ECS의 인스턴스가 arm이라면 어떻게 해야 할까? 이것에 대해 설명하도록 하겠다. 이 내용은 다음 편에 작성될 CodeBuild에서 arm 이미지를 빌드하는 과정에서 배우게 된 내용이니..
AWS EC2를 사용하는 ECS 클러스터 생성 및 사용
·
AWS/ECS, ECR
이번 포스트에서는 ECS 클러스터, ECS 서비스, ECS 태스크 정의를 생성하고 사용해 보자 ECS 클러스터에 대해서 설명하자면 ECS클러스터는 그 자체로는 아무런 역할을 하지 못한다. 클러스터 내부에 EC2가 생성되어야 비로소 클러스터의 역할을 하게 되는 것이다. 이를 위해 ECS클러스터 생성을 할때는 EC2생성을 동시에 설정하게 된다. 그리고 ECS 클러스터 내부에는 ECS서비스 생성해서 기동시켜줘야하는데 이 서비스는 ECS 태스크를 관리해주는 서비스다. 즉, 세팅 순서는 ECS 클러스터 -> 태스크 정의 -> 서비스 생성이다. 1. ECS 클러스터 생성하기 1-1. 클러스터 생성 ECS 메뉴 우측의 "클러스터 생성" 버튼을 클릭한다. 1-2. 클러스터 구성 작성 여기서는 클러스터 이름과 기본 네임..