이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
컨트롤 플레인 송신 라우팅 구성
기본적으로 Amazon EKS는 Kubernetes 컨트롤 플레인에서 VPC 내 리소스로의 송신 네트워킹을 관리합니다. 컨트롤 플레인 송신 라우팅을 사용하여 이 동작을 변경하고 네트워크 경로를 직접 관리합니다. 이를 통해 컨트롤 플레인 탄력적 네트워크 인터페이스(ENI)의 트래픽이 VPC 리소스에 도달하는 방식을 완벽하게 제어할 수 있습니다. 자체 NAT 게이트웨이, 방화벽 또는 검사 어플라이언스를 통해 라우팅할 수 있습니다.
송신 라우팅 모드
Amazon EKS는 다음과 같은 컨트롤 플레인 송신 라우팅 모드를 지원합니다.
| Mode | 설명 |
|---|---|
|
|
기본 동작입니다. Amazon EKS가 컨트롤 플레인 ENI에서 송신 경로를 관리합니다. 컨트롤 플레인 트래픽에 대해 NAT 게이트웨이 또는 기타 라우팅 인프라를 구성할 필요가 없습니다. |
|
|
VPC 서브넷의 컨트롤 플레인에서 송신 경로를 직접 관리합니다. 컨트롤 플레인이 필수 엔드포인트(예: 웹후크 서버, OIDC 공급자 및 기타 리소스)에 도달할 수 있도록 할 책임은 사용자에게 있습니다. NAT 게이트웨이, NAT 인스턴스, 전송 게이트웨이 또는 방화벽 어플라이언스와 같은 송신 경로를 제공합니다. 또한 라우팅 테이블, 네트워크 ACL, 이 트래픽을 허용하는 보안 그룹 규칙을 구성합니다. |
중요
CUSTOMER_ROUTED 모드에서는 컨트롤 플레인에서 적절한 네트워크 연결을 보장할 책임이 사용자에게 있습니다. VPC 네트워킹의 잘못된 구성으로 인해 컨트롤 플레인 작업이 실패할 수 있습니다. 이러한 잘못된 구성에는 송신 경로 누락, 제한적인 네트워크 ACL 또는 잘못된 보안 그룹이 포함됩니다. 영향을 받는 작업에는 승인 웹후크 직접 호출 및 OIDC 인증이 포함됩니다.
사전 조건
VPC 및 서브넷이 표준 Amazon EKS 네트워킹 요구 사항을 충족해야 합니다. 자세한 내용은 VPC 및 서브넷에 대한 Amazon EKS 네트워킹 요구 사항 보기 섹션을 참조하세요.
CUSTOMER_ROUTED 모드에서 Kubernetes API 서버는 교차 계정 네트워크 인터페이스를 통해 고객 대면 아웃바운드 트래픽을 전송합니다. Amazon EKS는 이미 컨트롤 플레인과 노드 간 통신을 위해 서브넷에 이러한 인터페이스를 생성합니다. 이 트래픽에는 승인 웹후크 및 OIDC 공급자에 대한 직접 호출이 포함됩니다. Amazon EKS는 별도의 송신 네트워크 인터페이스를 생성하지 않습니다. 이 모드는 기존 인터페이스의 사용 방식을 변경합니다. 이러한 인터페이스를 포함하는 서브넷은 다음 요구 사항을 충족해야 합니다.
-
서브넷에는 컨트롤 플레인이 도달해야 하는 엔드포인트(예: 웹후크 서버 및 OIDC 공급자)에 대한 경로가 있어야 합니다. VPC 외부의 엔드포인트인 경우 이는 일반적으로 송신 디바이스에 대한 기본 경로를 의미합니다. 기본 경로는 IPv4의 경우
0.0.0.0/0이고, IPv6의 경우::/0입니다. 송신 디바이스는 NAT 게이트웨이, NAT 인스턴스, 방화벽 또는 중앙 집중식 송신 VPC로의 전송 게이트웨이일 수 있습니다. 어떤 송신 디바이스를 선택할지는 사용자의 몫입니다. Amazon EKS에서는 해당 경로가 작동하기만 하면 됩니다. -
교차 계정 네트워크 인터페이스의 보안 그룹은 워크로드에 필요한 포트(예: 웹후크 및 OIDC 공급자의 경우 포트 443)에서 아웃바운드 트래픽을 허용해야 합니다.
-
서브넷의 네트워크 ACL은 아웃바운드 트래픽과 반환 트래픽용 해당 인바운드 임시 포트 범위를 허용해야 합니다.
CUSTOMER_ROUTED 모드에서 컨트롤 플레인은 VPC의 DNS 구성을 사용하여 호스트 이름을 확인합니다. 이를 통해 컨트롤 플레인은 Route 53 프라이빗 호스팅 영역의 엔드포인트 그리고 Route 53 Resolver 엔드포인트를 통해 전달된 온프레미스 DNS에 도달할 수 있습니다.
-
VPC DHCP 옵션 세트는 도메인 이름 서버 목록에
AmazonProvidedDNS를 포함해야 합니다. 이는 컨트롤 플레인이 VPC 내에서 DNS 이름을 확인하는 데 필요합니다. 클러스터가 외부 웹후크 엔드포인트 또는 퍼블릭 DNS 이름의 OIDC 공급자를 사용하는 경우 해석기에서 퍼블릭 호스트 이름도 확인해야 합니다. 해석기가 VPC 및 퍼블릭 DNS 확인을 모두 처리할 수 있는지 확인합니다.
다음 표에는 컨트롤 플레인이 CUSTOMER_ROUTED 모드에서 VPC를 통해 전송하는 트래픽이 요약되어 있습니다.
| Traffic | Destination | 포트 | 참고 |
|---|---|---|---|
|
승인 웹후크 |
웹후크 엔드포인트(고객 정의 URL) |
443(일반적) |
웹후크가 구성된 경우에만. 엔드포인트가 외부인 경우 송신 디바이스를 통해 VPC를 벗어납니다. |
|
OIDC 검색 |
OIDC 발급자 URL |
443 |
OIDC 공급자가 구성된 경우에만. 발급자가 외부인 경우 송신 디바이스를 통해 VPC를 벗어납니다. |
|
집계된 API 서버 |
고객 API 서버 엔드포인트 |
443 |
구성된 경우에만. 엔드포인트가 외부인 경우 송신 디바이스를 통해 VPC를 벗어납니다. |
|
Kubelet API |
워커 노드 IP 주소 |
10250 |
이는 컨트롤 플레인과 노드 사이에서 클러스터 ENI를 통과하는 트래픽이며 송신 디바이스를 통과하지 않습니다. 라우팅 테이블, 보안 그룹, 네트워크 ACL이 컨트롤 플레인과 노드 간의 클러스터 ENI 경우 트래픽을 허용해야 합니다. |
참고
이 테이블에 나열된 트래픽만 송신 구성의 영향을 받습니다. EKS 관리형 컨트롤 플레인 트래픽(예: etcd, CloudWatch Logs 및 내부 EKS 서비스와의 통신)은 계속 AWS 관리형 네트워크 경로를 통과하며 VPC 구성의 영향을 받지 않습니다.
고객 라우팅 송신으로 클러스터 생성
새 클러스터를 생성할 때 컨트롤 플레인 송신 모드를 지정할 수 있습니다.
예
IPv6 클러스터에는 ipFamily=ipv6를 사용할 수 있습니다. CUSTOMER_ROUTED 모드에서 IPv6를 사용하는 경우 서브넷에 IPv4 트래픽용 NAT 게이트웨이 외에 IPv6 트래픽용 송신 전용 인터넷 게이트웨이가 있는지 확인합니다.
예
- AWS Management Console
-
-
Amazon EKS 콘솔
을 엽니다. -
클러스터 추가를 선택하고 생성을 선택합니다.
-
네트워킹 페이지의 컨트롤 플레인 송신에서 고객 라우팅됨을 선택합니다.
-
나머지 클러스터 구성을 완료하고 생성을 선택합니다.
-
AWS CloudFormation의 경우 ResourcesVpcConfig에서 ControlPlaneEgressMode: CUSTOMER_ROUTED를 설정합니다. 이 필드에 대한 Terraform 지원은 AWS 공급자
참고
CUSTOMER_ROUTED로의 전환은 단방향 작업입니다. 클러스터에서 고객 라우팅 송신을 활성화한 후에는 AWS_MANAGED로 되돌릴 수 없습니다.
기존 클러스터 업데이트
update-cluster-config 명령을 사용하여 기존 클러스터에서 컨트롤 플레인 송신 모드를 변경할 수 있습니다.
aws eks update-cluster-config \ --name my-cluster \ --resources-vpc-config "controlPlaneEgressMode=CUSTOMER_ROUTED" \ --region region-code
업데이트 상태 모니터링:
aws eks describe-update \ --name my-cluster \ --update-id update-id \ --region region-code
상태가 Successful라면 업데이트가 완료된 것입니다. 업데이트 유형은 ControlPlaneEgressUpdate입니다. 업데이트는 일반적으로 10분 내에 완료됩니다.
중요
CUSTOMER_ROUTED로의 전환은 단방향 작업입니다. 클러스터에서 고객 라우팅 송신을 활성화한 후에는 AWS_MANAGED로 되돌릴 수 없습니다.
전환하기 전에 VPC가 사전 조건의 요구 사항을 충족하는지 확인합니다. 업데이트 후 컨트롤 플레인과 필요한 엔드포인트 간의 연결이 끊어지면 승인 웹후크 직접 호출, OIDC 인증과 같은 작업이 실패할 수 있습니다.
IPv6 고려 사항
고객 라우팅 송신으로 IPv6 클러스터를 실행하는 경우 IPv4 및 IPv6 송신 경로를 모두 구성해야 합니다.
CUSTOMER_ROUTED 송신으로 IPv6 클러스터(ipFamily=ipv6)를 실행하는 경우:
-
컨트롤 플레인 ENI에는 IPv4 및 IPv6 주소가 모두 할당됩니다.
-
IPv4 및 IPv6 송신 경로를 모두 구성해야 합니다.
-
IPv4: 송신 디바이스(예: NAT 게이트웨이)에 대한 기본 경로(
0.0.0.0/0) -
IPv6: IPv6 송신 디바이스(예: 송신 전용 인터넷 게이트웨이)에 대한
::/0경로
-
-
보안 그룹과 NACL이 두 IP 버전 모두에서 트래픽을 허용해야 합니다.
-
OIDC 공급자 또는 웹후크 엔드포인트가 IPv4 전용인 경우 IPv4 NAT가 작동하는지 확인합니다.
고려 사항
고객 라우팅 컨트롤 플레인 송신을 사용할 때는 다음 사항에 유의하세요.
-
사용자의 책임:
CUSTOMER_ROUTED모드에서는 사용자가 컨트롤 플레인에서 외부 엔드포인트까지의 네트워크 경로를 소유합니다. 해당 경로가 중단되면 연결을 복원할 때까지 해당 경로에 의존하는 컨트롤 플레인 작업(예: 승인 웹후크 직접 호출 및 OIDC 인증)이 실패할 수 있습니다. -
VPC 내부 트래픽은 영향을 받지 않음: 클러스터 ENI를 통한 컨트롤 플레인과 노드(예: 포트 10250의 kubelet API) 간의 트래픽은 송신 디바이스에 의존하지 않습니다.
-
EKS Auto Mode: 컨트롤 플레인 송신 라우팅은 표준 및 자동 모드 클러스터 모두에서 동일한 방식으로 작동합니다. 컨트롤 플레인 아키텍처가 동일하기 때문입니다.
-
EKS 기능: EKS 기능(예: ArgoCD, ACK, KRO)은 별도의 AWS 관리형 인프라에서 실행됩니다. EKS 기능 컨트롤러의 트래픽은 이 기능에 의해 VPC를 통해 라우팅되지 않습니다.
-
관찰성: VPC 또는 클러스터 서브넷에서 VPC 흐름 로그를 활성화하면 VPC를 통해 라우팅되는 송신 트래픽을 관찰할 수 있습니다. 여기에는 웹후크 및 OIDC 엔드포인트에 대한 직접 호출이 포함됩니다. VPC 흐름 로그가 활성화되지 않은 경우 이 트래픽은 로깅되지 않습니다.
IAM 조건 키
Amazon EKS는 eks:controlPlaneEgressMode 조건 키를 지원합니다. IAM 정책 또는 서비스 제어 정책(SCP)에서 이 키를 사용하여 호출자가 클러스터를 생성 또는 업데이트할 때 지정할 수 있는 송신 모드를 제어할 수 있습니다.
조건 키는 다음 작업에 적용됩니다.
-
eks:CreateCluster -
eks:UpdateClusterConfig
예를 들어 다음 SCP는 호출자가 CUSTOMER_ROUTED를 지정하지 않는 한 클러스터 생성 및 구성 업데이트를 거부합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireCustomerRoutedControlPlane", "Effect": "Deny", "Action": [ "eks:CreateCluster", "eks:UpdateClusterConfig" ], "Resource": "*", "Condition": { "StringNotEquals": { "eks:controlPlaneEgressMode": "CUSTOMER_ROUTED" } } } ] }
조직의 모든 신규 및 업데이트된 클러스터가 CUSTOMER_ROUTED 송신 모드를 사용하도록 하려면 이 정책을 사용합니다.
OIDC 공급자 구성
클러스터가 OIDC ID 제공업체를 사용하는 경우 컨트롤 플레인은 HTTPS(포트 443)를 통해 OIDC 검색 엔드포인트에 도달할 수 있어야 합니다. 이는 서비스 계정의 IAM 역할 또는 클러스터 인증을 위해 연결하는 OIDC ID 제공업체에 적용됩니다. OIDC별 설정은 없습니다. 사전 조건에서 구성한 것과 동일한 송신 경로를 사용합니다. 이를 허용하려면:
-
컨트롤 플레인 서브넷에 OIDC 엔드포인트를 포함하는 경로(일반적으로 NAT 게이트웨이와 같은 송신 디바이스에 대한 기본 경로)가 있는지 확인합니다.
-
클러스터 보안 그룹이 아웃바운드 TCP 443을 허용하는지 확인합니다.
-
서브넷 NACL이 아웃바운드 TCP 443 및 인바운드 임시 반환 트래픽(포트 1024~65535)을 허용하는지 확인합니다.
엔드포인트는 공급자에 따라 다릅니다.
-
Amazon EKS OIDC 공급자(기본값):
oidc.eks.region-code.amazonaws.com -
사용자 지정 OIDC 공급자: 구성한 발급자 URL입니다.
OIDC 인증에 실패하면 OIDC 공급자에 연결할 수 없음에서 문제 해결 단계를 참조하세요.
연결 확인
CUSTOMER_ROUTED 송신을 구성한 후 컨트롤 플레인이 VPC 리소스에 도달할 수 있는지 확인합니다.
-
현재 송신 모드 확인: 클러스터가 예상한 모드를 사용하고 있는지 확인합니다.
aws eks describe-cluster --name my-cluster \ --query "cluster.resourcesVpcConfig.controlPlaneEgressMode" \ --region region-code -
클러스터 상태 확인: 클러스터가
ACTIVE상태여야 합니다.aws eks describe-cluster --name my-cluster --query "cluster.status" --region region-code -
웹후크 연결 테스트: 승인 웹후크가 구성된 경우 웹후크를 트리거하는 리소스를 생성하고 성공 여부를 확인합니다.
-
노드 등록 확인: 노드를 시작하고 클러스터에 성공적으로 조인되는지 확인합니다.
kubectl get nodes -
OIDC 확인: 서비스 계정용 IAM 역할(IRSA)을 사용하는 경우 포드가 IAM 역할을 수임할 수 있는지 확인합니다.
일반적인 문제 해결 방법은 컨트롤 플레인 송신 문제 해결 섹션을 참조하십시오.