인터넷 액세스가 제한된 프라이빗 클러스터 배포 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

인터넷 액세스가 제한된 프라이빗 클러스터 배포

이 주제에서는 아웃바운드 인터넷 액세스 권한이 없는 AWS 클라우드에 대해, Amazon EKS 클러스터를 배포하는 방법을 설명합니다. AWS Outposts에 로컬 클러스터가 있는 경우 이 주제 대신 AWS Outposts에 Amazon Linux 노드 생성(Amazon EKS 로컬 클러스터 플랫폼 버전)를 참조하세요.

Amazon EKS 네트워킹에 익숙하지 않은 경우 Amazon EKS 작업자 노드에 대한 클러스터 네트워킹 설명을 참조하세요. 클러스터에 아웃바운드 인터넷 액세스 권한이 없는 경우에는 다음과 같은 요구 사항을 충족해야 합니다.

  • 클러스터에서는 VPC에 있는 컨테이너 레지스트리에서 이미지를 가져와야 합니다. VPC에서 Amazon Elastic Container Registry를 생성하고 노드에서 가져올 컨테이너 이미지를 복사할 수 있습니다. 자세한 내용은 한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사 단원을 참조하십시오.

  • 클러스터에 활성화된 엔드포인트 프라이빗 액세스 권한이 있어야 합니다. 노드에서 클러스터 엔드포인트에 등록하려면 이 권한이 필요합니다. 엔드포인트 퍼블릭 액세스는 선택 사항입니다. 자세한 내용은 클러스터 API 서버 엔드포인트에 대한 네트워크 액세스 제어 단원을 참조하십시오.

  • 자체 관리형 Linux 노드와 Windows 노드에서는 시작하기 전에 다음과 같은 부트스트랩 인수가 포함되어야 합니다. 이러한 인수에서는 Amazon EKS 내부 검사를 우회하며 VPC 내에서 Amazon EKS API에 액세스하는 권한이 필요하지 않습니다.

    1. 다음과 같은 명령으로 클러스터의 엔드포인트 값을 결정합니다. my-cluster를 해당 클러스터의 이름으로 바꿉니다.

      aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text

      예제 출력은 다음과 같습니다.

      https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
    2. 다음과 같은 명령으로 클러스터의 인증 기관 값을 결정합니다. my-cluster를 해당 클러스터의 이름으로 바꿉니다.

      aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text

      반환된 출력은 긴 문자열입니다.

    3. 다음과 같은 명령의 cluster-endpointcertificate-authority를 이전 명령의 출력에서 반환된 값으로 바꿉니다. 자체 관리형 노드 시작 시 부트스트랩 인수 지정에 대한 자세한 내용은 자체 관리형 Amazon Linux 노드 생성자체 관리형 Microsoft Windows 노드 생성 부분을 참조하세요.

    • Linux 노드용:

      --apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority

      추가 인수는 GitHub에서 부트스트랩 스크립트를 참조하세요.

    • Windows 노드용:

      참고

      사용자 지정 서비스 CIDR을 사용하는 경우-ServiceCIDR 파라미터를 사용하여 CIDR을 지정해야 합니다. 그렇지 않으면 클러스터의 Pods에 대한 DNS 확인이 실패합니다.

      -APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority

      추가 인수는 부트스트랩 스크립트 구성 파라미터 부분을 참조하세요.

  • 클러스터의 aws-auth ConfigMap은 VPC 내에서 생성해야 합니다. 항목을 생성하고 aws-auth ConfigMap에 추가하는 방법에 대한 자세한 내용을 보려면 터미널에 eksctl create iamidentitymapping --help를 입력합니다. ConfigMap이 서버에 없는 경우 eksctl에서는 명령을 사용해 ID 매핑을 추가할 때 해당 항목을 생성합니다.

  • 서비스 계정에 대한 IAM 역할로 구성된 Pods에서는 AWS Security Token Service(AWS STS) API 호출에서 보안 인증 정보를 취득합니다. 아웃바운드 인터넷 액세스 권한이 없는 경우 VPC에서 AWS STS VPC 엔드포인트를 생성하고 사용해야 합니다. 대부분의 AWS v1 SDK는 기본적으로 AWS STS VPC 엔드포인트를 사용하지 않는 글로벌 AWS STS 엔드포인트(sts.amazonaws.com)를 사용합니다. AWS STS VPC 엔드포인트를 사용하려면 리전별 AWS STS 엔드포인트(sts.region-code.amazonaws.com)를 사용하도록 SDK를 구성해야 할 수도 있습니다. 자세한 내용은 서비스 계정의 AWS Security Token Service 엔드포인트 구성 단원을 참조하십시오.

  • 클러스터의 VPC 서브넷에는 Pods에서 액세스해야 하는 모든 AWS 서비스에 대한 VPC 인터페이스 엔드포인트가 있어야 합니다. 자세한 내용은 인터페이스 VPC 엔드포인트를 사용하여 AWS 서비스에 액세스를 참조하세요. 일반적으로 사용하는 몇 가지 서비스와 엔드포인트가 아래 표에 나열되어 있습니다. 전체 엔드포인트 목록은 AWS PrivateLink 안내서AWS PrivateLink와 통합되는 AWS 서비스를 참조하세요.

    Service 엔드포인트
    Amazon EC2 com.amazonaws.region-code.ec2
    Amazon Elastic Container Registry(컨테이너 이미지 가져오기용) com.amazonaws.region-code.ecr.api, com.amazonaws.region-code.ecr.dkr, and com.amazonaws.region-code.s3
    Application Load Balancer 및 Network Load Balancer com.amazonaws.region-code.elasticloadbalancing
    AWS X-Ray com.amazonaws.region-code.xray
    Amazon CloudWatch Logs com.amazonaws.region-code.logs
    AWS Security Token Service(서비스 계정에 IAM 역할 사용 시 필요) com.amazonaws.region-code.sts
고려 사항
  • 자체 관리형 노드는 필요한 VPC 인터페이스 엔드포인트가 있는 서브넷에 배포해야 합니다. 관리형 노드 그룹을 생성하는 경우 VPC 인터페이스 엔드포인트 보안 그룹에서 서브넷에 대한 CIDR을 허용하거나 본인이 생성된 노드 보안 그룹을 VPC 인터페이스 엔드포인트 보안 그룹에 추가해야 합니다.

  • Pods에서 Amazon EFS 볼륨을 사용하는 경우 Amazon EFS를 사용한 탄력적 파일 시스템 저장를 배포하기 전에 컨테이너 이미지에서 Amazon EKS 클러스터와 동일한 AWS 리전을 사용하도록 설정하려면 드라이버의 kustomization.yaml 파일을 변경해야 합니다.

  • AWS Load Balancer Controller를 사용하여 AWS ALB(Application Load Balancer) 및 Network Load Balancer를 프라이빗 클러스터에 배포할 수 있습니다. 배포할 때 명령줄 플래그를 사용하여 enable-shield, enable-wafenable-wafv2를 false로 설정해야 합니다. 수신 객체의 호스트 이름을 사용한 인증서 검색은 지원되지 않습니다. 이는 VPC 인터페이스 엔드포인트가 없는 AWS Certificate Manager에 컨트롤러가 도달해야 하기 때문입니다.

    컨트롤러는 Fargate와 함께 사용하는 데 필요한 IP 대상이 있는 Network Load Balancer를 지원합니다. 자세한 내용은 애플리케이션 및 Application Load Balancers를 사용한 HTTP 트래픽 라우팅Network Load Balancer 생성 섹션을 참조하세요.

  • Cluster Autoscaler가 지원됩니다. Cluster Autoscaler Pods를 배포할 때 명령줄이 --aws-use-static-instance-list=true를 포함하는지 확인하세요. 자세한 내용은 GitHub에서 고정적 인스턴스 목록 사용을 참조하세요. 워커 노드 VPC에는 AWS STS VPC 엔드포인트 및 자동 크기 조정 VPC 엔드포인트도 포함되어야 합니다.

  • 일부 컨테이너 소프트웨어 제품에서는 사용량을 모니터링하는 AWS Marketplace Metering Service에 액세스하는 API 호출을 사용합니다. 프라이빗 클러스터에서는 이러한 호출이 허용되지 않으므로 이러한 컨테이너 유형은 프라이빗 클러스터에서 사용할 수 없습니다.