쿠버네티스는 컨테이너 오케스트레이션 도구의 일종이다. 컨테이너 기술을 통해 애플리케이션의 실행 환경을 서버로부터 격리하여 환경 설정과 배포를 손쉽게 처리할 수 있다. 컨테이너 오케스트레이션은 이러한 컨테이너를 여러 개 가동할 때, 효과적으로 관리하는 작업을 이른다.
Amazon EKS는 AWS에서 제공하는 쿠버네티스 관리형 서비스이다. 오픈 소스로 제공되는 쿠버네티스 기능은 수정하지 않으면서, 쿠버네티스의 일부 복잡한 설정은 AWS에서 자동으로 관리함으로써 사용자는 쿠버네티스 운용 부담을 덜게 된다. 또한, AWS EC2나 AWS Fargate 같은 AWS의 클라우드 서비스와도 쉽게 연동하고 AWS IAM을 통해 권한을 관리하는 등 AWS 서비스로 확장하기 용이하다.
AWS에서는 EKS 워크샵을 통해 EKS에 대한 개념 설명과 실습 자료를 제공한다. 다만, 이 워크샵의 내용이 방대하고 쿠버네티스와 EKS 자체의 난이도가 높기 때문이 홀로 학습하기엔 어렵다. 이번 핸즈온에서는 AWS 직원으로부터 EKS의 개념에 관한 세션을 듣고, 직원 주도 하에 워크샵 실습을 함께 따라하는 시간을 가졌다. 세션과 실습의 조합으로 총 세 번의 강의을 진행했다. 그리고 처음과 마지막에 실습 없이 세션으로만 구성된 강의를 한 번 씩 들었다.
kubernetes-on-aws-workshop-session-1-container-sotu.pdf
AWS에서 제공하는 컨테이너 서비스에 대한 간략한 소개를 가졌다. 첫 번째 주제는 AWS ECS와 AWS EKS의 차이였다. 두 서비스 모두 컨테이너 오케스트레이션 도구에 해당한다. AWS ECS의 경우 단순함에 초점을 둔다. 여기서 단순함은 구축과 운영에 드는 시간 단축을 의미한다. 한편 AWS EKS는 유연성에 집중한다. 다양한 오픈 소스와 연동하여 고객마다 각자 사용하던 도구를 지원하는 장점을 강조한다. 다음 주제는 AWS EKS에 대한 대략적인 설명이다. EKS의 밑바탕인 쿠버네티스에 대한 이해가 약간 필요하다. 쿠버네티스가 실행되는 환경 일체를 클러스터라 한다. 쿠버네티스 클러스터는 크게 실제 애플리케이션이 구동되는 데이터 플레인과 데이터 플레인의 실행을 관리하는 컨트롤 플레인으로 구분된다. AWS EKS는 여기서 컨트롤 플레인을 대신 관리해줌으로써 고객이 관심을 끄도록 도와준다. 서버리스의 방식으로 이해할 수도 있다. 컨트롤 플레인은 클라우드 혹은 온프레미스 서버에서 실행된다. 만일 클라우드에서 EKS(의 데이터 플레인)을 실행한다면, AWS EC2와 AWS Fargate라는 두 옵션이 있다. AWS EC2는 우리가 일반적으로 사용하는 서버이고, AWS Fargate는 컨테이너를 서버리스 형태로 실행해주는 서비스이다. 즉, AWS Fargate를 채택하면 EKS의 컨트롤 플레인과 데이터 플레인 전부를 AWS가 대신 관리해준다. 이외 AWS 클라우드를 쓰지 않고 쿠버네티스 클러스터를 실행하는 EKS Distro나 EKS Anywhere도 있다.
kubernetes-on-aws-workshop-session-2-security.pdf
Intro to RBAC - EKSworkshop.com
Using IAM Groups to manage Kubernetes cluster access - EKSworkshop.com
IAM Roles for Service Accounts - EKSworkshop.com
인프라 구축 시 많이 간과하지만 가장 중요한 요소는 보안이다. 이번 시간에는 EKS를 통해 쿠버네티스의 권한 시스템과 AWS에서 제공하는 권한 시스템인 AWS IAM을 연동하여 쿠버네티스 클러스터 내 권한을 조정하는 방법을 배웠다.