Search

EKS (Elastic Kubernetes Service)

EKS
Kubernetes 컨트롤 플레인을 구성하거나 유지할 필요없이 AWS에서 Kubernetes를 쉽게 실행할 수 있는 관리형 서비스
Architecture
AWS가 Master Node를 관리하고 사용자는 Worker Node를 관리
AWS의 영역은 확인 불가능
Control Plane
Control Plane은 매우 중요하므로 최소 3개의 가용영역을 사용해 고 가용성의 싱글테넌트 아키텍처를 소유
Control Plane을 구성하는 모든 요소들은 AWS 서비스들로 구성되어있음

장점

장점
Control Plane 관리의 부담이 없음
HA 구현, EC2 운영 등…
이슈 발생시 support가 존재
Managed Node Group 있음
AWS의 다양한 스토리지 서비스를 쉽게 마운트하고 사용 가능
VPC CNI 자동 제공
Max Pods 개수가 ENI * (ENI 당 지원하는 IPv4 개수 - 1) + 2 라는 단점이 존재

단점

단점
보안 요구사항
커스터 마이징의 여지가 사라짐
워크로드 요구사항

배포 옵션

EKS
자체 Kubernetes Control Plane 또는 Node를 설치, 운영 및 유지 관리할 필요 없이 AWS에서 관리하는 AWS 클라우드에 Kubernetes Cluster를 배포하는 옵션
EKS Anywhere
온프레미스에서 Kubernetes Cluster를 생성하고 운영할 수 있게 해주는 배포 옵션

노드 유형

EKS Managed Node Groups
EKS에서 자동으로 EKS 클러스터의 노드를 생성 및 관리
사용자가 보안 및 업데이트 등의 일부분을 설정 및 관리 가능
모든 관리형 노드는 EKS에서 관리하는 EC2 Auto Scaling 그룹의 일부로 프로비저닝됨
관리형 노드 그룹을 생성할 때 온디맨드 또는 스팟 용량 유형을 선택할 수 있음
Fargate
노드 관리를 AWS에서 담당
AWS에서 EKS의 모든 환경을 자동으로 관리
Self Managed Nodes
사용자가 직접 EKS 클러스터의 노드를 생성 및 관리
온디맨드 또는 스팟 용량 유형을 선택할 수 있음

클러스터 인증 관리

인증
EKSIAM을 사용하여 Kubernetes 클러스터에 인증을 제공 (aws-iam-authenticator의 aws eks get-token 명령)
유효한 IAM 엔티티(IAM user/role)의 인증에만 사용
인가
EKS 클러스터의 Kubernetes API와의 상호 작용에 대한 모든 권한은 기본
Kubernetes RBAC 시스템을 통해 관리
kubernetes 리소스에 대한 사용 권한의 집합인 Role에 특정 IAM 사용자나 역할을 매핑

Kubernetes RBAC

RBAC (Role Base Access Control)
역할 정의를 기반으로 접근제어를 하는 매커니즘
Role
Kubernetes 리소스에 대한 사용권한을 정의하는 리소스
RoleBinding
해당 Role을 특정 사용자에게 매핑 시켜주는 것

클러스터 인증 및 인가 과정

인증 및 인가 과정

aws-auth

aws-auth
apiVersion: data: mapRoles: - rolearn: arn:aws:iam::111111111111:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes mapUsers: - userarn: arn:aws:iam::111111111111:user/admin username: admin groups: - system:masters - userarn: arn:aws:iam::111111111111:user/test1 username: test1 groups: - pod-admin
YAML
복사
ConfigMap이기에 YAML 형태
EKS에 접근하는 IAM 엔티티(IAM user/role)같은 매핑정보를 저장하는 구성 파일