클러스터 API 서버 엔드포인트에 대한 네트워크 접근 구성하기
클러스터 API 서버 엔드포인트에 대한 네트워크 접근 구성하기
AWS Management Console과 AWS CLI로 클러스터의 API 서버 엔드포인트 접근을 수정하는 방법을 알아봐요.
출처: 문서
본문
엔드포인트 접근 구성 - AWS 콘솔 (Configure endpoint access - AWS console)
- Amazon EKS 콘솔을 엽니다.
- 클러스터 정보를 표시할 클러스터 이름을 선택합니다.
- Networking 탭을 선택하고 Manage endpoint access를 선택합니다.
- Private access에서 클러스터의 Kubernetes API 서버 엔드포인트에 대한 프라이빗 접근을 활성화할지 비활성화할지 선택합니다. 프라이빗 접근을 활성화하면 클러스터 VPC 내에서 시작된 Kubernetes API 요청은 프라이빗 VPC 엔드포인트를 사용해요. 공용 접근을 비활성화하려면 프라이빗 접근을 활성화해야 해요.
- Public access에서 클러스터의 Kubernetes API 서버 엔드포인트에 대한 공용 접근을 활성화할지 비활성화할지 선택합니다. 공용 접근을 비활성화하면 클러스터의 Kubernetes API 서버는 클러스터 VPC 내에서만 요청을 받을 수 있어요.
- (선택사항) Public access를 활성화했다면 인터넷의 어느 주소가 공용 엔드포인트와 통신할 수 있는지 지정할 수 있어요. Advanced Settings를 선택합니다.
203.0.113.5/32같은 CIDR 블록을 입력합니다. 블록에는 예약된 주소가 포함될 수 없어요. Add Source를 선택해 추가 블록을 입력할 수 있어요. 지정할 수 있는 CIDR 블록 수에는 최대값이 있어요. 자세한 내용은 View and manage Amazon EKS and Fargate service quotas 참고. 블록을 지정하지 않으면 공용 API 서버 엔드포인트는IPv4(0.0.0.0/0) 및 듀얼 스택IPv6클러스터의 경우 추가로IPv6(::/0)의 모든 IP 주소에서 요청을 받아요. CIDR 블록으로 공용 엔드포인트 접근을 제한한다면 노드와 Fargate 파드(사용하는 경우)가 클러스터와 통신할 수 있도록 프라이빗 엔드포인트 접근도 활성화할 것을 권장합니다. 프라이빗 엔드포인트가 활성화되지 않으면 공용 접근 엔드포인트 CIDR 소스에 VPC의 이그레스 소스가 포함되어야 해요. 예를 들어 프라이빗 서브넷의 노드가 NAT Gateway를 통해 인터넷과 통신한다면 공용 엔드포인트의 허용 CIDR 블록의 일부로 NAT gateway의 아웃바운드 IP 주소를 추가해야 해요. - Update를 선택해 마칩니다.
엔드포인트 접근 구성 - AWS CLI (Configure endpoint access - AWS CLI)
AWS CLI 버전 1.27.160 이상으로 다음 단계를 완료합니다. 현재 버전은 aws --version으로 확인할 수 있어요. AWS CLI 설치 또는 업그레이드는 Installing the AWS CLI 참고.
다음 AWS CLI 명령으로 클러스터 API 서버 엔드포인트 접근을 업데이트합니다. 클러스터 이름과 원하는 엔드포인트 접근 값을 바꿔 주세요. endpointPublicAccess=true로 설정하면 선택적으로 publicAccessCidrs에 단일 CIDR 블록 또는 쉼표로 구분한 CIDR 블록 목록을 입력할 수 있어요. 블록에는 예약된 주소가 포함될 수 없어요. CIDR 블록을 지정하면 공용 API 서버 엔드포인트는 나열된 블록에서만 요청을 받아요. 지정할 수 있는 CIDR 블록 수에는 최대값이 있어요. 자세한 내용은 View and manage Amazon EKS and Fargate service quotas 참고. CIDR 블록으로 공용 엔드포인트 접근을 제한한다면 노드와 Fargate 파드(사용하는 경우)가 클러스터와 통신할 수 있도록 프라이빗 엔드포인트 접근도 활성화하는 것을 권장합니다. 프라이빗 엔드포인트가 활성화되지 않으면 공용 접근 엔드포인트 CIDR 소스에 VPC의 이그레스 소스가 포함되어야 해요. 예를 들어 프라이빗 서브넷의 노드가 NAT Gateway를 통해 인터넷과 통신한다면 공용 엔드포인트의 허용 CIDR 블록의 일부로 NAT gateway의 아웃바운드 IP 주소를 추가해야 해요. CIDR 블록을 지정하지 않으면 공용 API 서버 엔드포인트는 듀얼 스택 IPv6 클러스터의 경우 모든(0.0.0.0/0) IP 주소 및 추가로 IPv6(::/0)에서 요청을 받아요.
참고: 다음 명령은 API 서버 엔드포인트에 대해 단일 IP 주소에서 프라이빗 접근과 공용 접근을 활성화해요.
203.0.113.5/32를 네트워크 접근을 제한하려는 단일 CIDR 블록 또는 쉼표로 구분한 CIDR 블록 목록으로 바꿔 주세요.
aws eks update-cluster-config \
--region region-code \
--name my-cluster \
--resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true
예시 출력:
{
"update": {
"id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000",
"status": "InProgress",
"type": "EndpointAccessUpdate",
"params": [
{
"type": "EndpointPublicAccess",
"value": "true"
},
{
"type": "EndpointPrivateAccess",
"value": "true"
},
{
"type": "publicAccessCidrs",
"value": "[\"203.0.113.5/32\"]"
}
],
"createdAt": 1576874258.137,
"errors": []
}
}
이전 명령이 반환한 클러스터 이름과 업데이트 ID로 다음 명령으로 엔드포인트 접근 업데이트 상태를 모니터링합니다. 상태가 Successful로 표시되면 업데이트가 완료된 거예요.
aws eks describe-update \
--region region-code \
--name my-cluster \
--update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000
예시 출력:
{
"update": {
"id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000",
"status": "Successful",
"type": "EndpointAccessUpdate",
"params": [
{
"type": "EndpointPublicAccess",
"value": "true"
},
{
"type": "EndpointPrivateAccess",
"value": "true"
},
{
"type": "publicAccessCidrs",
"value": "[\"203.0.113.5/32\"]"
}
],
"createdAt": 1576874258.137,
"errors": []
}
}