개발자의 스터디 노트
Amazon EKS가 무엇인가요? 본문
Amazon EKS(Elastic Kubernetres Service)는 쿠버네티스를 제어하는 컨트롤 플레인을 제공하는 관리형 서비스입니다.
1. EKS는 머가 좋을까요?
쿠버네티스 도입을 검토할 때 가증 큰 장벽은 '컨트롤 플레인의 유지 및 운영'입니다. 쿠버네티스에서 여러 컴포넌트들이 서로 독립적이고 비동기로 동작하며 전체를 구성합니다. 그래서 각각의 구성요소를 정상적으로 동작시키기 위한 설정이나 유지, 운영 장애가 발생했을 때의 복구방법 등은 결코 간단하다고 말할 수 없습니다. EKS의 경우 이런 유지, 운영을 AWS에서 대신해줍니다.
2. EKS의 특징
- EKS는 쿠버네티스와 완전한 호환성을 갖고 있습니다. 다시 말해 이미 구축된 쿠버네티스 클러스터에서 동작하는 애플리케이션을 수정하지 않고 동작시킬 수 있습니다. 또한 AWS의 각종 서비스와 통합되고 있어 AWS의 다른 서비스들과 연결하거나 기존 구조와 같은 환경으로 이용할 수 있습니다.
- VPC와 통합
일반적으로 쿠버네티스 클러스터에서는 파드 네트워크로 데이터 플레인의 네트워크와는 다른 자체 네트워크 체계를 배치합니다. 그래서 클러스터 외부에서 파드에 명시적으로 엔드포인트를 생성하지 않으면 통신이 불가능합니다. EKS에서는 Amazon VPC(Amazon Virtual Private Cloud) 통합 네트워킹을 지원하고 있어 파드에서 VPC 내부 주소 대역을 사용할 수 있고 클러스터 외부와의 통신을 심리스(Seamless)하게 구현할 수 있습니다.
- IAM을 통한 인증과 인가
쿠버네티스 클러스터는 kubectl이라는 명령줄 도구를 사용하여 조작합니다. 이때 해당 조작이 허가된 사용자에 의한 것임을 올바르게 인증(authentication) 해야 합니다. 또 인증된 사용자에게 어떤 조작을 허가할지에 대한 인가(authorization) 구조도 필요합니다.
AWS 사용자라면 어떠 시스템을 구축할 경우 분명 IAM(AWS Identity and Access Management)을 사용하고 있을 것입니다. 그렇다면 여기서 관리하는 IAM사용자나 IAM역할을 사용해 쿠버네티스 클러스터의 인증 및 인가를 할 수 있다면 편리할 것입니다. EKS에서는 IAM과 연결한 인증 및 인가 구조를 제공합니다.
- ELB와의 연계
쿠버네티스 클러스터 외부에서 접속할 때는 서비스를 사용해 엔드포인트를 생성할 필요가 있습니다. 가장 전형적인 엔드포인트가 로드밸런서입니다. EKS에서는 쿠버네티스의 서비스 타입 중 하나인 LoadBalancer를 설정하면 자동적으로 AWS의 로드밸런서 서비스인 ELB(Elastic Load Balancing)가 생성됩니다. 이것으로 HTTPS나 경로 기반 라이퉁 등의 L7 로드밸런서 기능을 AWS 서비스로 구현할 수 있습니다.
- 데이터 플레인 선택
쿠버네티스는 컨트롤 플레인과 데이터 플레인으로 구성됩니다. 컨트롤 플레인은 EKS에서 관리형 서비스로 제공되고 있습니다.
EKS 서비스 제공 초기에는 AWS가 자동화된 구축 방식으로 데이터 플레인을 제공했고 EKS와는 별도로 EC2를 관리해야 했습니다. 그러나 시간이 지나면서 AWS가 발전해 데이터 플레인 관리를 도와주는 기능이 제공되었습니다. EKS 클러스터의 유지 관리나 버전을 업그레이드할 때 필요한 가상 머신 설정을 쉽게 해주는 관리형 노드 그룹 구조와 처음부터 가상 머신을 의식하지 않고 파드를 배포할 수 있는 파게이트(Fargate)라는 서비스가 여기에 속합니다.
그런데 관리형 노드 그룹에서는 AWS에서 제공한 것만 기본 이미지로 사용할 수 있었습니다. 즉, 회사의 표준 보안 소프트웨어를 설치하거나 노드에 다른 도구를 설치한 사용자 컨테이너 이미지 사용 등이 불가능했습니다. 이러한 문제를 해결하고자 2020년 8월 노드 그룹에서 사용자 설정 컨테이너 이미지를 지원하는 기능이 출시되어 사용자가 설정한 컨테이너 이미지로 노드를 생성할 수 있게 되었습니다. 참고로 파게이트는 데이터 플레인 관리가 필요 없는 만큼 파드가 배포되는 호스트에 사용자 접근도 제한되며 거기에 따른 제약도 있습니다.
'클라우드' 카테고리의 다른 글
Docker 명령어 정리 (0) | 2022.07.18 |
---|---|
EKS 구축에 사용하는 도구 (0) | 2022.04.30 |
AWS 서비스 용어 (0) | 2022.04.29 |
컨테이너, 도커, 쿠버네티스 (0) | 2022.04.27 |