AWS

Amazon ECR 와 EKS

박현국 2024. 10. 28. 00:44

 

ECR (Elastic Container Registry)
  • AWS 에 도커 이미지를 저장하고 관리하는데 사용된다.
  • Docker HUB 등의 온라인 저장소를 활용했는데, 이미지를 ECR 에도 저장할 수 있다.
  • ECR 에는 두가지 옵션이 있는데,
    1. 계정에 한해 이미지를 비공개로 저장한느 것
    2. 퍼블릭 저장소를 이용해 ECR Public Gallery 에 게시하는 방법
  • ECR 은 ECS 와 완전히 통합되어 있고, 이미지는 백그라운드에서 Amazon S3 에 저장된다.
  • ECR 저장소에 여러 도커 이미지가 있는데, ECS 클러스터의 EC2  인스턴스에 이미지를 끌어오기 위해서는 EC2 인스턴스에 IAM 역할을 지정하면 된다. IAM 역할이 도커 이미지를 인스턴스에 끌어올 것인데, ECR 에 대한 모든 접근은 IAM 이 보호하고 있으며, ECR 에 권한 에러가 생긴다면 정책을 살펴봐야 할 것이다.
  • EC2 인스턴스에 이미지를 끌어온 후에는 컨테이너가 시작되며, ECS 와 ECR 이 이런 식으로 함께 작동한다.
  • ECR 은 단순히 저장하는 리포지토리에 그치지 않고, 이미지의 취약점 스캐닝, 버저닝 태그 및 수명 주기 확인을 지원한다.
  • 정리하자면, 도커 이미지를 저장 때는 ECR 을 기억하고 사용해야한다.

 

 

 

 

EKS (Elastic Kubernetes Service)
  • EKS 를 활용하여 AWS 에 컨테이너를 실행하게 되면, Kubernetes 클러스터를 실행할 수 있는 서비스이다.
  • Kubernetes 는 오픈 소스 시스템으로 Docker 로 컨테이너화한 애플리케이션의 자동 배포, 확장, 관리를 지원한다.
  • 컨테이너를 실행한다는 목적은 ECS 와 비슷하지만, 사용하는 API 가 다르다.
  • ECS 는 오픈 소스가 아닌 반면 Kubernetes 는 오픈 소스이고 여러 클라우드 제공자가 사용하므로, 표준화를 기대할 수 있다. EKS 에는 두 가지 실행 모드가 있는데, 
    1. EC2 시작 모드는 EC2 인스턴스에서처럼 작업자 모드를 배포할 때 사용.
    2. Fargate 모드는 EKS 클러스터에서 서버리스 컨테이너를 배포할 때 사용.
  • EKS 의 사용 사례
    • 회사가 온프레미스나 클라우드에서 Kubernetes 나 Kubernetes API 를 사용 중일 때, Kubernetes 클러스터를 관리하기 위해, EKS 를 사용한다.
  • Kubernetes 는 cloud-agonstic 으로 Azure, Google Cloud 등 모든 클라우드에서 지원된다.
  • 따라서 클라우드 또는 컨테이너 간 마이그레이션을 실행하는 경우 EKS 가 간단한 솔루션이 될 수 있다.
  • 도표로 살펴보기
    • VPC 와 세 AZ 가 있고, 각 AZ 는 퍼블릭 및 프라이빗 서브넷으로 나뉜다. EKS  작업자 노드를 생성하면 EC2 인스턴스가 구성될 것 이며, 각 노드는 EKS 포드를 실행한다. ( ECS 태스크와 유사하다. -> 이름에서 EKS Pods 를 발견하면, Amazon Kubernetes 와 관련된 거라고 생각하면 된다.)
    • EKS 포드가 실행되는 EKS 노드는 ASG 로 관리할 수 있다.
    • ECS 와 유사하게 EKS 서비스나 Kubernetes 서비스를 노출할 때는, Private Load Balancer 나 Public Load Balancer 를 설정해 휍에 연결해야한다.

 

EKS 의 노드 유형

1. 관리형 노드 그룹 (Managed Node Groups) : AWS 로 노드 즉, EC2 인스턴스를 생성하고 관리하며, 노드는 EKS 서비스로 관리되는 ASG 의 일부이다. -> 온디맨드, 스팟 인스턴스를 지원

2. 자체 관리형 노드 (Self-Managed Nodes) : 사용자 지정 사항이 많고 제어 대상이 많은 경우 직접 노드를 생성하고, EKS 클러스터에 등록한 다음 ASG 의 일부로 관리해야한다. -> 사전 빌드된 AMI인 Amazon EKS 최적화 AMI 를 사용하면 시간을 절약할 수 있다.

3. Fargate : 노드를 원치 않는 경우에 사용하며, 유지 관리 및 노드를 관리할 필요가 없이 EKS 에서 컨테이너만 실행하면 된다.

 

 

EKS 클러스터에 Data Volumes 연결

  • EKS 클러스터에 StorageClass manifast 를 지정해야한다. 
  • Container Storage Interface (CSI) 라는 규격 드라이브를 활용한다.
  • EFS, FSx for Lustre, FSx for NetApp ONTAP 을 지원

'AWS' 카테고리의 다른 글

AWS DynamoDB  (0) 2024.10.29
Amazon Lambda  (1) 2024.10.28
Amazon ECS  (0) 2024.10.26
AWS MQ  (0) 2024.10.25
AWS Kinesis 란?  (0) 2024.10.25