AWS

AWS ECR Multi-Architecture 이미지 관리하기

DevelopC 2023. 3. 29. 10:23
728x90

AWS ECR multi architecture 이미지 관리하기

Amazon Elastic Container Registry (AWS ECR)는 AWS에서 제공하는 컨테이너 이미지 저장소 서비스입니다. 멀티 아키텍처(Multi-Architecture)를 사용하면 다양한 CPU 아키텍처를 사용하는 시스템에서 동일한 컨테이너 이미지를 사용할 수 있습니다.

Multi-Architecture 이미지란?

Multi-Architecture 이미지는 여러 CPU 아키텍처에 대응하는 컨테이너 이미지를 포함하는 이미지입니다. 예를 들어, 동일한 애플리케이션에 대해 AMD64와 ARM64 아키텍처를 모두 지원하는 경우 하나의 이미지로 관리할 수 있습니다. 이렇게 하면 시스템 관리자와 개발자가 아키텍처별로 별도의 이미지를 유지 관리할 필요가 없어 관리가 용이해집니다.

AWS ECR Multi-Architecture 이미지 관리하기

Multi-Architecture 이미지를 빌드하려면 Docker Buildx를 사용해야 합니다. Docker Buildx는 Docker CLI의 플러그인으로서, 여러 아키텍처에 대한 이미지를 동시에 빌드할 수 있습니다. Dockerfile을 작성한 후 docker buildx build 명령어를 사용하여 다양한 아키텍처에 대한 이미지를 빌드할 수 있습니다.  예를 들어, 다음 명령어를 사용하여 AMD64와 ARM64 아키텍처를 지원하는 이미지를 빌드할 수 있습니다. 아래의 명령어는 AWS ECR로 이미지를 푸시하는 명령어도 포함하고 있으므로, 먼저 AWS CLI를 사용하여 인증을 설정해야 합니다. 이미지를 푸시하면 아키텍처별로 별도의 이미지 레이어가 저장되고 동일한 태그가 여러 아키텍처를 가리킵니다.

$ docker context create builder
$ docker buildx create --name multiarch-builder --driver docker-container --use builder
$ docker buildx build --platform linux/amd64,linux/arm64 -t ecr-repo/test:latest --push .

Kubernetes 클러스터에서 Multi-Architecture 이미지를 사용하는 경우, 클러스터의 노드에 따라 적절한 이미지가 자동으로 선택됩니다. 예를 들어, AMD64 아키텍처의 노드에서는 AMD64 이미지가 사용되고, ARM64 아키텍처의 노드에서는 ARM64 이미지가 사용됩니다. 아래의 예제처럼, Kubernetes manifest 파일에 이미지를 지정하기만 하면 됩니다.

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: ecr-repo/test:latest

 

AWS ECR Multi-Architecture 이미지를 사용하면 여러 아키텍처를 지원하는 애플리케이션을 효율적으로 관리할 수 있습니다. 이 기능은 클러스터에서 동일한 이미지를 사용하여 다양한 아키텍처를 지원하며, 이미지 관리와 배포를 간소화할 수 있습니다.

728x90