AWS PrivateLink로 Amazon EKS 접근하기
AWS PrivateLink로 Amazon EKS 접근하기
AWS PrivateLink를 사용해 VPC와 Amazon Elastic Kubernetes Service 사이에 프라이빗 연결을 만들 수 있어요. 인터넷 게이트웨이, NAT 디바이스, VPN 연결 또는 AWS Direct Connect 연결 없이도 Amazon EKS를 마치 VPC 안에 있는 것처럼 접근할 수 있어요. VPC의 인스턴스는 Amazon EKS에 접근하기 위해 공용 IP 주소가 필요하지 않아요.
AWS PrivateLink로 구동되는 인터페이스 엔드포인트를 만들어 이 프라이빗 연결을 설정해요. 인터페이스 엔드포인트에 대해 활성화한 각 서브넷에 엔드포인트 네트워크 인터페이스를 만들어요. 이들은 Amazon EKS로 향하는 트래픽의 진입점 역할을 하는 requester-managed(요청자 관리) 네트워크 인터페이스예요.
자세한 내용은 AWS PrivateLink 가이드의 AWS PrivateLink를 통한 AWS 서비스 접근을 참고하세요.
출처: 문서
본문
시작하기 전에
시작하기 전에 다음 작업을 수행했는지 확인하세요.
- AWS PrivateLink 가이드의 인터페이스 VPC 엔드포인트로 AWS 서비스 접근을 검토하세요.
고려 사항
- 지원 및 제한 사항: Amazon EKS 인터페이스 엔드포인트는 VPC에서 모든 Amazon EKS API 작업에 대한 안전한 접근을 제공하지만 특정 제한 사항이 있어요. Kubernetes API에는 별도의 프라이빗 엔드포인트가 있으므로 이를 지원하지 않으며, Amazon EKS를 인터페이스 엔드포인트로만 접근 가능하도록 구성할 수 없어요. IRSA(IAM roles for service accounts)가 사용하는 클러스터 OIDC discovery 및 JWKS 엔드포인트도 자체 서비스 이름과 접근 제어 동작을 가진 별도의 인터페이스 엔드포인트에서 제공되며, AWS PrivateLink로 클러스터 OIDC 엔드포인트 접근하기를 참고하세요.
- 요금 (Pricing): Amazon EKS 인터페이스 엔드포인트를 사용하면 표준 AWS PrivateLink 요금이 발생해요: 각 가용 영역에 프로비저닝된 엔드포인트당 시간당 요금, 엔드포인트를 통한 트래픽 데이터 처리 요금. 자세한 내용은 AWS PrivateLink pricing을 참고하세요.
- 보안 및 접근 제어 (Security and Access Control): 다음 추가 구성으로 보안을 강화하고 접근을 제어할 것을 권장해요. VPC 엔드포인트 정책으로 인터페이스 엔드포인트를 통한 Amazon EKS 접근을 제어하고, 엔드포인트 네트워크 인터페이스와 보안 그룹을 연결해 트래픽을 관리하며, VPC flow logs를 사용해 인터페이스 엔드포인트로 들어오고 나가는 IP 트래픽을 캡처·모니터링하고 로그를 Amazon CloudWatch 또는 Amazon S3로 게시하세요. 자세한 내용은 endpoint policies로 VPC 엔드포인트 접근 제어와 VPC Flow Logs로 IP 트래픽 로깅을 참고하세요.
- 연결 옵션 (Connectivity Options): 인터페이스 엔드포인트는 유연한 연결 옵션을 제공해요. 온프레미스 접근(AWS Direct Connect 또는 AWS Site-to-Site VPN으로 온프레미스 데이터 센터를 인터페이스 엔드포인트가 있는 VPC에 연결) 또는 VPC 간 연결(AWS Transit Gateway 또는 VPC 피어링으로 다른 VPC를 인터페이스 엔드포인트가 있는 VPC에 연결, 트래픽을 AWS 네트워크 안에 유지)을 사용할 수 있어요.
- IP 버전 지원 (IP Version Support): 2024년 8월 이전에 생성된 엔드포인트는 eks.region.amazonaws.com을 사용하는 IPv4만 지원해요. 2024년 8월 이후에 생성된 새 엔드포인트는 IPv4와 IPv6 이중 스택(dual-stack)을 지원해요(예: eks.region.amazonaws.com, eks.region.api.aws).
- 리전 가용성 (Regional Availability): EKS API용 AWS PrivateLink는 Asia Pacific (Malaysia) (ap-southeast-5), Asia Pacific (Thailand) (ap-southeast-7), Mexico (Central) (mx-central-1), Asia Pacific (Taipei) (ap-east-2) 리전에서는 사용할 수 없어요. eks-auth(EKS Pod Identity)용 AWS PrivateLink는 Asia Pacific (Malaysia) (ap-southeast-5) 리전에서 지원돼요. 클러스터 OIDC 엔드포인트(
com.amazonaws.region-code.oidc-eks)용 AWS PrivateLink는 대부분의 AWS 리전에서 사용할 수 있어요.
Amazon EKS용 인터페이스 엔드포인트 생성
Amazon VPC 콘솔 또는 AWS Command Line Interface(AWS CLI)로 Amazon EKS용 인터페이스 엔드포인트를 만들 수 있어요. 자세한 내용은 AWS PrivateLink 가이드의 VPC 엔드포인트 생성을 참고하세요.
다음 서비스 이름으로 Amazon EKS용 인터페이스 엔드포인트를 만드세요.
- EKS API
com.amazonaws.region-code.ekscom.amazonaws.region-code.eks-fips(FIPS 규격 엔드포인트용)
- EKS Auth API (EKS Pod Identity)
com.amazonaws.region-code.eks-auth
- EKS 클러스터 OIDC 엔드포인트 (IRSA discovery / JWKS)
com.amazonaws.region-code.oidc-eks- 이 엔드포인트는 EKS API 엔드포인트와 다른 접근 제어 동작을 가져요. 자세한 내용은 AWS PrivateLink로 클러스터 OIDC 엔드포인트 접근하기를 참고하세요.
- EKS 콘솔 리소스 보기 (EKS console resource views)
com.amazonaws.region-code.eks-proxy- 이 엔드포인트 서비스는 AWS 콘솔의 클러스터 리소스 보기를 지원해요. AWS 관리형 콘솔과 서비스가 소비하며 애플리케이션에서 직접 호출하지 않아요(공용 SDK 또는 CLI가 없어요). VPC에 인터넷 egress가 없거나 프라이빗 호스팅 영역에서
eks.region-code.amazonaws.com영역을 재정의하는 경우 이 엔드포인트를 만드세요. 그러한 경우 콘솔 리소스 보기가 동작하려면 이 엔드포인트가 필요해요. - 이 엔드포인트는 두 개의 프라이빗 DNS 이름을 등록해요.
eks-proxy.region-code.api.aws(이중 스택)eks-proxy.eks.region-code.amazonaws.com(IPv4; IPv4 전용 네트워크에서 사용)
Amazon EKS 인터페이스 엔드포인트의 프라이빗 DNS 기능
Amazon EKS 및 기타 AWS 서비스의 인터페이스 엔드포인트에 기본적으로 활성화되는 프라이빗 DNS 기능은 기본 리전 DNS 이름을 사용해 안전하고 프라이빗한 API 요청을 가능하게 해요. 이 기능은 API 호출이 프라이빗 AWS 네트워크를 통해 인터페이스 엔드포인트로 라우팅되도록 보장하여 보안과 성능을 향상시켜요.
Amazon EKS 또는 다른 AWS 서비스의 인터페이스 엔드포인트를 만들면 프라이빗 DNS 기능이 자동으로 활성화돼요. 활성화하려면 특정 속성을 설정해 VPC를 올바르게 구성해야 해요.
enableDnsHostnames: VPC 내 인스턴스가 DNS 호스트 이름을 가질 수 있게 해요.enableDnsSupport: VPC 전체에서 DNS 확인을 활성화해요.
이 설정을 확인하거나 수정하는 단계별 지침은 VPC의 DNS 속성 보기 및 업데이트를 참고하세요.
DNS 이름과 IP 주소 유형
프라이빗 DNS 기능이 활성화되면 특정 DNS 이름을 사용해 Amazon EKS에 연결할 수 있으며, 이러한 옵션은 시간이 지나면서 진화해요.
eks.region.amazonaws.com: 전통적인 DNS 이름으로, 2024년 8월 이전에는 IPv4 주소로만 확인됐어요. 이중 스택으로 업데이트된 기존 엔드포인트의 경우 이 이름은 IPv4와 IPv6 주소 모두로 확인돼요.eks.region.api.aws: 2024년 8월 이후에 만들어진 새 엔드포인트에서 사용 가능한 이중 스택 DNS 이름으로, IPv4와 IPv6 주소 모두로 확인돼요.
2024년 8월 이후 새 인터페이스 엔드포인트에는 두 개의 DNS 이름이 함께 제공되며 이중 스택 IP 주소 유형을 선택할 수 있어요. 기존 엔드포인트의 경우 이중 스택으로 업데이트하면 eks.region.amazonaws.com이 IPv4와 IPv6 모두를 지원하도록 수정돼요.
프라이빗 DNS 기능 사용하기
구성이 끝나면 프라이빗 DNS 기능을 워크플로우에 통합해 다음 기능을 제공할 수 있어요.
- API 요청 (API Requests): 엔드포인트 설정에 따라
eks.region.amazonaws.com또는eks.region.api.aws기본 리전 DNS 이름을 사용해 Amazon EKS에 API 요청을 하세요. - 애플리케이션 호환성 (Application Compatibility): EKS API를 호출하는 기존 애플리케이션은 이 기능을 활용하기 위해 변경이 필요 없어요.
- 이중 스택과 함께하는 AWS CLI: 이중 스택 엔드포인트를 AWS CLI와 함께 사용하려면 AWS SDKs and Tools Reference Guide의 Dual-stack and FIPS endpoints configuration을 참고하세요.
- 자동 라우팅 (Automatic Routing): Amazon EKS 기본 서비스 엔드포인트에 대한 모든 호출은 자동으로 인터페이스 엔드포인트를 통해 라우팅되어 프라이빗하고 안전한 연결이 보장돼요.
AWS PrivateLink로 클러스터 OIDC 엔드포인트 접근하기
각 Amazon EKS 클러스터는 OIDC 발급자 URL에 공용 OpenID Connect(OIDC) discovery 문서와 JSON Web Key Set(JWKS)을 게시해요. IRSA(IAM roles for service accounts)는 이 엔드포인트를 사용해 클러스터의 공용 서명 키를 게시해요. IRSA를 설정하거나 토큰을 직접 검증하는 도구는 이 엔드포인트에서 키를 검색해요.
인터넷 egress 없이 VPC에서 프라이빗하게 이 OIDC 엔드포인트에 도달하는 데 AWS PrivateLink를 사용할 수 있어요. 이는 VPC 내 도구가 OIDC 엔드포인트에 도달해야 하는 프라이빗 또는 무-egress VPC에서 유용해요. 예를 들어 클러스터의 IAM OIDC ID 공급자 생성(eksctl, Terraform 또는 AWS CLI) 또는 VPC 안에서 자체 토큰 검증기 실행이 그렇습니다. 이전에는 이 엔드포인트에 도달하려면 인터넷 접근이나 DNS 해결 방법이 필요했어요(GitHub의 containers-roadmap#2038 참고).
다음 서비스 이름으로 클러스터 OIDC 엔드포인트의 인터페이스 엔드포인트를 만드세요.
com.amazonaws.region-code.oidc-eks
고려 사항
- 이 엔드포인트는 VPC 엔드포인트 정책을 지원하지 않아요. OIDC discovery와 JWKS 문서는 익명으로 제공돼요. 이는 OpenID Connect 사양에 필요한 것이며 IRSA가 동작하는 방식이에요: 검증기는 자격 증명을 제시하지 않고 공용 키를 가져와요. 요청에 IAM 보안 주체나 작업이 없으므로 VPC 엔드포인트 정책이 평가할 것이 없어요. 이 엔드포인트는 기본 전체 접근 정책만 허용해요. 엔드포인트 네트워크 인터페이스의 보안 그룹과 서브넷 라우팅으로 누가 엔드포인트에 도달할 수 있는지 제어하세요.
- 프라이빗 연결은 인증 경계(authorization boundary)가 아니에요. AWS PrivateLink를 통해 OIDC 엔드포인트에 도달하면 트래픽이 AWS 네트워크에 유지되는 것이지, 그 자체로 누가 IAM 역할을 맡을 수 있는지 제어하는 것은 아니에요. 제공되는 데이터는 공용 키 자료예요. 맡겨진 역할의 신뢰 정책이 IRSA 승인을 강제하지, OIDC 엔드포인트에 도달하는 데 사용된 네트워크 경로가 아냐. 이 강제는 워크로드가
sts:AssumeRoleWithWebIdentity를 호출할 때 일어나요. 역할의 신뢰 정책의aud및sub조건으로 어떤 워크로드가 역할을 맡을 수 있는지 제어하세요. Kubernetes 서비스 계정에 IAM 역할 할당을 참고하세요. - AWS STS는 자체 경로로 토큰을 검증해요. 이 엔드포인트는 AWS STS가 IRSA 토큰을 검증하는 방식에 영향을 주지 않아요. 워크로드가
AssumeRoleWithWebIdentity를 호출하면 STS는 VPC나 이 엔드포인트가 아닌 AWS 안에서 클러스터의 JWKS를 가져와요. 이 엔드포인트를 만들거나 VPC에서 OIDC DNS를 재정의해도 토큰 검증은 바뀌지 않아요. 워크로드의AssumeRoleWithWebIdentity호출도 프라이빗하게 유지하려면 AWS STS 인터페이스 엔드포인트를 만들고 리전 STS 엔드포인트를 따로 구성하세요. 서비스 계정용 AWS Security Token Service 엔드포인트 구성을 참고하세요. - 요금 (Pricing): 표준 AWS PrivateLink 요금이 적용돼요. AWS PrivateLink pricing을 참고하세요.
프라이빗 DNS 및 이중 스택 이름
각 클러스터에는 하나의 OIDC 발급자 호스트 이름이 있으며 클러스터의 IP 패밀리에 따라 결정돼요. 기본값인 IPv4 클러스터는 oidc.eks.region-code.amazonaws.com을 사용해요. IPv6 클러스터는 IPv4와 IPv6 주소 모두로 확인되는 이중 스택 호스트 이름 oidc-eks.region-code.api.aws를 사용해요. AWS 중국 리전에서는 이중 스택 호스트 이름이 oidc-eks.region-code.api.amazonwebservices.com.cn이에요.
인터페이스 엔드포인트는 두 호스트 이름을 모두 등록해요. 프라이빗 DNS가 활성화된 상태(기본값)에서 각 호스트 이름은 인터페이스 엔드포인트로 확인돼요. 따라서 클러스터가 oidc.eks.region-code.amazonaws.com 호스트 이름을 사용하든 이중 스택 호스트 이름을 사용하든 클러스터의 발급자 URL은 엔드포인트로 확인돼요. 토큰의 발급자 URL을 따라 discovery 문서와 JWKS를 가져오는 클라이언트는 두 경우 모두 엔드포인트에 프라이빗하게 도달해요.