2.11.4.2. 기타 인프라 구성 요소

  • A VPC
  • DNS 항목
  • 로드 밸런서(클래식 또는 네트워크) 및 리스너
  • 공개 및 개인 Route 53 영역
  • 보안 그룹
  • IAM 역할
  • S3 버킷

연결이 끊긴 환경에서 작업하거나 프록시를 사용하는 경우 EC2 및 ELB 끝점의 공용 IP 주소에 연결할 수 없습니다. 이러한 끝점에 연결하려면 VPC 끝점을 생성하여 클러스터가 사용 중인 서브넷에 연결해야 합니다. 다음 끝점을 생성합니다.

  • ec2.<region>.amazonaws.com
  • elasticloadbalancing.<region>.amazonaws.com
  • s3.<region>.amazonaws.com

필수 VPC 구성 요소

시스템과의 통신을 허용하는 서브넷과 적합한 VPC를 제공해야 합니다.

구성 요소AWS 유형설명

VPC

  • AWS::EC2::VPC
  • AWS::EC2::VPCEndpoint

클러스터에서 사용할 공용 VPC를 제공해야 합니다. VPC는 각 서브넷의 라우팅 테이블을 참조하는 끝점을 사용하여 S3에서 호스팅되는 레지스트리와의 통신을 개선합니다.

퍼블릭 서브넷

  • AWS::EC2::Subnet
  • AWS::EC2::SubnetNetworkAclAssociation

VPC에는 1 ~ 3개의 가용성 영역에 대한 퍼블릭 서브넷이 있어야 하며 이 서브넷을 적절한 인그레스 규칙과 연결해야 합니다.

인터넷 게이트웨이

  • AWS::EC2::InternetGateway
  • AWS::EC2::VPCGatewayAttachment
  • AWS::EC2::RouteTable
  • AWS::EC2::Route
  • AWS::EC2::SubnetRouteTableAssociation
  • AWS::EC2::NatGateway
  • AWS::EC2::EIP

공용 경로가 있는 공용 인터넷 게이트웨이가 VPC에 연결되어 있어야 합니다. 제공된 템플릿에서 각 퍼블릭 서브넷에는 EIP 주소를 갖는 NAT 게이트웨이가 있습니다. 이러한 NAT 게이트웨이를 사용하면 프라이빗 서브넷 인스턴스와 같은 클러스터 리소스가 인터넷에 도달할 수 있으므로 일부 제한된 네트워크 또는 프록시 시나리오에는 필요하지 않습니다.

네트워크 액세스 제어

  • AWS::EC2::NetworkAcl
  • AWS::EC2::NetworkAclEntry

VPC가 다음 포트에 액세스할 수 있어야 합니다.

포트

이유

80

인바운드 HTTP 트래픽

443

인바운드 HTTPS 트래픽

22

인바운드 SSH 트래픽

1024 - 65535

인바운드 임시 트래픽

0 - 65535

아웃바운드 임시 트래픽

프라이빗 서브넷

  • AWS::EC2::Subnet
  • AWS::EC2::RouteTable
  • AWS::EC2::SubnetRouteTableAssociation

VPC에 프라이빗 서브넷이 포함될 수 있습니다. 제공된 CloudFormation 템플릿은 1 ~ 3개 가용성 영역의 프라이빗 서브넷을 생성할 수 있습니다. 프라이빗 서브넷을 사용하는 경우 적절한 경로와 테이블을 제공해야 합니다.

필수 DNS 및 로드 밸런싱 구성 요소

DNS 및 로드 밸런서 구성은 공개 호스팅 영역을 사용해야 하며 클러스터 인프라를 프로비저닝하는 경우 설치 프로그램이 사용하는 것과 유사한 개인 호스팅 영역을 사용할 수 있습니다. 로드 밸런서로 확인되는 DNS 항목을 생성해야 합니다. api.<cluster_name>.<domain>에 대한 항목은 외부 로드 밸런서를 가리켜야 하고 api-int.<cluster_name>.<domain>에 대한 항목은 내부 로드 밸런서를 가리켜야 합니다.

클러스터에는 또한 Kubernetes API 및 해당 확장에 필요한 포트 6443 및 새 시스템의 Ignition 구성 파일에 필요한 포트 22623용 로드 밸런서와 리스너가 필요합니다. 대상은 ​컨트롤 플레인 노드(마스터 노드라고도 함)입니다. 포트 6443은 클러스터 외부의 클라이언트와 클러스터 내부의 노드에서 모두 액세스할 수 있어야 합니다. 포트 22623은 클러스터 내부 노드에서 액세스할 수 있어야 합니다.

구성 요소AWS 유형설명

DNS

AWS::Route53::HostedZone

내부 DNS의 호스팅 영역입니다.

etcd 레코드 세트

AWS::Route53::RecordSet

컨트롤 플레인 시스템의 etcd 등록 레코드입니다.

공용 로드 밸런서

AWS::ElasticLoadBalancingV2::LoadBalancer

퍼블릭 서브넷의 로드 밸런서입니다.

외부 API 서버 레코드

AWS::Route53::RecordSetGroup

외부 API 서버의 별칭 레코드입니다.

외부 리스너

AWS::ElasticLoadBalancingV2::Listener

외부 로드 밸런서용 포트 6443의 리스너입니다.

외부 대상 그룹

AWS::ElasticLoadBalancingV2::TargetGroup

외부 로드 밸런서의 대상 그룹입니다.

프라이빗 로드 밸런서

AWS::ElasticLoadBalancingV2::LoadBalancer

프라이빗 서브넷의 로드 밸런서입니다.

내부 API 서버 레코드

AWS::Route53::RecordSetGroup

내부 API 서버의 별칭 레코드입니다.

내부 리스너

AWS::ElasticLoadBalancingV2::Listener

내부 로드 밸런서용 포트 22623의 리스너입니다.

내부 대상 그룹

AWS::ElasticLoadBalancingV2::TargetGroup

내부 로드 밸런서의 대상 그룹입니다.

내부 리스너

AWS::ElasticLoadBalancingV2::Listener

내부 로드 밸런서용 포트 6443의 리스너입니다.

내부 대상 그룹

AWS::ElasticLoadBalancingV2::TargetGroup

내부 로드 밸런서의 대상 그룹입니다.

보안 그룹

컨트롤 플레인 및 작업자 시스템에는 다음 포트에 대한 액세스 권한이 필요합니다.

그룹유형IP 프로토콜포트 범위

MasterSecurityGroup

AWS::EC2::SecurityGroup

icmp

0

tcp

22

tcp

6443

tcp

22623

WorkerSecurityGroup

AWS::EC2::SecurityGroup

icmp

0

tcp

22

BootstrapSecurityGroup

AWS::EC2::SecurityGroup

tcp

22

tcp

19531

컨트롤 플레인 인그레스

컨트롤 플레인 시스템에는 다음과 같은 인그레스 그룹이 필요합니다. 각 인그레스 그룹은 AWS::EC2::SecurityGroupIngress 리소스입니다.

인그레스 그룹설명IP 프로토콜포트 범위

MasterIngressEtcd

etcd

tcp

2379- 2380

MasterIngressVxlan

Vxlan 패킷

udp

4789

MasterIngressWorkerVxlan

Vxlan 패킷

udp

4789

MasterIngressInternal

내부 클러스터 통신 및 Kubernetes 프록시 메트릭

tcp

9000 - 9999

MasterIngressWorkerInternal

내부 클러스터 통신

tcp

9000 - 9999

MasterIngressKube

Kubernetes kubelet, 스케줄러 및 컨트롤러 관리자

tcp

10250 - 10259

MasterIngressWorkerKube

Kubernetes kubelet, 스케줄러 및 컨트롤러 관리자

tcp

10250 - 10259

MasterIngressIngressServices

Kubernetes 인그레스 서비스

tcp

30000 - 32767

MasterIngressWorkerIngressServices

Kubernetes 인그레스 서비스

tcp

30000 - 32767

MasterIngressGeneve

Geneve 패킷

udp

6081

MasterIngressWorkerGeneve

Geneve 패킷

udp

6081

MasterIngressIpsecIke

IPsec IKE 패킷

udp

500

MasterIngressWorkerIpsecIke

IPsec IKE 패킷

udp

500

MasterIngressIpsecNat

IPsec NAT-T 패킷

udp

4500

MasterIngressWorkerIpsecNat

IPsec NAT-T 패킷

udp

4500

MasterIngressIpsecEsp

IPsec ESP 패킷

50

모두

MasterIngressWorkerIpsecEsp

IPsec ESP 패킷

50

모두

MasterIngressInternalUDP

내부 클러스터 통신

udp

9000 - 9999

MasterIngressWorkerInternalUDP

내부 클러스터 통신

udp

9000 - 9999

MasterIngressIngressServicesUDP

Kubernetes 인그레스 서비스

udp

30000 - 32767

MasterIngressWorkerIngressServicesUDP

Kubernetes 인그레스 서비스

udp

30000 - 32767

작업자 인그레스

작업자 시스템에는 다음과 같은 인그레스 그룹이 필요합니다. 각 인그레스 그룹은 AWS::EC2::SecurityGroupIngress 리소스입니다.

인그레스 그룹설명IP 프로토콜포트 범위

WorkerIngressVxlan

Vxlan 패킷

udp

4789

WorkerIngressWorkerVxlan

Vxlan 패킷

udp

4789

WorkerIngressInternal

내부 클러스터 통신

tcp

9000 - 9999

WorkerIngressWorkerInternal

내부 클러스터 통신

tcp

9000 - 9999

WorkerIngressKube

Kubernetes kubelet, 스케줄러 및 컨트롤러 관리자

tcp

10250

WorkerIngressWorkerKube

Kubernetes kubelet, 스케줄러 및 컨트롤러 관리자

tcp

10250

WorkerIngressIngressServices

Kubernetes 인그레스 서비스

tcp

30000 - 32767

WorkerIngressWorkerIngressServices

Kubernetes 인그레스 서비스

tcp

30000 - 32767

WorkerIngressGeneve

Geneve 패킷

udp

6081

WorkerIngressMasterGeneve

Geneve 패킷

udp

6081

WorkerIngressIpsecIke

IPsec IKE 패킷

udp

500

WorkerIngressMasterIpsecIke

IPsec IKE 패킷

udp

500

WorkerIngressIpsecNat

IPsec NAT-T 패킷

udp

4500

WorkerIngressMasterIpsecNat

IPsec NAT-T 패킷

udp

4500

WorkerIngressIpsecEsp

IPsec ESP 패킷

50

모두

WorkerIngressMasterIpsecEsp

IPsec ESP 패킷

50

모두

WorkerIngressInternalUDP

내부 클러스터 통신

udp

9000 - 9999

WorkerIngressMasterInternalUDP

내부 클러스터 통신

udp

9000 - 9999

WorkerIngressIngressServicesUDP

Kubernetes 인그레스 서비스

udp

30000 - 32767

WorkerIngressMasterIngressServicesUDP

Kubernetes 인그레스 서비스

udp

30000 - 32767

역할 및 인스턴스 프로필

AWS에서 시스템 권한을 부여해야 합니다. 제공된 CloudFormation 템플릿은 다음 AWS::IAM::Role 오브젝트에 대한 허용 권한을 머신에 부여하며 각 역할 세트의 AWS::IAM::InstanceProfile을 제공합니다. 템플릿을 사용하지 않는 경우 다음과 같은 광범위한 권한 또는 다음과 같은 개별 권한을 시스템에 부여할 수 있습니다.

역할효과동작리소스 이름

Master

허용

ec2:*

*

허용

elasticloadbalancing:*

*

허용

iam:PassRole

*

허용

s3:GetObject

*

Worker

허용

ec2:Describe*

*

부트스트랩

허용

ec2:Describe*

*

허용

ec2:AttachVolume

*

허용

ec2:DetachVolume

*