[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] ECS로 MSA인프라 구현하기
·
AWS/ECS, ECR
마이크로서비스 아키텍처의 깊이 있는 이해: AWS ECS를 활용한 심화 전략과 최적화 AWS ECS를 이용한 마이크로서비스 아키텍처의 성공적인 구현은 단순한 기술 구축을 넘어선다. 이번 포스트에서는 AWS ECS를 활용한 마이크로서비스 아키텍처의 심화된 전략과 최적화 방법을 탐색한다. 우리는 로드 밸런싱, 서비스 디스커버리, Auto Scaling 등과 같은 고급 기능을 살펴볼 것이며, 이러한 기능들이 실제 비즈니스 환경에서 어떻게 적용될 수 있는지를 보여주는 사례 연구를 통해 이해를 깊게 할 것이다. 1. 서비스 디스커버리와 네트워킹 전략 1-1. AWS Cloud Map을 사용한 서비스 디스커버리 AWS Cloud Map은 서비스 디스커버리를 위한 강력한 도구이다. 예를 들어, 여러 마이크로서비스가 ..
[AWS ECS] ECS로 MSA 구현하기
·
AWS/ECS, ECR
클라우드의 혁신: AWS ECS를 통한 MSA 구현과 관리 클라우드 컴퓨팅과 마이크로서비스 아키텍처는 현대의 소프트웨어 개발에서 중요한 트렌드가 되었다. 이러한 환경에서 AWS의 Elastic Container Service(ECS)는 마이크로서비스 아키텍처(MSA)를 구현하고 관리하는 데 강력한 도구로 자리 잡았다. 이번 포스트에서는 AWS ECS의 기본 개념을 탐구하고, 마이크로서비스 아키텍처를 효과적으로 구현하는 데 있어서 ECS가 어떤 역할을 하는지에 대해 살펴보도록 하자 이번 포스트를 통해 AWS ECS를 사용하여 마이크로서비스 아키텍처를 구축하는 방법의 기본을 이해하게 될 것이다. 이 글이 ECS를 사용하여 MSA를 구축하고자 하는 분들께 도움이 되었으면 좋겠다. 1. AWS ECS와 마이크로..
AWS Secrets & ECS SpringBoot 설정 (3-2): 성공적인 배포 완료
·
AWS/ECS, ECR
이번에는 ECS의 배포 오류(환경 변수 주입 오류)를 해결하는 과정을 설명한다. 이전에는 url, username, password라는 환경변수를 Secrets Manager에서 읽어오지 못하는 문제가 발생했었는데 이번에는 특정 키를 직접 찾아서 참조하는 방식에 대해서 알아본 후에 적용해서 오류를 해결했다. 1. Secrets Manager의 secret에서 특정 키만 참조하는 방식 설명 1-1. secret의 키 참조방식 조금 조사를 해본 결과 Secrets Manager에 만든 보안 암호(secret)의 특정 키를 참조하는 방법은 다음과 같다. ARN 뒤에 콜론(:)을 추가하고 키 이름을 명시해야 한다. 이후 맨 뒤에::을 붙여준다. 예시: arn:aws:secretsmanager:region:acc..
AWS Secrets & ECS SpringBoot 설정 (3-1): ECS배포와 오류 분석
·
AWS/ECS, ECR
지난번에는 ECS의 태스크 정의를 생성했다. 이번에는 이 태스크를 사용해서 ECS의 서비스를 만들어 보도록 하자 태스크의 컨테이너에는 내가 주입해 준 환경변수가 들어갈 테니 springboot는 이 내용을 db연결할 때 잘 가져다 사용할 것이다. 1. ECS 클러스터 업데이트하기 1-1. ECS 클러스터 업데이트 이제 방금 생성한 태스크 정의를 적용시켜 보도록 하자 ECS 클러스터로 들어온 다음 우측의 "서비스 업데이트"를 클릭한다. 1-2. 패밀리(태스크 정의) 변경하기 아래와 같이 "패밀리" 구성을 클릭해서 이전 포스트에서 만든 "태스크 정의"를 선택해 준다. 맨 하단으로 가서 "업데이트" 버튼을 클릭한다. 2. SpringBoot에서 application.yaml 설정하고 ECS 배포하기 2-1. ..
AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동
·
AWS/ECS, ECR
저번 포스트에서는 AWS의 Secret을 만들었으니 이번에는 이것을 ECS에 연결해 보도록 하는 작업을 진행할 텐데 IAM정책부터 ECS의 태스크 정의까지 해보도록 한다. 1. IAM 역할 설정하기 먼저, ECS 태스크가 Secrets Manager에 접근할 수 있도록 ecsTaskExecutionRole IAM 역할에 권한을 부여해야 한다. 이 역할은 ECS 태스크가 다른 AWS 서비스와 상호 작용할 때 필요한 권한을 제공하는 역할이다. 1-1. IAM 콘솔 접속 AWS 관리 콘솔에 로그인한 후, IAM 서비스 페이지로 이동한다. 1-2. 역할 선택 대시보드 페이지 좌측의 메뉴에서 '역할' 섹션을 클릭해서 들어간다. 아래와 같은 페이지가 나올 텐데 여기서 ecsTaskExecutionRole을 검색한다..
AWS Secrets & ECS SpringBoot 설정 (1): Secret 생성
·
AWS/ECS, ECR
이전 포스트에서는 로컬 환경에서 RDS를 SpringBoot 프로젝트와 연결하는 데 성공했다. 이번에는 AWS의 CodePipeline을 CI/CD구축을 해서 ECS로 배포에 성공한 SpringBoot 프로젝트의 tomcat에 이 RDS(postgreSQL)를 연결해 주도록 하자 이 포스트에서는 우선 Secret을 생성하는 방법에 대해서 소개한다. 1. AWS Secrets Manager를 사용하는 이유 1-1. Secrets Manager를 사용하는 이유 AWS Secrets Manager를 사용하는 이유는 보안 때문이다. 예를 들어, GitHub 같은 공개된 저장소에 데이터베이스 접속 정보나 API 키 같은 민감한 정보를 yml 파일에 그대로 넣어두면, 누구나 그 정보를 볼 수 있게 되고, 이는 심각..