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 클러스터의 노드를 생성 및 관리
•
온디맨드 또는 스팟 용량 유형을 선택할 수 있음
클러스터 인증 관리
인증
•
EKS는 IAM을 사용하여 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)같은 매핑정보를 저장하는 구성 파일









