Amazon EKS 클러스터용 Amazon VPC 생성하기

Amazon EKS 클러스터용 Amazon VPC 생성하기 (Create an Amazon VPC for your Amazon EKS cluster)

Amazon VPC(Amazon Virtual Private Cloud)를 사용해 정의한 가상 네트워크에 AWS 리소스를 시작할 수 있어요. 이 가상 네트워크는 자체 데이터 센터에서 운영하는 전통적인 네트워크와 매우 유사해요. 하지만 Amazon Web Services의 확장 가능한 인프라를 사용하는 이점이 함께 제공돼요. 프로덕션 Amazon EKS 클러스터를 배포하기 전에 Amazon VPC 서비스를 철저히 이해하는 것을 권장해요. 자세한 내용은 Amazon VPC 사용 설명서를 참고하세요.

Amazon EKS 클러스터, 노드, Kubernetes 리소스는 VPC에 배포돼요. Amazon EKS와 함께 기존 VPC를 사용하려면 해당 VPC가 VPC 및 서브넷에 대한 Amazon EKS 네트워킹 요구사항 보기에서 설명하는 요구사항을 충족해야 해요. 이 주제는 Amazon EKS가 제공하는 AWS CloudFormation 템플릿을 사용해 Amazon EKS 요구사항을 충족하는 VPC를 만드는 방법을 설명해요. 템플릿을 배포한 후 템플릿이 만든 리소스를 확인해 정확히 어떤 리소스를 만들었는지와 그 리소스의 구성을 알 수 있어요. 하이브리드 노드를 사용한다면 VPC의 라우팅 테이블에 온프레미스 네트워크에 대한 경로가 있어야 해요. 하이브리드 노드의 네트워크 요구사항에 대한 자세한 내용은 하이브리드 노드용 네트워킹 준비하기를 참고하세요.

출처: 문서

본문

사전 요구 사항 (Prerequisites)

Amazon EKS용 VPC를 만들려면 Amazon VPC 리소스를 만들 수 있는 필요한 IAM 권한이 있어야 해요. 이러한 리소스는 VPC, 서브넷, 보안 그룹, 라우팅 테이블과 라우트, 인터넷 및 NAT 게이트웨이예요. 자세한 내용은 Amazon VPC 사용 설명서의 공용 서브넷이 있는 VPC 생성하기 예시 정책과 서비스 권한 부여 참조의 전체 Actions 목록을 참고하세요.

공용 및 프라이빗 서브넷, 공용 서브넷만, 또는 프라이빗 서브넷만 있는 VPC를 만들 수 있어요.

공용 및 프라이빗 서브넷 (Public and private subnets)

이 VPC에는 공용 서브넷 2개와 프라이빗 서브넷 2개가 있어요. 공용 서브넷의 연결된 라우팅 테이블은 인터넷 게이트웨이로 가는 경로가 있어요. 하지만 프라이빗 서브넷의 라우팅 테이블에는 인터넷 게이트웨이로 가는 경로가 없어요. 공용 서브넷 하나와 프라이빗 서브넷 하나가 같은 가용 영역에 배포돼요. 다른 공용 및 프라이빗 서브넷은 같은 AWS 리전의 두 번째 가용 영역에 배포돼요. 대부분의 배포에서 이 옵션을 권장해요.

이 옵션을 사용하면 노드를 프라이빗 서브넷에 배포할 수 있어요. 이 옵션은 Kubernetes가 공용 서브넷에 로드 밸런서를 배포할 수 있게 해주며, 이 로드 밸런서는 프라이빗 서브넷의 노드에서 실행되는 Pod로 트래픽을 로드 밸런싱할 수 있어요. 공용 서브넷에 배포된 노드에는 공용 IPv4 주소가 자동으로 할당되지만, 프라이빗 서브넷에 배포된 노드에는 공용 IPv4 주소가 할당되지 않아요.

공용 및 프라이빗 서브넷의 노드에 IPv6 주소를 할당할 수도 있어요. 프라이빗 서브넷의 노드는 클러스터 및 다른 AWS 서비스와 통신할 수 있어요. Pod는 각 가용 영역에 배포된 IPv4 주소를 사용하는 NAT 게이트웨이나 IPv6 주소를 사용하는 outbound-only 인터넷 게이트웨이를 통해 인터넷과 통신할 수 있어요. 클러스터나 노드 이외의 소스에서 들어오는 모든 인바운드 트래픽을 거부하고 모든 아웃바운드 트래픽을 허용하는 규칙이 있는 보안 그룹이 배포돼요. 서브넷은 Kubernetes가 로드 밸런서를 배포할 수 있도록 태그가 지정돼요.

  1. AWS 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 또는 IPv4와 IPv6를 지원하는 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
    

    IPv4 및 IPv6:

    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자를 초과할 수 없어요. 이름은 클러스터를 만드는 AWS 리전과 AWS 계정 내에서 고유해야 해요.
    • VpcBlock: VPC의 IPv4 CIDR 범위를 선택합니다. 배포하는 각 노드, Pod, 로드 밸런서에는 이 블록에서 IPv4 주소가 할당돼요. 기본 IPv4 값은 대부분의 구현에 충분한 IP 주소를 제공하지만, 부족하다면 변경할 수 있어요. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 및 서브넷 크기 조정을 참고하세요. VPC가 만들어지면 추가 CIDR 블록을 추가할 수도 있어요. IPv6 VPC를 만든다면 Amazon의 Global Unicast Address 공간에서 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를 만들었다면 템플릿이 만든 공용 서브넷에 대해 auto-assign IPv6 address 옵션을 활성화해야 해요. 프라이빗 서브넷에는 해당 설정이 이미 활성화되어 있어요. 설정을 활성화하려면 다음 단계를 완료하세요.

    1. https://console.aws.amazon.com/vpc/ 에서 Amazon VPC 콘솔을 엽니다.
    2. 왼쪽 탐색 창에서 Subnets를 선택합니다.
    3. 공용 서브넷 하나(stack-name/SubnetPublic01 또는 stack-name/SubnetPublic02, public이라는 단어 포함)를 선택하고 Actions, Edit subnet settings를 선택합니다.
    4. Enable auto-assign IPv6 address 확인란을 선택한 다음 Save를 선택합니다.
    5. 다른 공용 서브넷에 대해 이전 단계를 다시 완료합니다.

공용 서브넷만 (Only public subnets)

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

  1. AWS 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자를 초과할 수 없어요. 이름은 클러스터를 만드는 AWS 리전과 AWS 계정 내에서 고유해야 해요.
    • VpcBlock: VPC의 CIDR 블록을 선택합니다. 배포하는 각 노드, Pod, 로드 밸런서에는 이 블록에서 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에 배포하는 모든 클러스터는 Pod와 서비스에 프라이빗 IPv4 주소를 할당할 수 있어요. 이 VPC에 배포하는 클러스터가 Pod와 서비스에 프라이빗 IPv6 주소를 할당하도록 하려면 VPC, 서브넷, 라우팅 테이블, 보안 그룹을 업데이트해요. 자세한 내용은 Amazon VPC 사용 설명서의 기존 VPC를 IPv4에서 IPv6로 마이그레이션하기를 참고하세요. Amazon EKS는 서브넷에 Auto-assign IPv6 addresses 옵션이 활성화되어 있어야 해요. 기본적으로 비활성화돼 있어요.

프라이빗 서브넷만 (Only private subnets)

이 VPC에는 AWS 리전의 서로 다른 가용 영역에 배포된 프라이빗 서브넷 3개가 있어요. 서브넷에 배포된 리소스는 인터넷에 접근할 수 없으며, 인터넷도 서브넷의 리소스에 접근할 수 없어요. 템플릿은 노드가 일반적으로 접근해야 하는 여러 AWS 서비스에 대해 AWS PrivateLink를 사용하는 VPC 엔드포인트를 만들어요. 노드에 아웃바운드 인터넷 접근이 필요하다면 VPC가 만들어진 후 각 서브넷의 가용 영역에 공용 NAT 게이트웨이를 추가할 수 있어요. 서브넷에 배포된 리소스 이외의 소스에서 들어오는 모든 인바운드 트래픽을 거부하는 보안 그룹이 만들어져요. 또한 모든 아웃바운드 트래픽을 허용하는 보안 그룹도 있어요. 서브넷은 Kubernetes가 내부 로드 밸런서를 배포할 수 있도록 태그가 지정돼요. 이 구성으로 VPC를 만든다면 추가 요구사항과 고려 사항에 대해 제한된 인터넷 접근으로 프라이빗 클러스터 배포하기를 참고하세요.

  1. AWS 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자를 초과할 수 없어요. 이름은 클러스터를 만드는 AWS 리전과 AWS 계정 내에서 고유해야 해요.
    • VpcBlock: VPC의 CIDR 블록을 선택합니다. 배포하는 각 노드, Pod, 로드 밸런서에는 이 블록에서 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에 배포하는 모든 클러스터는 Pod와 서비스에 프라이빗 IPv4 주소를 할당할 수 있어요. 이 VPC에 배포하는 클러스터가 Pod와 서비스에 프라이빗 IPv6 주소를 할당하도록 하려면 VPC, 서브넷, 라우팅 테이블, 보안 그룹을 업데이트해요. 자세한 내용은 Amazon VPC 사용 설명서의 기존 VPC를 IPv4에서 IPv6로 마이그레이션하기를 참고하세요. Amazon EKS는 서브넷에 Auto-assign IPv6 addresses 옵션이 활성화되어 있어야 해요(기본적으로 비활성화).

더 알아보기 (Learn more)