쿠버네티스를 이용하여 수동으로 컨트롤 플레인을 구성하는것은 막막 할 수 있습니다.
쿠버네티스 컨테이너를 보다 간편하게 실행 할 수 있도록 AWS에서 Amazon Elastic Kubernetes Service(Amazon EKS) 를 만들었습니다.
Amazon EKS는 AWS에서 쿠버네티스를 사용하여 컨테이너식 어플리케이션을 손쉽게 배포, 관리, 확장할 수 있는 관리형 쿠버네티스 컨트롤 플레인 서비스다.
즉 Amazon EKS를 통해서 컨트롤 플레인을 관리를 안전하고 간편하게 운영
할 수 있으며 컨트롤 플레인 요소 말고 작업노드의 요소 관리 또한 가능하다.
또한 다른 AWS 시스템을 쉽게 사용 할 수 있도록 도와준다 (IAM, VPC, ALB)
이를 통하여 사용자는 노드 컴포넌트부분 즉 Pod의 실행에 더 집중 할수 있다
즉 컨트롤플레인 영역은 AWS에서 별도로 관리 하고 있고, EKS에서 사용되는 작업 노드들의 kubelet 명령어를 통해서 컨트롤플레인의 API 서버와 통신을 주고 받는다.
IAM : 역할 기반 액세스 제어
VPC : pod 네트워킹 지원
ALB : 부하 분산을 위한 Application Load Balancer
기본적으로 사용자가 관리하면 되는 부분
Amazon EKS는 쿠버네티스를 좀 더 편리하게 사용할 수 있도록 도와주는 시스템이기 떄문에 사용하고 kubernetes API 와 Amazon EKS API를 각각의 역할에 맞춰서 사용하면서 운영을 하게 된다.
eksctl을 통해서 클러스터를 생성하면 기본적으로 제어 플레인 클러스터 및 노드에 사용할 새 VPC, 퍼블릭 서브넷 3개, 프라이빗 서브넷 3개가 생성된다, 원한다면 기존 VPC 및 서브넷을 사용하도록 지정할 수 있다.
eksctl create cluster 명령을 사용하면 ~/.kube/config에 구성 파일을 생성하며 생성된 kubeconfig에는 클러스터 이름, 인증방법 등 Amazon EKS 클러스터에 대한 세부 정보가 포함 되어있다
AWS EKS 는 컨트롤 플레인 외에 노드 컴포넌트 영역을 관리 할 수 도 있으며
이로 인하여 표준화를 유지할 수 있다. 어느 정도의 컨트롤을 AWS EKS에 맡길지는 사용자의 선택에 달려있다.
관리형 노드 그룹은 EC2 인스턴스 및 Auto Sacling 그룹과 같이 AWS계정에서 사용중인 모든 리소스를 계속 확인 할 수 있다. 이를 통해 더 적은 작업으로 제어, 보안, 가시성을 모두 확보 할 수 있으며 간단한 프로비저닝을 제공 한다.
단일 명령으로 배포시 Amazon EKS 최적화 AMI를 사용하여 노드를 생성.
AWS 서비스는 이를 여러 가용영역에 배포하고 Auto Scaling 그룹으로 지원 한다.
프로비저닝 : 사용자의 요구에 맞게 시스템 자원을 할당, 배치 , 배포해 두었다가 필요시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해두는 것
AMI : Amazon Machine Image 로 EC2인스턴스를 시작하기 위한 기본 셋팅 모음
AWS EKS가 노드 컴포넌트 부분을 완전히 관리
Fargate는 컨트롤 플레인 뿐만 아닌 전체 인프라를 관리함으로 사용자는 Pod 실행만 신경 쓰면된다.
노드 컴포넌트가 컨트롤 플레인 또는 기타 AWS 서비스에 안전하게 엑세스 하기 위해서 인증 및 권한 부여 설정이 필요하다.
인증
자격증명을 식별하는 작업으로 서비스 또는 사용자가 EKS 또는 쿠버네티스 리소스에 액세스하려는 경우 확인
권한부여
인증된 사용자가 할 수 있는 작업을 결정
kubectl 호출을 실행하면 IAM 자격증명이 호출과 함께 전달 된다, 이 정보를 쿠버네티스는 AWS IAM 으로 자격증명을 확인하며 해당 응답이 전달.
이후 RBAC 매핑을 확인 후 권한을 부여 한다.
RBAC : 역할 기반 액세스 제어로 특정 작업을 수행하는 것을 허용하여 지정된 ID 또는 주체가 갖는 권한을 정의하는 쿠버네티스 메서드