Amazon EKS 클러스터에 대해 VPC 생성 - Amazon EKS

Amazon EKS 클러스터에 대해 VPC 생성

Amazon Virtual Private Cloud(Amazon VPC)를 사용하여 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 사용자의 자체 데이터 센터에서 운영하는 기존 네트워크와 매우 유사합니다. 그러나 Amazon Web Services Services의 확장 가능한 인프라를 사용하면 얻을 수 있는 이점이 있습니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서를 참조하세요.

Amazon EKS 클러스터, 노드, Kubernetes 리소스는 VPC에 배포됩니다. Amazon EKS에서 기존 VPC를 사용하려는 경우 해당 VPC는 Amazon EKS VPC 및 서브넷 요구 사항과 고려 사항에서 설명하는 요구 사항을 충족해야 합니다. 이 주제에서는 Amazon EKS 제공 AWS CloudFormation 템플릿을 사용하여 Amazon EKS 요구 사항을 충족하는 VPC를 생성하는 방법을 설명합니다.

사전 조건

Amazon EKS용 VPC를 생성하려면 Amazon VPC 리소스를 생성하는 데 필요한 IAM 권한이 있어야 합니다. 이러한 리소스는 VPC, 서브넷, 보안 그룹, 라우팅 테이블 및 경로, 인터넷 및 NAT 게이트웨이입니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 퍼블릭 서브넷 예 정책을 사용하여 VPC 생성서비스 승인 참조Amazon EC2에 대한 작업, 리소스 및 조건 키의 전체 목록을 참조하세요.

퍼블릭 및 프라이빗 서브넷을 사용하거나 퍼블릭 서브넷만 또는 프라이빗 서브넷만 있는 VPC를 생성할 수 있습니다.

Public and private subnets

이 VPC에는 2개의 퍼블릭 서브넷과 2개의 프라이빗 서브넷이 있습니다. 퍼블릭 서브넷은 인터넷 게이트웨이로 이어지는 라우팅이 있는 라우팅 테이블과 연결된 서브넷입니다. 그러나 프라이빗 서브넷의 라우팅 테이블에는 인터넷 게이트웨이로 이어지는 라우팅이 없습니다. 1개의 퍼블릭 서브넷과 1개의 프라이빗 서브넷이 동일한 가용 영역에 배포됩니다. 다른 퍼블릭 서브넷과 프라이빗 서브넷은 동일한 AWS 리전의 두 번째 가용 영역에 배포됩니다. 대부분 배포에 이 옵션을 사용하는 것이 좋습니다.

이 옵션을 사용하면 노드를 프라이빗 서브넷에 배포할 수 있습니다. 이 옵션을 사용하면 Kubernetes가 프라이빗 서브넷의 노드에서 실행되는 pods로 트래픽을 로드 밸런싱할 수 있는 퍼블릭 서브넷에 로드 밸런서를 배포할 수 있습니다. 퍼블릭 IPv4 주소는 퍼블릭 서브넷에 배포된 노드에 자동으로 할당되지만 퍼블릭 IPv4 주소는 프라이빗 서브넷에 배포된 노드에는 할당되지 않습니다.

퍼블릭 및 프라이빗 서브넷의 노드에 IPv6 주소를 할당할 수도 있습니다. 프라이빗 서브넷의 노드는 클러스터 및 기타 AWS 서비스와 통신할 수 있으며, Pods는 IPv4 주소를 사용하여 NAT 게이트웨이를 통하거나 각 가용 영역에 배포된 IPv6 주소를 사용하여 아웃바운드 전용 인터넷 게이트웨이를 통해 인터넷으로 통신할 수 있습니다. 클러스터 또는 노드 이외의 소스에서 모든 인바운드 트래픽을 거부하지만 모든 아웃바운드 트래픽을 허용하는 규칙이 있는 보안 그룹이 배포됩니다. 서브넷에는 Kubernetes가 로드 밸런서를 배포할 수 있도록 태그가 지정됩니다.

VPC 생성

  1. AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation)을 엽니다.

  2. 탐색 모음에서 Amazon EKS를 지원하는 AWS 리전을 선택합니다.

  3. 스택 생성(Create stack), 새 리소스 사용(표준)(With new resources (standard))를 선택합니다.

  4. 사전 조건 - 템플릿 준비(Prerequisite - Prepare template)에서 템플릿 준비 완료(Template is ready)가 선택되었는지 확인한 다음 템플릿 지정(Specify template)에서 Amazon S3 URL을 선택합니다.

  5. IPv4만 지원하는 VPC 또는 IPv4IPv6를 지원하는 VPC를 생성할 수 있습니다. Amazon S3 URL 아래의 텍스트 영역에 다음 URL 중 하나를 붙여 넣고 다음(Next)을 선택합니다.

    • IPv4

      https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-private-subnets.yaml
    • IPv4IPv6

      https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
  6. 스택 세부 정보 지정(Specify stack details) 페이지에서 파라미터를 입력하고 다음(Next)을 선택합니다.

    • 스택 이름(Stack name): AWS CloudFormation 스택에 대한 스택 이름을 선택합니다. 예를 들어 이전 단계에서 사용한 템플릿 이름을 사용할 수 있습니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하며 100자 이하여야 합니다.

    • VpcBlock: VPC에 대한 IPv4 CIDR 범위를 선택합니다. 배포하는 각 노드, 포드 및 로드 밸런서에는 이 블록의 IPv4 주소가 할당됩니다. 기본 IPv4 값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 및 서브넷 크기 조정을 참조하세요. 또한 생성된 VPC CIDR 블록을 추가할 수도 있습니다. IPv6 VPC를 생성하는 경우 Amazon의 글로벌 유니캐스트 주소 공간에서 IPv6 CIDR 범위가 자동으로 할당됩니다.

    • PublicSubnet01Block: 퍼블릭 서브넷 1의 IPv4 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. IPv6 VPC를 생성하는 경우 템플릿 내에 이 블록이 지정됩니다.

    • PublicSubnet02Block: 퍼블릭 서브넷 2의 IPv4 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. IPv6 VPC를 생성하는 경우 템플릿 내에 이 블록이 지정됩니다.

    • PrivateSubnet01Block: 프라이빗 서브넷 1의 IPv4 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. IPv6 VPC를 생성하는 경우 템플릿 내에 이 블록이 지정됩니다.

    • PrivateSubnet02Block: 프라이빗 서브넷 2의 IPv4 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. IPv6 VPC를 생성하는 경우 템플릿 내에 이 블록이 지정됩니다.

  7. (선택 사항) 스택 옵션 구성(Configure stack options) 페이지에서 스택 리소스에 태그를 지정하고 다음(Next)을 선택합니다.

  8. 검토(Review) 페이지에서 스택 생성(Create stack)을 선택합니다.

  9. 스택이 생성된 후 콘솔에서 이를 선택하고 출력(Outputs)을 선택합니다.

  10. 생성된 VPC의 VpcId를 기록합니다. 이 값은 클러스터 및 노드를 생성할 때 필요합니다.

  11. 생성된 서브넷의 SubnetIds와 퍼블릭 서브넷 또는 프라이빗 서브넷으로 생성했는지 여부를 기록합니다. 2개 이상의 이 값은 클러스터 및 노드를 생성할 때 필요합니다.

  12. IPv4 VPC를 생성한 경우 이 단계를 건너뜁니다. IPv6 VPC를 생성한 경우 템플릿으로 생성한 퍼블릭 서브넷에 대해 IPv6 주소 자동 할당 옵션을 사용 설정해야 합니다. 이 설정은 프라이빗 서브넷에 대해 이미 사용 설정되어 있습니다. 설정을 사용 설정하려면 다음 단계를 완료합니다.

    1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

    2. 왼쪽 탐색 창에서 서브넷(Subnets)을 선택합니다.

    3. 퍼블릭 서브넷(stack-name/SubnetPublic01 또는 stack-name/SubnetPublic02퍼블릭(public)이라는 단어가 포함됨) 중 하나를 선택하고 작업(Actions), 서브넷 설정 편집(Edit subnet settings)을 선택합니다.

    4. IPv6 주소 자동 할당 사용 설정(Enable auto-assign IPv6 address) 확인란을 선택한 다음 저장(Save)을 선택합니다.

    5. 다른 퍼블릭 서브넷에 대해 이전 단계를 다시 완료합니다.

Only public subnets

이 VPC에는 AWS 리전의 다른 가용 영역에 배포되는 3개의 퍼블릭 서브넷이 있습니다. 모든 노드에는 퍼블릭 IPv4 주소가 자동으로 할당되며 인터넷 게이트웨이를 통해 인터넷 트래픽을 송수신할 수 있습니다. 모든 인바운드 트래픽을 거부하고 모든 아웃바운드 트래픽을 허용하는 보안 그룹이 배포됩니다. 서브넷에는 Kubernetes가 로드 밸런서를 배포할 수 있도록 태그가 지정됩니다.

VPC 생성

  1. AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation)을 엽니다.

  2. 탐색 모음에서 Amazon EKS를 지원하는 AWS 리전을 선택합니다.

  3. 스택 생성(Create stack), 새 리소스 사용(표준)(With new resources (standard))를 선택합니다.

  4. 템플릿 준비(Prepare template)에서 템플릿 준비 완료(Template is ready)가 선택되었는지 확인한 다음 템플릿 소스(Template source)에서 Amazon S3 URL을 선택합니다.

  5. Amazon S3 URL 아래의 텍스트 영역에 다음 URL을 붙여 넣고 다음(Next)을 선택합니다.

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-vpc-sample.yaml
  6. 세부 정보 지정(Specify Details) 페이지에서 파라미터를 입력하고 다음(Next)을 선택합니다.

    • 스택 이름(Stack name): AWS CloudFormation 스택에 대한 스택 이름을 선택합니다. 예를 들어 amazon-eks-vpc-sample라고 할 수 있습니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하며 100자 이하여야 합니다.

    • VpcBlock: VPC에 대한 CIDR 블록을 선택합니다. 배포하는 각 노드, 포드 및 로드 밸런서에는 이 블록의 IPv4 주소가 할당됩니다. 기본 IPv4 값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 및 서브넷 크기 조정을 참조하세요. 또한 생성된 VPC CIDR 블록을 추가할 수도 있습니다.

    • Subnet01Block: 서브넷 1에 대한 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다.

    • Subnet02Block: 서브넷 2에 대한 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다.

    • Subnet03Block: 서브넷 3에 대한 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다.

  7. (선택 사항) 옵션(Options) 페이지에서 스택 리소스에 태그를 지정합니다. 다음(Next)을 선택합니다.

  8. 검토(Review) 페이지에서 생성(Create)을 선택합니다.

  9. 스택이 생성된 후 콘솔에서 이를 선택하고 출력(Outputs)을 선택합니다.

  10. 생성된 VPC의 VpcId를 기록합니다. 이 값은 클러스터 및 노드를 생성할 때 필요합니다.

  11. 생성된 서브넷에 대한 SubnetIds를 기록합니다. 2개 이상의 이 값은 클러스터 및 노드를 생성할 때 필요합니다.

  12. (선택 사항) 이 VPC에 배포되는 모든 클러스터는 pods 및 services에 프라이빗 IPv4 주소를 할당할 수 있습니다. 이 VPC에 배포된 클러스터가 pods 및 services에 프라이빗 IPv6 주소를 할당하도록 하려면 VPC, 서브넷, 라우팅 테이블 및 보안 그룹을 업데이트해야 합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 IPv4에서 IPv6로 기존 VPC 마이그레이션을 참조하세요. Amazon EKS를 사용하려면 서브넷에 Auto-assign IPv6 주소 옵션이 사용 설정되어 있어야 합니다. 기본적으로 사용 중지되어 있습니다.

Only private subnets

이 VPC에는 AWS 리전의 다른 가용 영역에 배포되는 3개의 프라이빗 서브넷이 있습니다. 서브넷에 배포된 리소스는 인터넷에 액세스할 수 없으며, 인터넷도 서브넷의 리소스에 액세스할 수 없습니다. 템플릿은 노드가 일반적으로 액세스해야 하는 여러 AWS 서비스에 대해 AWS PrivateLink를 사용하여 VPC 엔드포인트를 생성합니다. 노드에 아웃바운드 인터넷 액세스가 필요한 경우 VPC가 생성되면 각 서브넷의 가용 영역에서 퍼블릭 NAT 게이트웨이를 추가할 수 있습니다. 서브넷에 배포된 리소스를 제외한 모든 인바운드 트래픽을 거부하는 보안 그룹이 생성됩니다. 보안 그룹은 모든 아웃바운드 트래픽을 허용합니다. 서브넷에는 Kubernetes가 내부 로드 밸런서를 배포할 수 있도록 태그가 지정됩니다. 이 구성을 사용하여 VPC 생성하는 경우 추가 요구 사항 및 고려 사항에 대한 프라이빗 클러스터 요구 사항를 참조하세요.

VPC 생성

  1. AWS CloudFormation 콘솔(https://console.aws.amazon.com/cloudformation)을 엽니다.

  2. 탐색 모음에서 Amazon EKS를 지원하는 AWS 리전을 선택합니다.

  3. 스택 생성(Create stack), 새 리소스 사용(표준)(With new resources (standard))를 선택합니다.

  4. 템플릿 준비(Prepare template)에서 템플릿 준비 완료(Template is ready)가 선택되었는지 확인한 다음 템플릿 소스(Template source)에서 Amazon S3 URL을 선택합니다.

  5. Amazon S3 URL 아래의 텍스트 영역에 다음 URL을 붙여 넣고 다음(Next)을 선택합니다.

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-fully-private-vpc.yaml
  6. 세부 정보 지정(Specify Details) 페이지에서 파라미터를 입력하고 다음(Next)을 선택합니다.

    • 스택 이름(Stack name): AWS CloudFormation 스택에 대한 스택 이름을 선택합니다. 예를 들어 amazon-eks-fully-private-vpc라고 할 수 있습니다. 이름에는 영숫자(대소문자 구분)와 하이픈만 사용할 수 있습니다. 영문자로 시작해야 하며 100자 이하여야 합니다.

    • VpcBlock: VPC에 대한 CIDR 블록을 선택합니다. 배포하는 각 노드, 포드 및 로드 밸런서에는 이 블록의 IPv4 주소가 할당됩니다. 기본 IPv4 값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 및 서브넷 크기 조정을 참조하세요. 또한 생성된 VPC CIDR 블록을 추가할 수도 있습니다.

    • PrivateSubnet01Block: 서브넷 1에 대한 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다.

    • PrivateSubnet02Block: 서브넷 2에 대한 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다.

    • PrivateSubnet03Block: 서브넷 3에 대한 CIDR 블록을 지정합니다. 기본값은 대부분의 구현에 충분한 IP 주소를 제공하지만 그렇지 않은 경우 변경할 수 있습니다.

  7. (선택 사항) 옵션(Options) 페이지에서 스택 리소스에 태그를 지정합니다. 다음(Next)을 선택합니다.

  8. 검토(Review) 페이지에서 생성(Create)을 선택합니다.

  9. 스택이 생성된 후 콘솔에서 이를 선택하고 출력(Outputs)을 선택합니다.

  10. 생성된 VPC의 VpcId를 기록합니다. 이 값은 클러스터 및 노드를 생성할 때 필요합니다.

  11. 생성된 서브넷에 대한 SubnetIds를 기록합니다. 2개 이상의 이 값은 클러스터 및 노드를 생성할 때 필요합니다.

  12. (선택 사항) 이 VPC에 배포되는 모든 클러스터는 pods 및 services에 프라이빗 IPv4 주소를 할당할 수 있습니다. 이 VPC에 배포된 클러스터가 pods 및 services에 프라이빗 IPv6 주소를 할당하도록 하려면 VPC, 서브넷, 라우팅 테이블 및 보안 그룹을 업데이트해야 합니다. 자세한 내용을 알아보려면 Amazon VPC 사용 설명서의 IPv4에서 IPv6로 기존 VPC 마이그레이션을 참조하세요. Amazon EKS를 사용하려면 서브넷에 Auto-assign IPv6 주소 옵션이 사용 설정되어 있어야 합니다(기본적으로 사용 중지되어 있음).