CloudNet@ 팀의 가시다님께서 Leading 하시는 AEWS Study 1주차 도전과제 정리
이번 글에서는 EKS 의 API Endpoint 에 대해 알아보겠습니다.
1. EKS API Server Endpoint 개요
EKS Control Plane 의 API Server 에 접근할 수 있는 진입점
- 쉽게 말해 Amazon EKS 와 통신할 수 있는 방법을 말합니다.
EKS 의 API Server와 통신하는 주체는 크게 2가지로 나뉠 수 있습니다.
- 사용자(User)가 EKS 에 명령(kubectl)하기 위해 통신
- Worker Node(Data Plane)이 Control Plane 과 통신
- EKS API Endpoint 구성은 통신 주체에 따라 다음의 3가지로 구성될 수 있습니다.
EKS API Endpoint 구성
- Public ( User & Node : Public 통신 )
- Public + Private ( User : Public 통신 + Node : Private 통신 )
- Private ( User & Node : Private 통신 )
그럼 그 구성을 하나씩 살펴 보도록 하겠습니다.
1.1. EKS 배포
- EKS는 eksctl 을 사용하여 배포하였습니다.
2. Public Endpoint
- Public Endpoint Architecture
EKS 를 Public 으로 구성할 시, EKS 콘솔에서 다음과 같은 화면을 확인할 수 있습니다.
2.1. EKS Endpoint 확인 (User)
a. 사용자가 kubectl 명령어를 통해 통신하는 EKS API 엔드포인트의 주소를 확인해봅니다.
b. 해당 URL 을 브라우저에 입력하면 다음과 같은 화면을 확인할 수 있습니다.
c. 해당 엔드포인트의 IP 를 확인해봅시다.
해당 Endpoint 는 공인 IP 로 구성되어 있는 것을 확인할 수 있습니다.
2.2. EKS Endpoint 확인 (Worker Node)
- Worker Node 에서 EKS API Server 를 호출할 때 사용하는 IP를 확인해보겠습니다.
a. 우선 Worker Node 에 SSH 접속을 시도합니다.
b. 해당 Worker Node 에서 소켓 정보를 확인해봅니다.
Worker Node 또한, 공인 IP 를 통해 EKS API Server 와 통신하고 있음을 알 수 있습니다.
3. Public + Private Endpoint
a. Private Endpoint 활성화를 위해 cluster.yaml 파일을 수정합니다.
EKS 를 Public + Private 으로 구성할 시, EKS 콘솔에서 다음과 같은 화면을 확인할 수 있습니다.
3.1. EKS Endpoint 확인 (User)
a. 사용자가 kubectl 명령어를 통해 통신하는 EKS API 엔드포인트의 주소를 확인해봅니다.
- 웹 브라우저에서는 그대로 정보가 표출되는 것을 확인할 수 있습니다.
b. 내 컴퓨터에서 EKS Endpoint 확인
3.2. EKS Endpoint 확인 (Worker Node)
- Worker Node 에서 EKS API Server 를 호출할 때 사용하는 IP를 확인해보겠습니다.
a. Bastion 에서 EKS Endpoint IP를 확인해봅니다.
b. Worker Node 에서 소켓 정보를 확인해봅니다.
VPC 내부에서 EKS Endpoint 를 호출했을 때는 Private IP 를 사용하는 것을 알 수 있습니다.
4. Full Private Endpoint
a. Private Endpoint 활성화를 위해 cluster.yaml 파일을 수정합니다.
EKS 를 Private 으로 구성할 시, EKS 콘솔에서 다음과 같은 화면을 확인할 수 있습니다.
4.1. EKS Endpoint 확인 (User)
a. 사용자가 kubectl 명령어를 통해 통신하는 EKS API 엔드포인트의 주소를 확인해봅니다.
b. 내 컴퓨터에서 EKS Endpoint 확인
Endpoint 의 IP 가 사설 IP 로 변경된 것을 알 수 있습니다.
c. Bastion Host 에서 EKS Endpoint 확인
4.2. EKS Endpoint 확인 (Worker Node)
- Worker Node 에서 EKS API Server 를 호출할 때 사용하는 IP를 확인해보겠습니다.
a. Worker Node 에서 소켓 정보를 확인해봅니다.
모두 Private IP 를 바라보고 있는 것을 알 수 있습니다.
Endpoint 업데이트 후 kubelet & kube-proxy 가 Public Endpoint 를 바라보고 있을 때는,
서비스를 재시작해주면 Private 으로 바라보게 됩니다.
이번 글에서는 EKS API Endpoint 에 대해 알아보았습니다.
되도록이면 Public 만 사용하는 것을 지양하고, Private 을 사용하는 것이 좋겠습니다.
불가피하게 Public 을 사용할 경우, Access Control 을 통해 접근할 수 있는 IP를 관리하는 것이 필요하겠습니다.
다음 글에서는 EKS Network 에 대해 자세하게 알아보겠습니다.
참고 문서
Amazon EKS 클러스터 엔드포인트 액세스 제어 - Amazon EKS
다음 명령은 API 서버 엔드포인트에 대한 단일 IP 주소에서 프라이빗 액세스 및 퍼블릭 액세스를 활성화합니다. 203.0.113.5/32를 단일 CIDR 블록 또는 네트워크 액세스를 제한할 쉼표로 구분된 CIDR 블
docs.aws.amazon.com